test: factor out testsuite.target, end.service

Tests can use the same testsuite.target.
Add end.service to call poweroff instead of doing it from ExecStopPost
where it may be skipped on failure of ExecStart.
This commit is contained in:
Michal Schmidt 2013-01-25 22:19:19 +01:00
parent e8a66f4af2
commit c90feab4ff
4 changed files with 20 additions and 20 deletions

View file

@ -123,15 +123,8 @@ EOF
LABEL=systemd / ext3 rw 0 1 LABEL=systemd / ext3 rw 0 1
EOF EOF
# setup the testsuite target # setup the testsuite target and the test ending service
cat >$initdir/etc/systemd/system/testsuite.target <<EOF cp $TEST_BASE_DIR/{testsuite.target,end.service} $initdir/etc/systemd/system/
[Unit]
Description=Testsuite target
Requires=multi-user.target
After=multi-user.target
Conflicts=rescue.target
AllowIsolate=yes
EOF
# setup the testsuite service # setup the testsuite service
cat >$initdir/etc/systemd/system/testsuite.service <<EOF cat >$initdir/etc/systemd/system/testsuite.service <<EOF
@ -141,11 +134,12 @@ After=multi-user.target
[Service] [Service]
ExecStart=/bin/bash -c 'set -x; systemctl --failed --no-legend --no-pager > /failed ; echo OK > /testok; while : ;do echo "testsuite service waiting for journal to move to /var/log/journal" > /dev/console ; for i in /var/log/journal/*;do [ -d "\$i" ] && echo "\$i" && break 2; done; sleep 1; done; sleep 1; exit 0;' ExecStart=/bin/bash -c 'set -x; systemctl --failed --no-legend --no-pager > /failed ; echo OK > /testok; while : ;do echo "testsuite service waiting for journal to move to /var/log/journal" > /dev/console ; for i in /var/log/journal/*;do [ -d "\$i" ] && echo "\$i" && break 2; done; sleep 1; done; sleep 1; exit 0;'
ExecStopPost=/usr/bin/systemctl poweroff --no-block
Type=oneshot Type=oneshot
EOF EOF
mkdir -p $initdir/etc/systemd/system/testsuite.target.wants mkdir -p $initdir/etc/systemd/system/testsuite.target.wants
ln -fs ../testsuite.service $initdir/etc/systemd/system/testsuite.target.wants/testsuite.service ln -fs ../testsuite.service $initdir/etc/systemd/system/testsuite.target.wants/testsuite.service
ln -fs ../end.service $initdir/etc/systemd/system/testsuite.target.wants/end.service
# make the testsuite the default target # make the testsuite the default target
ln -fs testsuite.target $initdir/etc/systemd/system/default.target ln -fs testsuite.target $initdir/etc/systemd/system/default.target

View file

@ -122,15 +122,8 @@ LABEL=systemd / ext3 rw 0 1
/dev/mapper/varcrypt /var ext3 defaults 0 1 /dev/mapper/varcrypt /var ext3 defaults 0 1
EOF EOF
# setup the testsuite target # setup the testsuite target and the test ending service
cat >$initdir/etc/systemd/system/testsuite.target <<EOF cp $TEST_BASE_DIR/{testsuite.target,end.service} $initdir/etc/systemd/system/
[Unit]
Description=Testsuite target
Requires=multi-user.target
After=multi-user.target
Conflicts=rescue.target
AllowIsolate=yes
EOF
# setup the testsuite service # setup the testsuite service
cat >$initdir/etc/systemd/system/testsuite.service <<EOF cat >$initdir/etc/systemd/system/testsuite.service <<EOF
@ -140,11 +133,12 @@ After=multi-user.target
[Service] [Service]
ExecStart=/bin/bash -c 'set -x; systemctl --failed --no-legend --no-pager > /failed ; echo OK > /testok; while : ;do systemd-cat echo "testsuite service waiting for /var/log/journal" ; echo "testsuite service waiting for journal to move to /var/log/journal" > /dev/console ; for i in /var/log/journal/*;do [ -d "\$i" ] && echo "\$i" && break 2; done; sleep 1; done; sleep 1; exit 0;' ExecStart=/bin/bash -c 'set -x; systemctl --failed --no-legend --no-pager > /failed ; echo OK > /testok; while : ;do systemd-cat echo "testsuite service waiting for /var/log/journal" ; echo "testsuite service waiting for journal to move to /var/log/journal" > /dev/console ; for i in /var/log/journal/*;do [ -d "\$i" ] && echo "\$i" && break 2; done; sleep 1; done; sleep 1; exit 0;'
ExecStopPost=/usr/bin/systemctl poweroff --no-block
Type=oneshot Type=oneshot
EOF EOF
mkdir -p $initdir/etc/systemd/system/testsuite.target.wants mkdir -p $initdir/etc/systemd/system/testsuite.target.wants
ln -fs ../testsuite.service $initdir/etc/systemd/system/testsuite.target.wants/testsuite.service ln -fs ../testsuite.service $initdir/etc/systemd/system/testsuite.target.wants/testsuite.service
ln -fs ../end.service $initdir/etc/systemd/system/testsuite.target.wants/end.service
# make the testsuite the default target # make the testsuite the default target
ln -fs testsuite.target $initdir/etc/systemd/system/default.target ln -fs testsuite.target $initdir/etc/systemd/system/default.target

6
test/end.service Normal file
View file

@ -0,0 +1,6 @@
[Unit]
Description=End the test
After=testsuite.service
[Service]
ExecStart=/usr/bin/systemctl poweroff --no-block

6
test/testsuite.target Normal file
View file

@ -0,0 +1,6 @@
[Unit]
Description=Testsuite target
Requires=multi-user.target
After=multi-user.target
Conflicts=rescue.target
AllowIsolate=yes