mirror of
https://github.com/systemd/systemd-stable.git
synced 2024-12-22 13:33:56 +03:00
0f714a34c4
I *think* this was originally added to make it easier to see what was happening in tests. Later we added the functionality to print the journal on failure, so this redirection has stopped being useful. In https://github.com/systemd/systemd/pull/13719#issuecomment-539292650 @filbranden shows that grep tries to write to stdout and fails. In general, we should not assume that writing to the console it always possible. We have special code to handle this in pid1 after all: 99 19:22:10.731965 fstat(1, <unfinished ...> 99 19:22:10.731993 <... fstat resumed>{st_mode=S_IFCHR|0620, st_rdev=makedev(0x88, 0), ...}) = 0 99 19:22:10.732070 write(1, "ExecStartPost={ path=/bin/echo ; argv[]=/bin/echo ${4_four_ex} ; ignore_errors=no ; start_time=[Mon 2019-10-07 19:22:10 PDT] ; stop_time=[Mon 209-10-07 19:22:10 PDT] ; pid=97 ; code=exited ; status=0 }\n", 203) = -1 EIO (Input/output error) 99 19:22:10.732174 write(2, "grep: ", 6) = -1 EIO (Input/output error) 99 19:22:10.732226 write(2, "write error", 11) = -1 EIO (Input/output error) 99 19:22:10.732263 write(2, ": Input/output error", 20) = -1 EIO (Input/output error) 99 19:22:10.732298 write(2, "\n", 1 <unfinished ...> 99 19:22:10.732325 <... write resumed>) = -1 EIO (Input/output error) 99 19:22:10.732349 exit_group(2) = ? 99 19:22:10.732424 +++ exited with 2 +++ Removing the redirection should make the tests less flakey. Replaces #13719. While at it, also drop NotifyAccess=all. I think it was added purposefully in TEST-20-MAINPIDGAMES, and then cargo culted to newer tests. |
||
---|---|---|
.. | ||
fuzz | ||
hwdb | ||
journal-data | ||
loopy.service.d | ||
mocks | ||
TEST-01-BASIC | ||
TEST-02-CRYPTSETUP | ||
TEST-03-JOBS | ||
TEST-04-JOURNAL | ||
TEST-05-RLIMITS | ||
TEST-06-SELINUX | ||
TEST-07-ISSUE-1981 | ||
TEST-08-ISSUE-2730 | ||
TEST-09-ISSUE-2691 | ||
TEST-10-ISSUE-2467 | ||
TEST-11-ISSUE-3166 | ||
TEST-12-ISSUE-3171 | ||
TEST-13-NSPAWN-SMOKE | ||
TEST-14-MACHINE-ID | ||
TEST-15-DROPIN | ||
TEST-16-EXTEND-TIMEOUT | ||
TEST-17-UDEV-WANTS | ||
TEST-18-FAILUREACTION | ||
TEST-19-DELEGATE | ||
TEST-20-MAINPIDGAMES | ||
TEST-21-SYSUSERS | ||
TEST-22-TMPFILES | ||
TEST-23-TYPE-EXEC | ||
TEST-24-UNIT-TESTS | ||
TEST-25-IMPORT | ||
TEST-26-SETENV | ||
TEST-27-STDOUTFILE | ||
TEST-28-PERCENTJ-WANTEDBY | ||
TEST-29-UDEV-ID_RENAMING | ||
TEST-30-ONCLOCKCHANGE | ||
TEST-31-DEVICE-ENUMERATION | ||
TEST-32-OOMPOLICY | ||
TEST-33-CLEAN-UNIT | ||
TEST-34-DYNAMICUSERMIGRATE | ||
TEST-35-NETWORK-GENERATOR | ||
TEST-36-NUMAPOLICY | ||
TEST-37-RUNTIMEDIRECTORYPRESERVE | ||
TEST-39-EXECRELOAD | ||
TEST-40-EXEC-COMMAND-EX | ||
test-execute | ||
test-network | ||
test-path | ||
test-resolve | ||
test-umount | ||
unit-.service.d | ||
unit-with-.service.d | ||
unit-with-multiple-.service.d | ||
unit-with-multiple-dashes.service.d | ||
.gitignore | ||
a-conj.service | ||
a.service | ||
b.service | ||
basic.target | ||
c.service | ||
create-sys-script.py | ||
d.service | ||
daughter.service | ||
dml-discard-empty.service | ||
dml-discard-set-ml.service | ||
dml-discard.slice | ||
dml-override-empty.service | ||
dml-override.slice | ||
dml-passthrough-empty.service | ||
dml-passthrough-set-dml.service | ||
dml-passthrough-set-ml.service | ||
dml-passthrough.slice | ||
dml.slice | ||
e.service | ||
end.service | ||
f.service | ||
g.service | ||
grandchild.service | ||
h.service | ||
hello-after-sleep.target | ||
hello.service | ||
hwdb-test.sh | ||
i.service | ||
loopy2.service | ||
loopy3.service | ||
loopy4.service | ||
loopy.service | ||
meson.build | ||
mkosi.build.networkd-test | ||
mkosi.default.networkd-test | ||
mkosi.nspawn.networkd-test | ||
networkd-test.py | ||
nomem.slice | ||
nomemleaf.service | ||
parent-deep.slice | ||
parent.slice | ||
README.testsuite | ||
rule-syntax-check.py | ||
run-integration-tests.sh | ||
run-unit-tests.py | ||
sched_idle_bad.service | ||
sched_idle_ok.service | ||
sched_rr_bad.service | ||
sched_rr_change.service | ||
sched_rr_ok.service | ||
shutdown.target | ||
sleep.service | ||
sockets.target | ||
son.service | ||
splash.bmp | ||
sys-script.py | ||
sysinit.target | ||
sysv-generator-test.py | ||
test-efi-create-disk.sh | ||
test-exec-deserialization.py | ||
test-functions | ||
testsuite.target | ||
timers.target | ||
udev-test.pl | ||
unit-with-multiple-dashes.service | ||
unstoppable.service |
The extended testsuite only works with UID=0. It contains of several subdirectories named "test/TEST-??-*", which are run one by one. To run the extended testsuite do the following: $ ninja -C build # Avoid building anything as root later $ sudo test/run-integration-tests.sh ninja: Entering directory `/home/zbyszek/src/systemd/build' ninja: no work to do. --x-- Running TEST-01-BASIC --x-- + make -C TEST-01-BASIC BUILD_DIR=/home/zbyszek/src/systemd/build clean setup run make: Entering directory '/home/zbyszek/src/systemd/test/TEST-01-BASIC' TEST CLEANUP: Basic systemd setup TEST SETUP: Basic systemd setup ... TEST RUN: Basic systemd setup [OK] make: Leaving directory '/home/zbyszek/src/systemd/test/TEST-01-BASIC' --x-- Result of TEST-01-BASIC: 0 --x-- --x-- Running TEST-02-CRYPTSETUP --x-- + make -C TEST-02-CRYPTSETUP BUILD_DIR=/home/zbyszek/src/systemd/build clean setup run If one of the tests fails, then $subdir/test.log contains the log file of the test. To run just one of the cases: $ sudo make -C test/TEST-01-BASIC clean setup run Specifying the build directory ============================== If the build directory is not detected automatically, it can be specified with BUILD_DIR=: $ sudo BUILD_DIR=some-other-build/ test/run-integration-tests or $ sudo make -C test/TEST-01-BASIC BUILD_DIR=../../some-other-build/ ... Note that in the second case, the path is relative to the test case directory. An absolute path may also be used in both cases. Configuration variables ======================= TEST_NO_QEMU=1 Don't run tests under QEMU TEST_NO_NSPAWN=1 Don't run tests under systemd-nspawn TEST_NO_KVM=1 Disable QEMU KVM autodetection (may be necessary when you're trying to run the *vanilla* QEMU and have both qemu and qemu-kvm installed) TEST_NESTED_KVM=1 Allow tests to run with nested KVM. By default, the testsuite disables nested KVM if the host machine already runs under KVM. Setting this variable disables such checks QEMU_MEM=512M Configure amount of memory for QEMU VMs (defaults to 512M) QEMU_SMP=1 Configure number of CPUs for QEMU VMs (defaults to 1) KERNEL_APPEND='...' Append additional parameters to the kernel command line NSPAWN_ARGUMENTS='...' Specify additional arguments for systemd-nspawn QEMU_TIMEOUT=infinity Set a timeout for tests under QEMU (defaults to infinity) NSPAWN_TIMEOUT=infinity Set a timeout for tests under systemd-nspawn (defaults to infinity) INTERACTIVE_DEBUG=1 Configure the machine to be more *user-friendly* for interactive debuggung (e.g. by setting a usable default terminal, suppressing the shutdown after the test, etc.) The kernel and initramfs can be specified with $KERNEL_BIN and $INITRD. (Fedora's or Debian's default kernel path and initramfs are used by default) A script will try to find your QEMU binary. If you want to specify a different one with $QEMU_BIN. Debugging the qemu image ======================== If you want to log in the testsuite virtual machine, you can specify additional kernel command line parameter with $KERNEL_APPEND and then log in as root. $ sudo make -C test/TEST-01-BASIC KERNEL_APPEND="systemd.unit=multi-user.target" run Root password is empty.