test: make sure our tests get exclusive TTY access

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.
This commit is contained in:
Lennart Poettering 2019-11-19 18:54:47 +01:00
parent faf1bb8244
commit b82e818f5c
3 changed files with 6 additions and 0 deletions

View file

@ -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

View 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

View file

@ -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