mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-02-08 05:57:26 +03:00
otherwise we might end up being faster than the unit itself, causing unexpected fails, like: ``` testsuite.sh[297]: + systemctl start issue_14566_test testsuite.sh[297]: + systemctl status issue_14566_test testsuite.sh[304]: ● issue_14566_test.service - Issue 14566 Repro testsuite.sh[304]: Loaded: loaded (/etc/systemd/system/issue_14566_test.service; static; vendor preset: enabled) testsuite.sh[304]: Active: active (running) since Sat 2020-03-14 02:02:23 UTC; 417ms ago testsuite.sh[304]: Main PID: 301 ((repro.sh)) testsuite.sh[304]: Tasks: 1 (limit: 535) testsuite.sh[304]: Memory: 180.0K testsuite.sh[304]: CPU: 122ms testsuite.sh[304]: CGroup: /system.slice/issue_14566_test.service testsuite.sh[304]: └─301 [(repro.sh)] testsuite.sh[307]: ++ cat /leakedtestpid testsuite.sh[307]: cat: /leakedtestpid: No such file or directory testsuite.sh[297]: + leaked_pid= ``` (cherry picked from commit 197298ff9fc930de450330095cc5b67d165d0801) (cherry picked from commit e110f4dacb6d56fc9d99456422c2cff7e54ae7f0) (cherry picked from commit dbe16df9cd50dc6c3662fb90295edebb37c2fdad)
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) 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.