test: make sure our tests get exclusive TTY access
authorLennart Poettering <lennart@poettering.net>
Tue, 19 Nov 2019 17:54:47 +0000 (18:54 +0100)
committerLennart Poettering <lennart@poettering.net>
Wed, 20 Nov 2019 08:39:54 +0000 (09:39 +0100)
This sould make our test suite a bit more robust if it is slow running.
A few of our test services use StandardOutput=tty or StandardError=tty
in the tests in order to connect test services to the container console.
This gets into conflict with the container getty which wants exclusive
access to the console. Since the container getty is started with
Type=idle it typically gets started after a timeout only if the TTY is
already used, which hence introduces a race: if the test finishes
earlier all is good, if not, then the test gets kicked off the TTY which
then causes bash to abort since it cannot write any error messages
anymore.

Let's fix this hence: all tests that connect to the tty are now
synchronized to getty-pre.target, so they finish before any getty is
started.

test/TEST-20-MAINPIDGAMES/test.sh
test/TEST-22-TMPFILES/testsuite.service
test/TEST-42-EXECSTOPPOST/test.sh

index 0ba30bd..05fa847 100755 (executable)
@@ -18,6 +18,8 @@ test_setup() {
         cat >$initdir/etc/systemd/system/testsuite.service <<EOF
 [Unit]
 Description=Testsuite service
+Before=getty-pre.target
+Wants=getty-pre.target
 
 [Service]
 ExecStart=/bin/bash -x /testsuite.sh
index a19174e..2f1b15c 100644 (file)
@@ -1,6 +1,8 @@
 [Unit]
 Description=Testsuite service
 After=systemd-tmpfiles-setup.service
+Before=getty-pre.target
+Wants=getty-pre.target
 
 [Service]
 WorkingDirectory=/testsuite
index dd96787..865989d 100755 (executable)
@@ -32,6 +32,8 @@ EOF
         cat >$initdir/etc/systemd/system/testsuite.service <<EOF
 [Unit]
 Description=Testsuite service
+Before=getty-pre.target
+Wants=getty-pre.target
 
 [Service]
 ExecStart=/testsuite.sh