From 1ebcf47296647d3586ebd5bccc53270561e879fb Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Fri, 5 Mar 2021 18:36:04 +0900 Subject: test: merge udev tests --- test/TEST-17-UDEV-WANTS/Makefile | 1 - test/TEST-17-UDEV-WANTS/test.sh | 9 -- test/TEST-17-UDEV/Makefile | 1 + test/TEST-17-UDEV/test.sh | 17 ++++ test/TEST-29-PORTABLE/Makefile | 1 + test/TEST-29-PORTABLE/test.sh | 27 ++++++ test/TEST-29-UDEV-ID_RENAMING/Makefile | 1 - test/TEST-29-UDEV-ID_RENAMING/test.sh | 17 ---- test/TEST-49-RUNTIME-BIND-PATHS/Makefile | 1 + test/TEST-49-RUNTIME-BIND-PATHS/test.sh | 7 ++ test/TEST-49-UDEV-EVENT-TIMEOUT/Makefile | 1 - test/TEST-49-UDEV-EVENT-TIMEOUT/test.sh | 8 -- test/TEST-55-OOMD/Makefile | 1 + test/TEST-55-OOMD/test.sh | 48 +++++++++++ test/TEST-55-UDEV-TAGS/Makefile | 1 - test/TEST-55-UDEV-TAGS/test.sh | 8 -- test/TEST-56-OOMD/Makefile | 1 - test/TEST-56-OOMD/test.sh | 48 ----------- test/TEST-57-RUNTIME-BIND-PATHS/Makefile | 1 - test/TEST-57-RUNTIME-BIND-PATHS/test.sh | 7 -- test/TEST-58-PORTABLE/Makefile | 1 - test/TEST-58-PORTABLE/test.sh | 27 ------ test/units/testsuite-17.01.sh | 72 ++++++++++++++++ test/units/testsuite-17.02.sh | 57 +++++++++++++ test/units/testsuite-17.03.sh | 45 ++++++++++ test/units/testsuite-17.04.sh | 64 ++++++++++++++ test/units/testsuite-17.service | 2 +- test/units/testsuite-17.sh | 75 ++--------------- test/units/testsuite-29.service | 2 +- test/units/testsuite-29.sh | 87 ++++++++++--------- test/units/testsuite-49-namespaced.service | 12 +++ test/units/testsuite-49-non-namespaced.service | 5 ++ test/units/testsuite-49.service | 3 +- test/units/testsuite-49.sh | 56 ++++++------- test/units/testsuite-55-slowgrowth.sh | 34 ++++++++ test/units/testsuite-55-testbloat.service | 9 ++ test/units/testsuite-55-testchill.service | 6 ++ test/units/testsuite-55-testmunch.service | 7 ++ test/units/testsuite-55-workload.slice | 10 +++ test/units/testsuite-55.service | 4 +- test/units/testsuite-55.sh | 112 ++++++++++++++----------- test/units/testsuite-56-slowgrowth.sh | 34 -------- test/units/testsuite-56-testbloat.service | 9 -- test/units/testsuite-56-testchill.service | 6 -- test/units/testsuite-56-testmunch.service | 7 -- test/units/testsuite-56-workload.slice | 10 --- test/units/testsuite-56.service | 7 -- test/units/testsuite-56.sh | 76 ----------------- test/units/testsuite-57-namespaced.service | 12 --- test/units/testsuite-57-non-namespaced.service | 5 -- test/units/testsuite-57.service | 7 -- test/units/testsuite-57.sh | 43 ---------- test/units/testsuite-58.service | 7 -- test/units/testsuite-58.sh | 68 --------------- 54 files changed, 572 insertions(+), 615 deletions(-) delete mode 120000 test/TEST-17-UDEV-WANTS/Makefile delete mode 100755 test/TEST-17-UDEV-WANTS/test.sh create mode 120000 test/TEST-17-UDEV/Makefile create mode 100755 test/TEST-17-UDEV/test.sh create mode 120000 test/TEST-29-PORTABLE/Makefile create mode 100755 test/TEST-29-PORTABLE/test.sh delete mode 120000 test/TEST-29-UDEV-ID_RENAMING/Makefile delete mode 100755 test/TEST-29-UDEV-ID_RENAMING/test.sh create mode 120000 test/TEST-49-RUNTIME-BIND-PATHS/Makefile create mode 100755 test/TEST-49-RUNTIME-BIND-PATHS/test.sh delete mode 120000 test/TEST-49-UDEV-EVENT-TIMEOUT/Makefile delete mode 100755 test/TEST-49-UDEV-EVENT-TIMEOUT/test.sh create mode 120000 test/TEST-55-OOMD/Makefile create mode 100755 test/TEST-55-OOMD/test.sh delete mode 120000 test/TEST-55-UDEV-TAGS/Makefile delete mode 100755 test/TEST-55-UDEV-TAGS/test.sh delete mode 120000 test/TEST-56-OOMD/Makefile delete mode 100755 test/TEST-56-OOMD/test.sh delete mode 120000 test/TEST-57-RUNTIME-BIND-PATHS/Makefile delete mode 100755 test/TEST-57-RUNTIME-BIND-PATHS/test.sh delete mode 120000 test/TEST-58-PORTABLE/Makefile delete mode 100755 test/TEST-58-PORTABLE/test.sh create mode 100755 test/units/testsuite-17.01.sh create mode 100755 test/units/testsuite-17.02.sh create mode 100755 test/units/testsuite-17.03.sh create mode 100755 test/units/testsuite-17.04.sh create mode 100644 test/units/testsuite-49-namespaced.service create mode 100644 test/units/testsuite-49-non-namespaced.service create mode 100755 test/units/testsuite-55-slowgrowth.sh create mode 100644 test/units/testsuite-55-testbloat.service create mode 100644 test/units/testsuite-55-testchill.service create mode 100644 test/units/testsuite-55-testmunch.service create mode 100644 test/units/testsuite-55-workload.slice delete mode 100755 test/units/testsuite-56-slowgrowth.sh delete mode 100644 test/units/testsuite-56-testbloat.service delete mode 100644 test/units/testsuite-56-testchill.service delete mode 100644 test/units/testsuite-56-testmunch.service delete mode 100644 test/units/testsuite-56-workload.slice delete mode 100644 test/units/testsuite-56.service delete mode 100755 test/units/testsuite-56.sh delete mode 100644 test/units/testsuite-57-namespaced.service delete mode 100644 test/units/testsuite-57-non-namespaced.service delete mode 100644 test/units/testsuite-57.service delete mode 100755 test/units/testsuite-57.sh delete mode 100644 test/units/testsuite-58.service delete mode 100755 test/units/testsuite-58.sh (limited to 'test') diff --git a/test/TEST-17-UDEV-WANTS/Makefile b/test/TEST-17-UDEV-WANTS/Makefile deleted file mode 120000 index e9f93b1104..0000000000 --- a/test/TEST-17-UDEV-WANTS/Makefile +++ /dev/null @@ -1 +0,0 @@ -../TEST-01-BASIC/Makefile \ No newline at end of file diff --git a/test/TEST-17-UDEV-WANTS/test.sh b/test/TEST-17-UDEV-WANTS/test.sh deleted file mode 100755 index 5b8f22cbaa..0000000000 --- a/test/TEST-17-UDEV-WANTS/test.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env bash -set -e -TEST_DESCRIPTION="UDEV SYSTEMD_WANTS property" -TEST_NO_NSPAWN=1 - -. $TEST_BASE_DIR/test-functions -QEMU_TIMEOUT=300 - -do_test "$@" 17 diff --git a/test/TEST-17-UDEV/Makefile b/test/TEST-17-UDEV/Makefile new file mode 120000 index 0000000000..e9f93b1104 --- /dev/null +++ b/test/TEST-17-UDEV/Makefile @@ -0,0 +1 @@ +../TEST-01-BASIC/Makefile \ No newline at end of file diff --git a/test/TEST-17-UDEV/test.sh b/test/TEST-17-UDEV/test.sh new file mode 100755 index 0000000000..b13ae0aa78 --- /dev/null +++ b/test/TEST-17-UDEV/test.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash +set -e +TEST_DESCRIPTION="UDEV" +IMAGE_NAME="udev" +TEST_NO_NSPAWN=1 + +. $TEST_BASE_DIR/test-functions +QEMU_TIMEOUT=500 + +test_append_files() { + ( + instmods dummy + generate_module_dependencies + ) +} + +do_test "$@" 17 diff --git a/test/TEST-29-PORTABLE/Makefile b/test/TEST-29-PORTABLE/Makefile new file mode 120000 index 0000000000..e9f93b1104 --- /dev/null +++ b/test/TEST-29-PORTABLE/Makefile @@ -0,0 +1 @@ +../TEST-01-BASIC/Makefile \ No newline at end of file diff --git a/test/TEST-29-PORTABLE/test.sh b/test/TEST-29-PORTABLE/test.sh new file mode 100755 index 0000000000..801e74c13d --- /dev/null +++ b/test/TEST-29-PORTABLE/test.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env bash +# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- +# ex: ts=8 sw=4 sts=4 et filetype=sh +set -e +TEST_DESCRIPTION="test systemd-portabled" +IMAGE_NAME="portabled" +TEST_NO_NSPAWN=1 +TEST_INSTALL_VERITY_MINIMAL=1 + +. $TEST_BASE_DIR/test-functions + +# Need loop devices for mounting images +test_append_files() { + ( + instmods loop =block + instmods squashfs =squashfs + instmods dm_verity =md + install_dmevent + generate_module_dependencies + inst_binary losetup + inst_binary mksquashfs + inst_binary unsquashfs + install_verity_minimal + ) +} + +do_test "$@" 29 diff --git a/test/TEST-29-UDEV-ID_RENAMING/Makefile b/test/TEST-29-UDEV-ID_RENAMING/Makefile deleted file mode 120000 index e9f93b1104..0000000000 --- a/test/TEST-29-UDEV-ID_RENAMING/Makefile +++ /dev/null @@ -1 +0,0 @@ -../TEST-01-BASIC/Makefile \ No newline at end of file diff --git a/test/TEST-29-UDEV-ID_RENAMING/test.sh b/test/TEST-29-UDEV-ID_RENAMING/test.sh deleted file mode 100755 index c918e5af6a..0000000000 --- a/test/TEST-29-UDEV-ID_RENAMING/test.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env bash -set -e -TEST_DESCRIPTION="UDEV ID_RENAMING property" -IMAGE_NAME="udev-id-renaming" -TEST_NO_NSPAWN=1 - -. $TEST_BASE_DIR/test-functions -QEMU_TIMEOUT=300 - -test_append_files() { - ( - instmods dummy - generate_module_dependencies - ) -} - -do_test "$@" 29 diff --git a/test/TEST-49-RUNTIME-BIND-PATHS/Makefile b/test/TEST-49-RUNTIME-BIND-PATHS/Makefile new file mode 120000 index 0000000000..e9f93b1104 --- /dev/null +++ b/test/TEST-49-RUNTIME-BIND-PATHS/Makefile @@ -0,0 +1 @@ +../TEST-01-BASIC/Makefile \ No newline at end of file diff --git a/test/TEST-49-RUNTIME-BIND-PATHS/test.sh b/test/TEST-49-RUNTIME-BIND-PATHS/test.sh new file mode 100755 index 0000000000..ff24a4f254 --- /dev/null +++ b/test/TEST-49-RUNTIME-BIND-PATHS/test.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +set -e + +TEST_DESCRIPTION="test adding new BindPaths while unit is already running" +. $TEST_BASE_DIR/test-functions + +do_test "$@" 49 diff --git a/test/TEST-49-UDEV-EVENT-TIMEOUT/Makefile b/test/TEST-49-UDEV-EVENT-TIMEOUT/Makefile deleted file mode 120000 index e9f93b1104..0000000000 --- a/test/TEST-49-UDEV-EVENT-TIMEOUT/Makefile +++ /dev/null @@ -1 +0,0 @@ -../TEST-01-BASIC/Makefile \ No newline at end of file diff --git a/test/TEST-49-UDEV-EVENT-TIMEOUT/test.sh b/test/TEST-49-UDEV-EVENT-TIMEOUT/test.sh deleted file mode 100755 index 249d8a22ae..0000000000 --- a/test/TEST-49-UDEV-EVENT-TIMEOUT/test.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash -set -e - -TEST_DESCRIPTION="test udev's event-timeout and timeout-signal options" -TEST_NO_NSPAWN=1 -. $TEST_BASE_DIR/test-functions - -do_test "$@" 49 diff --git a/test/TEST-55-OOMD/Makefile b/test/TEST-55-OOMD/Makefile new file mode 120000 index 0000000000..e9f93b1104 --- /dev/null +++ b/test/TEST-55-OOMD/Makefile @@ -0,0 +1 @@ +../TEST-01-BASIC/Makefile \ No newline at end of file diff --git a/test/TEST-55-OOMD/test.sh b/test/TEST-55-OOMD/test.sh new file mode 100755 index 0000000000..121aa8d56e --- /dev/null +++ b/test/TEST-55-OOMD/test.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env bash +set -e +TEST_DESCRIPTION="systemd-oomd Memory Pressure Test" + +. $TEST_BASE_DIR/test-functions + +check_result_nspawn() { + local ret=1 + local journald_report="" + local pids="" + [[ -e $1/testok ]] && ret=0 + if [[ -e $1/skipped ]]; then + echo "TEST-56-OOMD was skipped:" + cat $1/skipped + ret=0 + fi + [[ -f $1/failed ]] && cp -a $1/failed $TESTDIR + save_journal $1/var/log/journal + [[ -f $TESTDIR/failed ]] && cat $TESTDIR/failed + echo $JOURNAL_LIST + test -s $TESTDIR/failed && ret=$(($ret+1)) + [ -n "$TIMED_OUT" ] && ret=$(($ret+1)) + check_asan_reports "$1" || ret=$(($ret+1)) + _umount_dir $initdir + return $ret +} + +check_result_qemu() { + local ret=1 + mount_initdir + [[ -e $initdir/testok ]] && ret=0 + if [[ -e $initdir/skipped ]]; then + echo "TEST-56-OOMD was skipped:" + cat $initdir/skipped + ret=0 + fi + [[ -f $initdir/failed ]] && cp -a $initdir/failed $TESTDIR + save_journal $initdir/var/log/journal + check_asan_reports "$initdir" || ret=$(($ret+1)) + _umount_dir $initdir + [[ -f $TESTDIR/failed ]] && cat $TESTDIR/failed + echo $JOURNAL_LIST + test -s $TESTDIR/failed && ret=$(($ret+1)) + [ -n "$TIMED_OUT" ] && ret=$(($ret+1)) + return $ret +} + +do_test "$@" 55 diff --git a/test/TEST-55-UDEV-TAGS/Makefile b/test/TEST-55-UDEV-TAGS/Makefile deleted file mode 120000 index e9f93b1104..0000000000 --- a/test/TEST-55-UDEV-TAGS/Makefile +++ /dev/null @@ -1 +0,0 @@ -../TEST-01-BASIC/Makefile \ No newline at end of file diff --git a/test/TEST-55-UDEV-TAGS/test.sh b/test/TEST-55-UDEV-TAGS/test.sh deleted file mode 100755 index 325d70f011..0000000000 --- a/test/TEST-55-UDEV-TAGS/test.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash -set -e -TEST_DESCRIPTION="UDEV tags management" -TEST_NO_NSPAWN=1 - -. $TEST_BASE_DIR/test-functions - -do_test "$@" 55 diff --git a/test/TEST-56-OOMD/Makefile b/test/TEST-56-OOMD/Makefile deleted file mode 120000 index e9f93b1104..0000000000 --- a/test/TEST-56-OOMD/Makefile +++ /dev/null @@ -1 +0,0 @@ -../TEST-01-BASIC/Makefile \ No newline at end of file diff --git a/test/TEST-56-OOMD/test.sh b/test/TEST-56-OOMD/test.sh deleted file mode 100755 index 55b0d1dafd..0000000000 --- a/test/TEST-56-OOMD/test.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env bash -set -e -TEST_DESCRIPTION="systemd-oomd Memory Pressure Test" - -. $TEST_BASE_DIR/test-functions - -check_result_nspawn() { - local ret=1 - local journald_report="" - local pids="" - [[ -e $1/testok ]] && ret=0 - if [[ -e $1/skipped ]]; then - echo "TEST-56-OOMD was skipped:" - cat $1/skipped - ret=0 - fi - [[ -f $1/failed ]] && cp -a $1/failed $TESTDIR - save_journal $1/var/log/journal - [[ -f $TESTDIR/failed ]] && cat $TESTDIR/failed - echo $JOURNAL_LIST - test -s $TESTDIR/failed && ret=$(($ret+1)) - [ -n "$TIMED_OUT" ] && ret=$(($ret+1)) - check_asan_reports "$1" || ret=$(($ret+1)) - _umount_dir $initdir - return $ret -} - -check_result_qemu() { - local ret=1 - mount_initdir - [[ -e $initdir/testok ]] && ret=0 - if [[ -e $initdir/skipped ]]; then - echo "TEST-56-OOMD was skipped:" - cat $initdir/skipped - ret=0 - fi - [[ -f $initdir/failed ]] && cp -a $initdir/failed $TESTDIR - save_journal $initdir/var/log/journal - check_asan_reports "$initdir" || ret=$(($ret+1)) - _umount_dir $initdir - [[ -f $TESTDIR/failed ]] && cat $TESTDIR/failed - echo $JOURNAL_LIST - test -s $TESTDIR/failed && ret=$(($ret+1)) - [ -n "$TIMED_OUT" ] && ret=$(($ret+1)) - return $ret -} - -do_test "$@" 56 diff --git a/test/TEST-57-RUNTIME-BIND-PATHS/Makefile b/test/TEST-57-RUNTIME-BIND-PATHS/Makefile deleted file mode 120000 index e9f93b1104..0000000000 --- a/test/TEST-57-RUNTIME-BIND-PATHS/Makefile +++ /dev/null @@ -1 +0,0 @@ -../TEST-01-BASIC/Makefile \ No newline at end of file diff --git a/test/TEST-57-RUNTIME-BIND-PATHS/test.sh b/test/TEST-57-RUNTIME-BIND-PATHS/test.sh deleted file mode 100755 index 76d1b496ad..0000000000 --- a/test/TEST-57-RUNTIME-BIND-PATHS/test.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env bash -set -e - -TEST_DESCRIPTION="test adding new BindPaths while unit is already running" -. $TEST_BASE_DIR/test-functions - -do_test "$@" 57 diff --git a/test/TEST-58-PORTABLE/Makefile b/test/TEST-58-PORTABLE/Makefile deleted file mode 120000 index e9f93b1104..0000000000 --- a/test/TEST-58-PORTABLE/Makefile +++ /dev/null @@ -1 +0,0 @@ -../TEST-01-BASIC/Makefile \ No newline at end of file diff --git a/test/TEST-58-PORTABLE/test.sh b/test/TEST-58-PORTABLE/test.sh deleted file mode 100755 index 98e697962e..0000000000 --- a/test/TEST-58-PORTABLE/test.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env bash -# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- -# ex: ts=8 sw=4 sts=4 et filetype=sh -set -e -TEST_DESCRIPTION="test systemd-portabled" -IMAGE_NAME="portabled" -TEST_NO_NSPAWN=1 -TEST_INSTALL_VERITY_MINIMAL=1 - -. $TEST_BASE_DIR/test-functions - -# Need loop devices for mounting images -test_append_files() { - ( - instmods loop =block - instmods squashfs =squashfs - instmods dm_verity =md - install_dmevent - generate_module_dependencies - inst_binary losetup - inst_binary mksquashfs - inst_binary unsquashfs - install_verity_minimal - ) -} - -do_test "$@" 58 diff --git a/test/units/testsuite-17.01.sh b/test/units/testsuite-17.01.sh new file mode 100755 index 0000000000..573ad41079 --- /dev/null +++ b/test/units/testsuite-17.01.sh @@ -0,0 +1,72 @@ +#!/usr/bin/env bash +set -ex +set -o pipefail + +mkdir -p /run/udev/rules.d/ + +rm -f /run/udev/rules.d/50-testsuite.rules +udevadm control --reload +udevadm trigger /dev/sda + +while : ; do + ( + udevadm info /dev/sda | grep -q -v SYSTEMD_WANTS=foobar.service + udevadm info /dev/sda | grep -q -v SYSTEMD_WANTS=waldo.service + systemctl show -p WantedBy foobar.service | grep -q -v sda + systemctl show -p WantedBy waldo.service | grep -q -v sda + ) && break + + sleep .5 +done + +cat > /run/udev/rules.d/50-testsuite.rules < /run/udev/rules.d/50-testsuite.rules < /run/udev/rules.d/50-testsuite.rules < "${test_rule}" + echo "event_timeout=30" >> /etc/udev/udev.conf + echo "timeout_signal=SIGABRT" >> /etc/udev/udev.conf + + systemctl restart systemd-udevd.service +} + +teardown() { + set +e + + mv -f /etc/udev/udev.conf.bckp /etc/udev/udev.conf + rm -f "$test_rule" + systemctl restart systemd-udevd.service +} + +run_test() { + since="$(date +%T)" + + echo add > /sys/class/net/lo/uevent + + for n in {1..20}; do + sleep 5 + if coredumpctl --since "$since" --no-legend --no-pager | grep /bin/udevadm ; then + return 0 + fi + done + + return 1 +} + +trap teardown EXIT + +setup +run_test + +exit 0 diff --git a/test/units/testsuite-17.04.sh b/test/units/testsuite-17.04.sh new file mode 100755 index 0000000000..c799936c0a --- /dev/null +++ b/test/units/testsuite-17.04.sh @@ -0,0 +1,64 @@ +#!/bin/bash +set -ex +set -o pipefail + +mkdir -p /run/udev/rules.d/ + +! test -f /run/udev/tags/added/c1:3 && + ! test -f /run/udev/tags/changed/c1:3 && + udevadm info /dev/null | grep -q -v 'E: TAGS=.*:added:.*' && + udevadm info /dev/null | grep -q -v 'E: CURRENT_TAGS=.*:added:.*' && + udevadm info /dev/null | grep -q -v 'E: TAGS=.*:changed:.*' && + udevadm info /dev/null | grep -q -v 'E: CURRENT_TAGS=.*:changed:.*' + +cat > /run/udev/rules.d/50-testsuite.rules </failed -while : ; do - ( - udevadm info /dev/sda | grep -q -v SYSTEMD_WANTS=foobar.service - udevadm info /dev/sda | grep -q -v SYSTEMD_WANTS=waldo.service - systemctl show -p WantedBy foobar.service | grep -q -v sda - systemctl show -p WantedBy waldo.service | grep -q -v sda - ) && break - - sleep .5 -done - -cat > /run/udev/rules.d/50-testsuite.rules < /run/udev/rules.d/50-testsuite.rules </testok - -exit 0 +touch /testok +rm /failed diff --git a/test/units/testsuite-29.service b/test/units/testsuite-29.service index 90c2187bd7..900b99f77b 100644 --- a/test/units/testsuite-29.service +++ b/test/units/testsuite-29.service @@ -1,5 +1,5 @@ [Unit] -Description=TEST-29-UDEV-ID_RENAMING +Description=TEST-29-PORTABLE [Service] ExecStartPre=rm -f /failed /testok diff --git a/test/units/testsuite-29.sh b/test/units/testsuite-29.sh index 5c62556895..b5b05b42d9 100755 --- a/test/units/testsuite-29.sh +++ b/test/units/testsuite-29.sh @@ -1,58 +1,67 @@ #!/usr/bin/env bash +# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- +# ex: ts=8 sw=4 sts=4 et filetype=sh set -ex set -o pipefail -mkdir -p /run/udev/rules.d/ +export SYSTEMD_LOG_LEVEL=debug -cat > /run/udev/rules.d/50-testsuite.rules < /testok diff --git a/test/units/testsuite-49-namespaced.service b/test/units/testsuite-49-namespaced.service new file mode 100644 index 0000000000..722dbe246d --- /dev/null +++ b/test/units/testsuite-49-namespaced.service @@ -0,0 +1,12 @@ +[Service] +RuntimeMaxSec=300 +# Adding a new mounts at runtime works if the unit is in the active state, +# so use Type=notify to make sure there's no race condition in the test +Type=notify +RemainAfterExit=yes +MountAPIVFS=yes +PrivateTmp=yes +BindPaths=/run/testservice-49-fixed:/tmp/testfile_fixed +InaccessiblePaths=/run/inaccessible +ExecStartPre=grep -q -F MARKER_FIXED /tmp/testfile_fixed +ExecStart=/bin/sh -c 'systemd-notify --ready; while ! grep -q -F MARKER_RUNTIME /tmp/testfile_runtime; do sleep 0.1; done; test ! -f /run/inaccessible/testfile_fixed' diff --git a/test/units/testsuite-49-non-namespaced.service b/test/units/testsuite-49-non-namespaced.service new file mode 100644 index 0000000000..e86c64d125 --- /dev/null +++ b/test/units/testsuite-49-non-namespaced.service @@ -0,0 +1,5 @@ +[Service] +RuntimeMaxSec=10 +Type=notify +RemainAfterExit=yes +ExecStart=/bin/sh -c 'systemd-notify --ready; while ! grep -q -F MARKER_RUNTIME /tmp/testfile_runtime; do sleep 0.1; done; exit 0' diff --git a/test/units/testsuite-49.service b/test/units/testsuite-49.service index f47177106f..9475109ca2 100644 --- a/test/units/testsuite-49.service +++ b/test/units/testsuite-49.service @@ -1,6 +1,7 @@ [Unit] -Description=TEST-49-UDEV-EVENT-TIMEOUT +Description=TEST-49-RUNTIME-BIND-PATHS [Service] +ExecStartPre=rm -f /failed /testok ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh Type=oneshot diff --git a/test/units/testsuite-49.sh b/test/units/testsuite-49.sh index ffa9801644..07bb20d99c 100755 --- a/test/units/testsuite-49.sh +++ b/test/units/testsuite-49.sh @@ -1,46 +1,42 @@ #!/usr/bin/env bash - set -ex -test_rule="/run/udev/rules.d/49-test.rules" +echo "MARKER_FIXED" > /run/testservice-49-fixed +mkdir -p /run/inaccessible -setup() { - mkdir -p "${test_rule%/*}" - cp -f /etc/udev/udev.conf /etc/udev/udev.conf.bckp - echo 'KERNEL=="lo", SUBSYSTEM=="net", PROGRAM=="/bin/sleep 60"' > "${test_rule}" - echo "event_timeout=30" >> /etc/udev/udev.conf - echo "timeout_signal=SIGABRT" >> /etc/udev/udev.conf +systemctl start testsuite-49-namespaced.service - systemctl restart systemd-udevd.service -} +# Ensure that inaccessible paths aren't bypassed by the runtime setup +set +e +systemctl bind --mkdir testsuite-49-namespaced.service /run/testservice-49-fixed /run/inaccessible/testfile_fixed && exit 1 +set -e -teardown() { - set +e +echo "MARKER_RUNTIME" > /run/testservice-49-runtime - mv -f /etc/udev/udev.conf.bckp /etc/udev/udev.conf - rm -f "$test_rule" - systemctl restart systemd-udevd.service -} +systemctl bind --mkdir testsuite-49-namespaced.service /run/testservice-49-runtime /tmp/testfile_runtime -run_test() { - since="$(date +%T)" +while systemctl show -P SubState testsuite-49-namespaced.service | grep -q running +do + sleep 0.1 +done - echo add > /sys/class/net/lo/uevent +systemctl is-active testsuite-49-namespaced.service - for n in {1..20}; do - sleep 5 - if coredumpctl --since "$since" --no-legend --no-pager | grep /bin/udevadm ; then - return 0 - fi - done +# Now test that systemctl bind fails when attempted on a non-namespaced unit +systemctl start testsuite-49-non-namespaced.service - return 1 -} +set +e +systemctl bind --mkdir testsuite-49-non-namespaced.service /run/testservice-49-runtime /tmp/testfile_runtime && exit 1 +set -e -trap teardown EXIT +while systemctl show -P SubState testsuite-49-non-namespaced.service | grep -q running +do + sleep 0.1 +done -setup -run_test +set +e +systemctl is-active testsuite-49-non-namespaced.service && exit 1 +set -e echo OK > /testok diff --git a/test/units/testsuite-55-slowgrowth.sh b/test/units/testsuite-55-slowgrowth.sh new file mode 100755 index 0000000000..ff5a747348 --- /dev/null +++ b/test/units/testsuite-55-slowgrowth.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash +set -eu -o pipefail + +PAGE_SIZE=$(getconf PAGE_SIZE) +BLOAT_ITERATION_TARGET=$(( 100 << 20 )) # 100 MB +BLOAT_HOLDER=() +PID="$$" + +function bloat { + local set_size=$(cat "/proc/$PID/statm" | cut -d " " -f2) + local mem_usage=$(( "$set_size" * "$PAGE_SIZE" )) + local target_mem_size=$(( "$mem_usage" + "$1" )) + + BLOAT_HOLDER=() + while [[ "$mem_usage" -lt "$target_mem_size" ]]; do + echo "target $target_mem_size" + echo "mem usage $mem_usage" + BLOAT_HOLDER+=( $(printf "%0.sg" {1..1000000}) ) + set_size=$(cat "/proc/$PID/statm" | cut -d " " -f2) + mem_usage=$(( "$set_size" * "$PAGE_SIZE" )) + done +} + +function run { + local arr=() + + while [[ true ]]; do + bloat "$BLOAT_ITERATION_TARGET" + arr+=( "$BLOAT_HOLDER" ) + sleep 1 + done +} + +run diff --git a/test/units/testsuite-55-testbloat.service b/test/units/testsuite-55-testbloat.service new file mode 100644 index 0000000000..7aa794b9f9 --- /dev/null +++ b/test/units/testsuite-55-testbloat.service @@ -0,0 +1,9 @@ +[Unit] +Description=Create a lot of memory pressure + +[Service] +# A VERY small memory.high will cause the script (trying to use a lot of memory) +# to throttle and be put under heavy pressure. +MemoryHigh=1M +Slice=testsuite-55-workload.slice +ExecStart=/usr/lib/systemd/tests/testdata/units/testsuite-55-slowgrowth.sh diff --git a/test/units/testsuite-55-testchill.service b/test/units/testsuite-55-testchill.service new file mode 100644 index 0000000000..aca6bc4ab9 --- /dev/null +++ b/test/units/testsuite-55-testchill.service @@ -0,0 +1,6 @@ +[Unit] +Description=No memory pressure + +[Service] +Slice=testsuite-55-workload.slice +ExecStart=sleep infinity diff --git a/test/units/testsuite-55-testmunch.service b/test/units/testsuite-55-testmunch.service new file mode 100644 index 0000000000..457e4a587a --- /dev/null +++ b/test/units/testsuite-55-testmunch.service @@ -0,0 +1,7 @@ +[Unit] +Description=Create some memory pressure + +[Service] +MemoryHigh=2M +Slice=testsuite-55-workload.slice +ExecStart=/usr/lib/systemd/tests/testdata/units/testsuite-55-slowgrowth.sh diff --git a/test/units/testsuite-55-workload.slice b/test/units/testsuite-55-workload.slice new file mode 100644 index 0000000000..8c32b28094 --- /dev/null +++ b/test/units/testsuite-55-workload.slice @@ -0,0 +1,10 @@ +[Unit] +Description=Test slice for memory pressure kills + +[Slice] +CPUAccounting=true +MemoryAccounting=true +IOAccounting=true +TasksAccounting=true +ManagedOOMMemoryPressure=kill +ManagedOOMMemoryPressureLimit=1% diff --git a/test/units/testsuite-55.service b/test/units/testsuite-55.service index 2127a4db7f..592e9d5bec 100644 --- a/test/units/testsuite-55.service +++ b/test/units/testsuite-55.service @@ -1,7 +1,7 @@ [Unit] -Description=TESTSUITE-55-UDEV-TAGS +Description=TESTSUITE-55-OOMD [Service] -ExecStartPre=rm -f /failed /testok +ExecStartPre=rm -f /failed /skipped /testok ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh Type=oneshot diff --git a/test/units/testsuite-55.sh b/test/units/testsuite-55.sh index ffceefb6a5..f7896ada42 100755 --- a/test/units/testsuite-55.sh +++ b/test/units/testsuite-55.sh @@ -1,66 +1,76 @@ -#!/bin/bash +#!/usr/bin/env bash set -ex set -o pipefail -mkdir -p /run/udev/rules.d/ - -! test -f /run/udev/tags/added/c1:3 && - ! test -f /run/udev/tags/changed/c1:3 && - udevadm info /dev/null | grep -q -v 'E: TAGS=.*:added:.*' && - udevadm info /dev/null | grep -q -v 'E: CURRENT_TAGS=.*:added:.*' && - udevadm info /dev/null | grep -q -v 'E: TAGS=.*:changed:.*' && - udevadm info /dev/null | grep -q -v 'E: CURRENT_TAGS=.*:changed:.*' - -cat > /run/udev/rules.d/50-testsuite.rules <> /skipped +cgroup_type=$(stat -fc %T /sys/fs/cgroup/) +if [[ "$cgroup_type" != *"cgroup2"* ]] && [[ "$cgroup_type" != *"0x63677270"* ]]; then + echo "no cgroup2" >> /skipped +fi +if [ ! -f /usr/lib/systemd/systemd-oomd ] && [ ! -f /lib/systemd/systemd-oomd ]; then + echo "no oomd" >> /skipped +fi +[[ -e /skipped ]] && exit 0 || true -udevadm control --reload -udevadm trigger -c change /dev/null +rm -rf /etc/systemd/system/testsuite-55-testbloat.service.d -while : ; do - test -f /run/udev/tags/added/c1:3 && - test -f /run/udev/tags/changed/c1:3 && - udevadm info /dev/null | grep -q 'E: TAGS=.*:added:.*' && - udevadm info /dev/null | grep -q -v 'E: CURRENT_TAGS=.*:added:.*' && - udevadm info /dev/null | grep -q 'E: TAGS=.*:changed:.*' && - udevadm info /dev/null | grep -q 'E: CURRENT_TAGS=.*:changed:.*' && - break +echo "DefaultMemoryPressureDurationSec=5s" >> /etc/systemd/oomd.conf - sleep .5 -done +systemctl start testsuite-55-testchill.service +systemctl start testsuite-55-testbloat.service -udevadm control --reload -udevadm trigger -c add /dev/null +# Verify systemd-oomd is monitoring the expected units +oomctl | grep "/testsuite-55-workload.slice" +oomctl | grep "1.00%" +oomctl | grep "Default Memory Pressure Duration: 5s" -while : ; do - test -f /run/udev/tags/added/c1:3 && - test -f /run/udev/tags/changed/c1:3 && - udevadm info /dev/null | grep -q 'E: TAGS=.*:added:.*' && - udevadm info /dev/null | grep -q 'E: CURRENT_TAGS=.*:added:.*' && - udevadm info /dev/null | grep -q 'E: TAGS=.*:changed:.*' && - udevadm info /dev/null | grep -q -v 'E: CURRENT_TAGS=.*:changed:.*' && +# systemd-oomd watches for elevated pressure for 5 seconds before acting. +# It can take time to build up pressure so either wait 2 minutes or for the service to fail. +timeout=$(date -ud "2 minutes" +%s) +while [[ $(date -u +%s) -le $timeout ]]; do + if ! systemctl status testsuite-55-testbloat.service; then break - - sleep .5 + fi + sleep 5 done +# testbloat should be killed and testchill should be fine +if systemctl status testsuite-55-testbloat.service; then exit 42; fi +if ! systemctl status testsuite-55-testchill.service; then exit 24; fi + +# only run this portion of the test if we can set xattrs +if setfattr -n user.xattr_test -v 1 /sys/fs/cgroup/; then + sleep 120 # wait for systemd-oomd kill cool down and elevated memory pressure to come down + + mkdir -p /etc/systemd/system/testsuite-55-testbloat.service.d/ + echo "[Service]" > /etc/systemd/system/testsuite-55-testbloat.service.d/override.conf + echo "ManagedOOMPreference=avoid" >> /etc/systemd/system/testsuite-55-testbloat.service.d/override.conf + + systemctl daemon-reload + systemctl start testsuite-55-testchill.service + systemctl start testsuite-55-testmunch.service + systemctl start testsuite-55-testbloat.service + + timeout=$(date -ud "2 minutes" +%s) + while [[ $(date -u +%s) -le $timeout ]]; do + if ! systemctl status testsuite-55-testmunch.service; then + break + fi + sleep 5 + done + + # testmunch should be killed since testbloat had the avoid xattr on it + if ! systemctl status testsuite-55-testbloat.service; then exit 25; fi + if systemctl status testsuite-55-testmunch.service; then exit 43; fi + if ! systemctl status testsuite-55-testchill.service; then exit 24; fi +fi + +systemd-analyze log-level info + echo OK > /testok exit 0 diff --git a/test/units/testsuite-56-slowgrowth.sh b/test/units/testsuite-56-slowgrowth.sh deleted file mode 100755 index ff5a747348..0000000000 --- a/test/units/testsuite-56-slowgrowth.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/env bash -set -eu -o pipefail - -PAGE_SIZE=$(getconf PAGE_SIZE) -BLOAT_ITERATION_TARGET=$(( 100 << 20 )) # 100 MB -BLOAT_HOLDER=() -PID="$$" - -function bloat { - local set_size=$(cat "/proc/$PID/statm" | cut -d " " -f2) - local mem_usage=$(( "$set_size" * "$PAGE_SIZE" )) - local target_mem_size=$(( "$mem_usage" + "$1" )) - - BLOAT_HOLDER=() - while [[ "$mem_usage" -lt "$target_mem_size" ]]; do - echo "target $target_mem_size" - echo "mem usage $mem_usage" - BLOAT_HOLDER+=( $(printf "%0.sg" {1..1000000}) ) - set_size=$(cat "/proc/$PID/statm" | cut -d " " -f2) - mem_usage=$(( "$set_size" * "$PAGE_SIZE" )) - done -} - -function run { - local arr=() - - while [[ true ]]; do - bloat "$BLOAT_ITERATION_TARGET" - arr+=( "$BLOAT_HOLDER" ) - sleep 1 - done -} - -run diff --git a/test/units/testsuite-56-testbloat.service b/test/units/testsuite-56-testbloat.service deleted file mode 100644 index 6163aae1db..0000000000 --- a/test/units/testsuite-56-testbloat.service +++ /dev/null @@ -1,9 +0,0 @@ -[Unit] -Description=Create a lot of memory pressure - -[Service] -# A VERY small memory.high will cause the script (trying to use a lot of memory) -# to throttle and be put under heavy pressure. -MemoryHigh=1M -Slice=testsuite-56-workload.slice -ExecStart=/usr/lib/systemd/tests/testdata/units/testsuite-56-slowgrowth.sh diff --git a/test/units/testsuite-56-testchill.service b/test/units/testsuite-56-testchill.service deleted file mode 100644 index 6cae3d852a..0000000000 --- a/test/units/testsuite-56-testchill.service +++ /dev/null @@ -1,6 +0,0 @@ -[Unit] -Description=No memory pressure - -[Service] -Slice=testsuite-56-workload.slice -ExecStart=sleep infinity diff --git a/test/units/testsuite-56-testmunch.service b/test/units/testsuite-56-testmunch.service deleted file mode 100644 index b4b925a7af..0000000000 --- a/test/units/testsuite-56-testmunch.service +++ /dev/null @@ -1,7 +0,0 @@ -[Unit] -Description=Create some memory pressure - -[Service] -MemoryHigh=2M -Slice=testsuite-56-workload.slice -ExecStart=/usr/lib/systemd/tests/testdata/units/testsuite-56-slowgrowth.sh diff --git a/test/units/testsuite-56-workload.slice b/test/units/testsuite-56-workload.slice deleted file mode 100644 index 8c32b28094..0000000000 --- a/test/units/testsuite-56-workload.slice +++ /dev/null @@ -1,10 +0,0 @@ -[Unit] -Description=Test slice for memory pressure kills - -[Slice] -CPUAccounting=true -MemoryAccounting=true -IOAccounting=true -TasksAccounting=true -ManagedOOMMemoryPressure=kill -ManagedOOMMemoryPressureLimit=1% diff --git a/test/units/testsuite-56.service b/test/units/testsuite-56.service deleted file mode 100644 index b53b0905db..0000000000 --- a/test/units/testsuite-56.service +++ /dev/null @@ -1,7 +0,0 @@ -[Unit] -Description=TESTSUITE-56-OOMD - -[Service] -ExecStartPre=rm -f /failed /skipped /testok -ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh -Type=oneshot diff --git a/test/units/testsuite-56.sh b/test/units/testsuite-56.sh deleted file mode 100755 index 6835802eb8..0000000000 --- a/test/units/testsuite-56.sh +++ /dev/null @@ -1,76 +0,0 @@ -#!/usr/bin/env bash -set -ex -set -o pipefail - -systemd-analyze log-level debug -systemd-analyze log-target console - -# Loose checks to ensure the environment has the necessary features for systemd-oomd -[[ -e /proc/pressure ]] || echo "no PSI" >> /skipped -cgroup_type=$(stat -fc %T /sys/fs/cgroup/) -if [[ "$cgroup_type" != *"cgroup2"* ]] && [[ "$cgroup_type" != *"0x63677270"* ]]; then - echo "no cgroup2" >> /skipped -fi -if [ ! -f /usr/lib/systemd/systemd-oomd ] && [ ! -f /lib/systemd/systemd-oomd ]; then - echo "no oomd" >> /skipped -fi -[[ -e /skipped ]] && exit 0 || true - -rm -rf /etc/systemd/system/testsuite-56-testbloat.service.d - -echo "DefaultMemoryPressureDurationSec=5s" >> /etc/systemd/oomd.conf - -systemctl start testsuite-56-testchill.service -systemctl start testsuite-56-testbloat.service - -# Verify systemd-oomd is monitoring the expected units -oomctl | grep "/testsuite-56-workload.slice" -oomctl | grep "1.00%" -oomctl | grep "Default Memory Pressure Duration: 5s" - -# systemd-oomd watches for elevated pressure for 5 seconds before acting. -# It can take time to build up pressure so either wait 2 minutes or for the service to fail. -timeout=$(date -ud "2 minutes" +%s) -while [[ $(date -u +%s) -le $timeout ]]; do - if ! systemctl status testsuite-56-testbloat.service; then - break - fi - sleep 5 -done - -# testbloat should be killed and testchill should be fine -if systemctl status testsuite-56-testbloat.service; then exit 42; fi -if ! systemctl status testsuite-56-testchill.service; then exit 24; fi - -# only run this portion of the test if we can set xattrs -if setfattr -n user.xattr_test -v 1 /sys/fs/cgroup/; then - sleep 120 # wait for systemd-oomd kill cool down and elevated memory pressure to come down - - mkdir -p /etc/systemd/system/testsuite-56-testbloat.service.d/ - echo "[Service]" > /etc/systemd/system/testsuite-56-testbloat.service.d/override.conf - echo "ManagedOOMPreference=avoid" >> /etc/systemd/system/testsuite-56-testbloat.service.d/override.conf - - systemctl daemon-reload - systemctl start testsuite-56-testchill.service - systemctl start testsuite-56-testmunch.service - systemctl start testsuite-56-testbloat.service - - timeout=$(date -ud "2 minutes" +%s) - while [[ $(date -u +%s) -le $timeout ]]; do - if ! systemctl status testsuite-56-testmunch.service; then - break - fi - sleep 5 - done - - # testmunch should be killed since testbloat had the avoid xattr on it - if ! systemctl status testsuite-56-testbloat.service; then exit 25; fi - if systemctl status testsuite-56-testmunch.service; then exit 43; fi - if ! systemctl status testsuite-56-testchill.service; then exit 24; fi -fi - -systemd-analyze log-level info - -echo OK > /testok - -exit 0 diff --git a/test/units/testsuite-57-namespaced.service b/test/units/testsuite-57-namespaced.service deleted file mode 100644 index 0abcc4faf4..0000000000 --- a/test/units/testsuite-57-namespaced.service +++ /dev/null @@ -1,12 +0,0 @@ -[Service] -RuntimeMaxSec=300 -# Adding a new mounts at runtime works if the unit is in the active state, -# so use Type=notify to make sure there's no race condition in the test -Type=notify -RemainAfterExit=yes -MountAPIVFS=yes -PrivateTmp=yes -BindPaths=/run/testservice-57-fixed:/tmp/testfile_fixed -InaccessiblePaths=/run/inaccessible -ExecStartPre=grep -q -F MARKER_FIXED /tmp/testfile_fixed -ExecStart=/bin/sh -c 'systemd-notify --ready; while ! grep -q -F MARKER_RUNTIME /tmp/testfile_runtime; do sleep 0.1; done; test ! -f /run/inaccessible/testfile_fixed' diff --git a/test/units/testsuite-57-non-namespaced.service b/test/units/testsuite-57-non-namespaced.service deleted file mode 100644 index e86c64d125..0000000000 --- a/test/units/testsuite-57-non-namespaced.service +++ /dev/null @@ -1,5 +0,0 @@ -[Service] -RuntimeMaxSec=10 -Type=notify -RemainAfterExit=yes -ExecStart=/bin/sh -c 'systemd-notify --ready; while ! grep -q -F MARKER_RUNTIME /tmp/testfile_runtime; do sleep 0.1; done; exit 0' diff --git a/test/units/testsuite-57.service b/test/units/testsuite-57.service deleted file mode 100644 index b6edd862da..0000000000 --- a/test/units/testsuite-57.service +++ /dev/null @@ -1,7 +0,0 @@ -[Unit] -Description=TEST-57-RUNTIME-BIND-PATHS - -[Service] -ExecStartPre=rm -f /failed /testok -ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh -Type=oneshot diff --git a/test/units/testsuite-57.sh b/test/units/testsuite-57.sh deleted file mode 100755 index c24cf325c2..0000000000 --- a/test/units/testsuite-57.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/env bash -set -ex - -echo "MARKER_FIXED" > /run/testservice-57-fixed -mkdir -p /run/inaccessible - -systemctl start testsuite-57-namespaced.service - -# Ensure that inaccessible paths aren't bypassed by the runtime setup -set +e -systemctl bind --mkdir testsuite-57-namespaced.service /run/testservice-57-fixed /run/inaccessible/testfile_fixed && exit 1 -set -e - -echo "MARKER_RUNTIME" > /run/testservice-57-runtime - -systemctl bind --mkdir testsuite-57-namespaced.service /run/testservice-57-runtime /tmp/testfile_runtime - -while systemctl show -P SubState testsuite-57-namespaced.service | grep -q running -do - sleep 0.1 -done - -systemctl is-active testsuite-57-namespaced.service - -# Now test that systemctl bind fails when attempted on a non-namespaced unit -systemctl start testsuite-57-non-namespaced.service - -set +e -systemctl bind --mkdir testsuite-57-non-namespaced.service /run/testservice-57-runtime /tmp/testfile_runtime && exit 1 -set -e - -while systemctl show -P SubState testsuite-57-non-namespaced.service | grep -q running -do - sleep 0.1 -done - -set +e -systemctl is-active testsuite-57-non-namespaced.service && exit 1 -set -e - -echo OK > /testok - -exit 0 diff --git a/test/units/testsuite-58.service b/test/units/testsuite-58.service deleted file mode 100644 index 47deba7d53..0000000000 --- a/test/units/testsuite-58.service +++ /dev/null @@ -1,7 +0,0 @@ -[Unit] -Description=TEST-58-PORTABLE - -[Service] -ExecStartPre=rm -f /failed /testok -ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh -Type=oneshot diff --git a/test/units/testsuite-58.sh b/test/units/testsuite-58.sh deleted file mode 100755 index b5b05b42d9..0000000000 --- a/test/units/testsuite-58.sh +++ /dev/null @@ -1,68 +0,0 @@ -#!/usr/bin/env bash -# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- -# ex: ts=8 sw=4 sts=4 et filetype=sh -set -ex -set -o pipefail - -export SYSTEMD_LOG_LEVEL=debug - -portablectl attach --now --runtime /usr/share/minimal_0.raw app0 - -systemctl is-active app0.service -systemctl is-active app0-foo.service -set +o pipefail -set +e -systemctl is-active app0-bar.service && exit 1 -set -e -set -o pipefail - -portablectl reattach --now --runtime /usr/share/minimal_1.raw app0 - -systemctl is-active app0.service -systemctl is-active app0-bar.service -set +o pipefail -set +e -systemctl is-active app0-foo.service && exit 1 -set -e -set -o pipefail - -portablectl list | grep -q -F "minimal_1" - -portablectl detach --now --runtime /usr/share/minimal_1.raw app0 - -portablectl list | grep -q -F "No images." - -# portablectl also works with directory paths rather than images - -unsquashfs -dest /tmp/minimal_0 /usr/share/minimal_0.raw -unsquashfs -dest /tmp/minimal_1 /usr/share/minimal_1.raw - -portablectl attach --copy=symlink --now --runtime /tmp/minimal_0 app0 - -systemctl is-active app0.service -systemctl is-active app0-foo.service -set +o pipefail -set +e -systemctl is-active app0-bar.service && exit 1 -set -e -set -o pipefail - -portablectl reattach --now --enable --runtime /tmp/minimal_1 app0 - -systemctl is-active app0.service -systemctl is-active app0-bar.service -set +o pipefail -set +e -systemctl is-active app0-foo.service && exit 1 -set -e -set -o pipefail - -portablectl list | grep -q -F "minimal_1" - -portablectl detach --now --enable --runtime /tmp/minimal_1 app0 - -portablectl list | grep -q -F "No images." - -echo OK > /testok - -exit 0 -- cgit v1.2.1