From: Luca Boccassi Date: Fri, 28 Aug 2020 13:17:31 +0000 (+0100) Subject: test-50-dissect: move minimal image setup to common setup function X-Git-Tag: v248-rc1~162^2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9785c44dd83a44c2231316f912b4adf768a09f20;p=thirdparty%2Fsystemd.git test-50-dissect: move minimal image setup to common setup function So that it can be re-used for other tests by simply setting TEST_INSTALL_VERITY_MINIMAL=1 in test.sh, without having to replicate the setup commands. --- diff --git a/test/TEST-50-DISSECT/test.sh b/test/TEST-50-DISSECT/test.sh index c9e4faf5cbd..2ff81bf4fa9 100755 --- a/test/TEST-50-DISSECT/test.sh +++ b/test/TEST-50-DISSECT/test.sh @@ -5,11 +5,10 @@ set -e TEST_DESCRIPTION="test systemd-dissect" IMAGE_NAME="dissect" TEST_NO_NSPAWN=1 +TEST_INSTALL_VERITY_MINIMAL=1 . $TEST_BASE_DIR/test-functions -command -v mksquashfs >/dev/null 2>&1 || exit 0 -command -v veritysetup >/dev/null 2>&1 || exit 0 command -v sfdisk >/dev/null 2>&1 || exit 0 # Need loop devices for systemd-dissect @@ -21,23 +20,7 @@ test_append_files() { install_dmevent generate_module_dependencies inst_binary losetup - - BASICTOOLS=( - bash - cat - mount - ) - oldinitdir=$initdir - export initdir=$TESTDIR/minimal - mkdir -p $initdir/usr/lib $initdir/etc - setup_basic_dirs - install_basic_tools - cp $os_release $initdir/usr/lib/os-release - ln -s ../usr/lib/os-release $initdir/etc/os-release - echo MARKER=1 >> $initdir/usr/lib/os-release - mksquashfs $initdir $oldinitdir/usr/share/minimal.raw - veritysetup format $oldinitdir/usr/share/minimal.raw $oldinitdir/usr/share/minimal.verity | grep '^Root hash:' | cut -f2 | tr -d '\n' > $oldinitdir/usr/share/minimal.roothash - export initdir=$oldinitdir + install_verity_minimal ) } diff --git a/test/test-functions b/test/test-functions index 44696aff3b7..612a693e8a7 100644 --- a/test/test-functions +++ b/test/test-functions @@ -462,6 +462,53 @@ run_nspawn() { return 0 } +# Build two very minimal root images, with two units, one is the same and one is different across them +install_verity_minimal() { + if [ -e $initdir/usr/share/minimal.raw ]; then + return + fi + if ! command -v mksquashfs >/dev/null 2>&1; then + dfatal "mksquashfs not found" + exit 1 + fi + if ! command -v veritysetup >/dev/null 2>&1; then + dfatal "veritysetup not found" + exit 1 + fi + ( + BASICTOOLS=( + bash + cat + mount + sleep + ) + oldinitdir=$initdir + rm -rfv $TESTDIR/minimal + export initdir=$TESTDIR/minimal + mkdir -p $initdir/usr/lib/systemd/system $initdir/etc + setup_basic_dirs + install_basic_tools + cp $os_release $initdir/usr/lib/os-release + ln -s ../usr/lib/os-release $initdir/etc/os-release + touch $initdir/etc/machine-id $initdir/etc/resolv.conf + echo MARKER=1 >> $initdir/usr/lib/os-release + echo -e "[Service]\nExecStartPre=cat /usr/lib/os-release\nExecStart=sleep 120" > $initdir/usr/lib/systemd/system/app0.service + cp $initdir/usr/lib/systemd/system/app0.service $initdir/usr/lib/systemd/system/app0-foo.service + + mksquashfs $initdir $oldinitdir/usr/share/minimal_0.raw + veritysetup format $oldinitdir/usr/share/minimal_0.raw $oldinitdir/usr/share/minimal_0.verity | \ + grep '^Root hash:' | cut -f2 | tr -d '\n' > $oldinitdir/usr/share/minimal_0.roothash + + sed -i "s/MARKER=1/MARKER=2/g" $initdir/usr/lib/os-release + rm $initdir/usr/lib/systemd/system/app0-foo.service + cp $initdir/usr/lib/systemd/system/app0.service $initdir/usr/lib/systemd/system/app0-bar.service + + mksquashfs $initdir $oldinitdir/usr/share/minimal_1.raw + veritysetup format $oldinitdir/usr/share/minimal_1.raw $oldinitdir/usr/share/minimal_1.verity | \ + grep '^Root hash:' | cut -f2 | tr -d '\n' > $oldinitdir/usr/share/minimal_1.roothash + ) +} + setup_basic_environment() { # create the basic filesystem layout setup_basic_dirs @@ -492,6 +539,9 @@ setup_basic_environment() { if [[ "$IS_BUILT_WITH_ASAN" = "yes" ]]; then create_asan_wrapper fi + if [ -n "$TEST_INSTALL_VERITY_MINIMAL" ]; then + install_verity_minimal + fi } setup_selinux() { diff --git a/test/units/testsuite-50.sh b/test/units/testsuite-50.sh index 783dfbf50e8..1dd4b5dbd1c 100755 --- a/test/units/testsuite-50.sh +++ b/test/units/testsuite-50.sh @@ -24,8 +24,8 @@ fi trap cleanup EXIT -cp /usr/share/minimal.* "${image_dir}/" -image="${image_dir}/minimal" +cp /usr/share/minimal* "${image_dir}/" +image="${image_dir}/minimal_0" roothash="$(cat ${image}.roothash)" os_release=$(test -e /etc/os-release && echo /etc/os-release || echo /usr/lib/os-release)