From a97c054dac8f3e734df2b0fe48e60ef1cbb329e4 Mon Sep 17 00:00:00 2001 From: William Manley Date: Tue, 7 Mar 2017 12:57:26 +0000 Subject: [PATCH] Tests: test-no-initramfs: Test both legacy and new kernel locations --- tests/test-no-initramfs.sh | 90 ++++++++++++++++++++++++-------------- 1 file changed, 58 insertions(+), 32 deletions(-) diff --git a/tests/test-no-initramfs.sh b/tests/test-no-initramfs.sh index dcd21ee1c8..7c23a3e754 100755 --- a/tests/test-no-initramfs.sh +++ b/tests/test-no-initramfs.sh @@ -2,7 +2,7 @@ . $(dirname $0)/libtest.sh -echo "1..3" +echo "1..7" setup_os_repository "archive-z2" "uboot" @@ -17,36 +17,62 @@ assert_not_file_has_content sysroot/boot/loader/entries/ostree-testos-0.conf 'in echo "ok deployment with initramfs" -cd ${test_tmpdir}/osdata/boot -rm -f initramfs* vmlinuz* -echo "the kernel only" > vmlinuz-3.6.0 -bootcsum=$(cat vmlinuz-3.6.0 | sha256sum | cut -f 1 -d ' ') -mv vmlinuz-3.6.0 vmlinuz-3.6.0-${bootcsum} -cd - -${CMD_PREFIX} ostree --repo=${test_tmpdir}/testos-repo commit --tree=dir=osdata/ -b testos/buildmaster/x86_64-runtime -${CMD_PREFIX} ostree pull testos:testos/buildmaster/x86_64-runtime -${CMD_PREFIX} ostree admin deploy --os=testos --karg=root=/dev/sda2 --karg=rootwait testos:testos/buildmaster/x86_64-runtime -assert_file_has_content sysroot/boot/loader/entries/ostree-testos-0.conf 'rootwait' -assert_file_has_content sysroot/boot/loader/entries/ostree-testos-0.conf 'init=' -assert_not_file_has_content sysroot/boot/loader/entries/ostree-testos-0.conf 'initrd' - -echo "ok switching to bootdir with no initramfs" - -cd ${test_tmpdir}/osdata/boot -rm -f initramfs* vmlinuz* -echo "the kernel" > vmlinuz-3.6.0 -echo "initramfs to assist the kernel" > initramfs-3.6.0 -bootcsum=$(cat vmlinuz-3.6.0 initramfs-3.6.0 | sha256sum | cut -f 1 -d ' ') -mv vmlinuz-3.6.0 vmlinuz-3.6.0-${bootcsum} -mv initramfs-3.6.0 initramfs-3.6.0-${bootcsum} -cd - -${CMD_PREFIX} ostree --repo=${test_tmpdir}/testos-repo commit --tree=dir=osdata/ -b testos/buildmaster/x86_64-runtime -${CMD_PREFIX} ostree pull testos:testos/buildmaster/x86_64-runtime -${CMD_PREFIX} ostree admin deploy --os=testos --karg-none --karg=root=LABEL=rootfs testos:testos/buildmaster/x86_64-runtime -assert_file_has_content sysroot/boot/loader/entries/ostree-testos-0.conf 'initrd' -assert_file_has_content sysroot/boot/loader/entries/ostree-testos-0.conf 'root=LABEL=rootfs' -assert_not_file_has_content sysroot/boot/loader/entries/ostree-testos-0.conf 'rootwait' -assert_not_file_has_content sysroot/boot/loader/entries/ostree-testos-0.conf 'init=' +pull_test_tree() { + kernel_contents=$1 + initramfs_contents=$2 + + printf "TEST SETUP:\n kernel: %s\n initramfs: %s\n layout: %s\n" \ + "$kernel_contents" "$initramfs_contents" "$layout" + + rm -rf ${test_tmpdir}/osdata/usr/lib/modules/3.6.0/{initramfs.img,vmlinuz} \ + ${test_tmpdir}/osdata/usr/lib/ostree-boot \ + ${test_tmpdir}/osdata/boot + if [ "$layout" = "/usr/lib/modules" ]; then + # Fedora compatible layout + cd ${test_tmpdir}/osdata/usr/lib/modules/3.6.0 + echo -n "$kernel_contents" > vmlinuz + [ -n "$initramfs_contents" ] && echo -n "$initramfs_contents" > initramfs.img + elif [ "$layout" = "/usr/lib/ostree-boot" ] || [ "$layout" = "/boot" ]; then + # "Legacy" layout + mkdir -p "${test_tmpdir}/osdata/$layout" + cd "${test_tmpdir}/osdata/$layout" + bootcsum=$(echo -n "$kernel_contents$initramfs_contents" \ + | sha256sum | cut -f 1 -d ' ') + echo -n "$kernel_contents" > vmlinuz-${bootcsum} + [ -n "$initramfs_contents" ] && echo -n "$initramfs_contents" > initramfs-${bootcsum} + else + exit 1 + fi + cd - + ${CMD_PREFIX} ostree --repo=${test_tmpdir}/testos-repo commit --tree=dir=osdata/ -b testos/buildmaster/x86_64-runtime + ${CMD_PREFIX} ostree pull testos:testos/buildmaster/x86_64-runtime +} + +get_key_from_bootloader_conf() { + conffile=$1 + key=$2 + + assert_file_has_content "$conffile" "^$key" + awk "/^$key/ { print \$2 }" "$conffile" +} + +for layout in /usr/lib/modules /usr/lib/ostree-boot /boot; +do + pull_test_tree "the kernel only" + ${CMD_PREFIX} ostree admin deploy --os=testos --karg=root=/dev/sda2 --karg=rootwait testos:testos/buildmaster/x86_64-runtime + assert_file_has_content sysroot/boot/loader/entries/ostree-testos-0.conf 'rootwait' + assert_file_has_content sysroot/boot/loader/entries/ostree-testos-0.conf 'init=' + assert_not_file_has_content sysroot/boot/loader/entries/ostree-testos-0.conf 'initrd' + + echo "ok switching to bootdir with no initramfs layout=$layout" -echo "ok switching from no initramfs to initramfs enabled sysroot" + pull_test_tree "the kernel" "initramfs to assist the kernel" + ${CMD_PREFIX} ostree admin deploy --os=testos --karg-none --karg=root=LABEL=rootfs testos:testos/buildmaster/x86_64-runtime + assert_file_has_content sysroot/boot/loader/entries/ostree-testos-0.conf 'initrd' + assert_file_has_content sysroot/boot/$(get_key_from_bootloader_conf sysroot/boot/loader/entries/ostree-testos-0.conf "initrd") "initramfs to assist the kernel" + assert_file_has_content sysroot/boot/loader/entries/ostree-testos-0.conf 'root=LABEL=rootfs' + assert_not_file_has_content sysroot/boot/loader/entries/ostree-testos-0.conf 'rootwait' + assert_not_file_has_content sysroot/boot/loader/entries/ostree-testos-0.conf 'init=' + echo "ok switching from no initramfs to initramfs enabled sysroot layout=$layout" +done