Systemd/test
Frantisek Sumsal e4e039bce4 test: mark plymouth as optional dependency
rescue.service pulls in /bin/plymouth, which doesn't exist on some
distributions (e.g. Arch Linux). Let's mark it as optional, as it's not
even required by the referencing unit and causes unwanted fails in the
integration testsuite.
2019-01-21 11:35:24 +01:00
..
fuzz networkd: permit DNS "DefaultRoute" configuration in .network files 2018-12-21 12:10:07 +01:00
hwdb hwdb: improve and test syntax error messages 2016-12-01 11:56:50 -05:00
journal-data test-journal-importer: add a test case with broken input 2017-02-15 00:31:55 -05:00
loopy.service.d core: do not add dependencies to self 2014-08-07 20:42:58 -04:00
mocks Add mock fsck process 2015-02-18 16:33:46 +01:00
TEST-01-BASIC test: drop service masking in TEST-01-BASIC 2019-01-11 13:45:08 +01:00
TEST-02-CRYPTSETUP test: mask several unnecessary services 2018-11-03 18:00:47 +09:00
TEST-03-JOBS test: mask several unnecessary services 2018-11-03 18:00:47 +09:00
TEST-04-JOURNAL test: drop 'After=multi-user.target' from most of testsuite.service 2018-11-03 18:00:47 +09:00
TEST-05-RLIMITS test: drop 'After=multi-user.target' from most of testsuite.service 2018-11-03 18:00:47 +09:00
TEST-06-SELINUX test: drop 'After=multi-user.target' from most of testsuite.service 2018-11-03 18:00:47 +09:00
TEST-07-ISSUE-1981 test: drop 'After=multi-user.target' from most of testsuite.service 2018-11-03 18:00:47 +09:00
TEST-08-ISSUE-2730 test: drop 'After=multi-user.target' from most of testsuite.service 2018-11-03 18:00:47 +09:00
TEST-09-ISSUE-2691 test: drop 'After=multi-user.target' from most of testsuite.service 2018-11-03 18:00:47 +09:00
TEST-10-ISSUE-2467 test: drop 'After=multi-user.target' from most of testsuite.service 2018-11-03 18:00:47 +09:00
TEST-11-ISSUE-3166 test: drop 'After=multi-user.target' from most of testsuite.service 2018-11-03 18:00:47 +09:00
TEST-12-ISSUE-3171 test: drop 'After=multi-user.target' from most of testsuite.service 2018-11-03 18:00:47 +09:00
TEST-13-NSPAWN-SMOKE tests: explicitly enable user namespaces for TEST-13-NSPAWN-SMOKE 2018-12-21 05:19:37 +09:00
TEST-14-MACHINE-ID test: drop 'After=multi-user.target' from most of testsuite.service 2018-11-03 18:00:47 +09:00
TEST-15-DROPIN test: drop 'After=multi-user.target' from most of testsuite.service 2018-11-03 18:00:47 +09:00
TEST-16-EXTEND-TIMEOUT test: disable QEMU based testing for TEST-16-EXTEND-TIMEOUT 2018-06-06 11:24:09 +02:00
TEST-17-UDEV-WANTS test: increase timeout for TEST-17-UDEV-WANTS 2018-11-03 18:00:47 +09:00
TEST-18-FAILUREACTION test: mask several unnecessary services 2018-11-03 18:00:47 +09:00
TEST-19-DELEGATE cgroup: s/cgroups? ?v?([0-9])/cgroup v\1/gI 2019-01-03 11:32:40 +09:00
TEST-20-MAINPIDGAMES test: mask several unnecessary services 2018-11-03 18:00:47 +09:00
TEST-21-SYSUSERS test: do not use global variable to pass error 2018-10-09 19:11:21 +09:00
TEST-22-TMPFILES test: Add tests for tmpfiles C behavior 2019-01-08 14:30:15 -06:00
TEST-23-TYPE-EXEC test: mask several unnecessary services 2018-11-03 18:00:47 +09:00
TEST-24-UNIT-TESTS test: add TEST-24-UNIT-TESTS running all basic tests under containers 2018-10-09 19:11:21 +09:00
TEST-25-IMPORT test: add simple test for importd 2018-11-26 18:09:01 +01:00
TEST-26-SETENV test: add test for setting service manager environment variables 2018-11-27 14:25:17 +09:00
TEST-27-STDOUTFILE test: make TEST-27 non-racy 2018-11-28 13:05:54 +09:00
TEST-28-PERCENTJ-WANTEDBY core: support %j in unit dependency resolution 2018-12-22 17:21:13 +09:00
test-execute test: let the shell find "touch" instead of hard-coded "/bin/touch" 2018-11-19 08:37:36 +01:00
test-network Merge pull request #11375 from daxtens/issue5882 2019-01-17 18:08:01 +01:00
test-path test-path: move all related test files to a specific directory 2015-10-31 15:07:19 +01:00
test-resolve test: move resolved test data into test/ 2017-02-13 22:23:48 +01:00
test-umount test-umount: add a simple test for swap_list_get() 2018-03-16 10:12:50 +01:00
unit-.service.d test: add test for prefix unit loading 2018-04-13 11:34:48 +02:00
unit-with-.service.d test: add test for prefix unit loading 2018-04-13 11:34:48 +02:00
unit-with-multiple-.service.d test: add test for prefix unit loading 2018-04-13 11:34:48 +02:00
unit-with-multiple-dashes.service.d test: add test for prefix unit loading 2018-04-13 11:34:48 +02:00
.gitignore update .gitignore 2013-01-28 03:54:49 +01:00
a.service test: rename test directory 2011-12-31 18:06:56 +01:00
b.service test: rename test directory 2011-12-31 18:06:56 +01:00
basic.target test-engine: fix access to unit load path 2014-07-20 19:48:16 -04:00
c.service test: rename test directory 2011-12-31 18:06:56 +01:00
create-sys-script.py tree-wide: use proper unicode © instead of (C) where we can 2018-06-14 10:20:20 +02:00
d.service test: rename test directory 2011-12-31 18:06:56 +01:00
daughter.service cgroup v2: Don't require CPU controller for CPU accounting in 4.15+ 2018-11-18 12:21:41 +00:00
e.service test: rename test directory 2011-12-31 18:06:56 +01:00
end.service tests: various fixes 2015-11-10 18:01:15 +00:00
f.service test: rename test directory 2011-12-31 18:06:56 +01:00
g.service test: rename test directory 2011-12-31 18:06:56 +01:00
grandchild.service test: add missing test units 2014-02-18 23:55:41 +01:00
h.service test: rename test directory 2011-12-31 18:06:56 +01:00
hello-after-sleep.target test: add test for jobs 2013-01-25 22:29:56 +01:00
hello.service test: add test for jobs 2013-01-25 22:29:56 +01:00
hwdb-test.sh tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
loopy.service core: do not add dependencies to self 2014-08-07 20:42:58 -04:00
loopy2.service core: do not add dependencies to self 2014-08-07 20:42:58 -04:00
loopy3.service core: warn when merged units have conflicting dependencies 2014-08-07 20:46:49 -04:00
loopy4.service core: warn when merged units have conflicting dependencies 2014-08-07 20:46:49 -04:00
meson.build meson: bump timeout for test-udev to 180s 2019-01-21 11:33:54 +01:00
mkosi.build.networkd-test networkd-test: add mkosi snippet for building and running networkd-tets.py in a network namespaced container 2018-12-07 12:25:24 +01:00
mkosi.default.networkd-test networkd-test: add mkosi snippet for building and running networkd-tets.py in a network namespaced container 2018-12-07 12:25:24 +01:00
mkosi.nspawn.networkd-test networkd-test: add mkosi snippet for building and running networkd-tets.py in a network namespaced container 2018-12-07 12:25:24 +01:00
networkd-test.py resolved: bind .local domains to mDNS with DNS_SCOPE_YES, similar LLMNR 2018-12-21 11:41:45 +01:00
nomem.slice cgroup: Add DisableControllers= directive to disable controller in subtree 2018-12-03 15:40:31 +00:00
nomemleaf.service cgroup: Add DisableControllers= directive to disable controller in subtree 2018-12-03 15:40:31 +00:00
parent-deep.slice test: add missing test units 2014-02-18 23:55:41 +01:00
parent.slice core: translate between IO and BlockIO settings to ease transition 2016-05-18 17:35:12 -07:00
README.testsuite README.testsuite: update the documentation for meson 2018-10-09 15:31:00 +02:00
rule-syntax-check.py tree-wide: use proper unicode © instead of (C) where we can 2018-06-14 10:20:20 +02:00
run-integration-tests.sh tests: clean up again after running tests (#10446) 2018-10-19 03:59:24 +09:00
run-unit-tests.py run-unit-tests: add option to run unsafe tests too 2018-09-24 15:42:50 +02:00
sched_idle_bad.service sched: Only setting CPUSchedulingPriority=rr doesn't work 2012-11-15 16:16:45 +01:00
sched_idle_ok.service sched: Only setting CPUSchedulingPriority=rr doesn't work 2012-11-15 16:16:45 +01:00
sched_rr_bad.service sched: Only setting CPUSchedulingPriority=rr doesn't work 2012-11-15 16:16:45 +01:00
sched_rr_change.service sched: Only setting CPUSchedulingPriority=rr doesn't work 2012-11-15 16:16:45 +01:00
sched_rr_ok.service sched: Only setting CPUSchedulingPriority=rr doesn't work 2012-11-15 16:16:45 +01:00
shutdown.target test-engine: fix access to unit load path 2014-07-20 19:48:16 -04:00
sleep.service test: add test for jobs 2013-01-25 22:29:56 +01:00
sockets.target test-engine: fix access to unit load path 2014-07-20 19:48:16 -04:00
son.service cgroups: Cache controller masks and optimize queues. 2013-11-22 11:22:47 +10:00
splash.bmp sd-boot: add EFI boot manager and stub loader 2015-02-17 14:36:59 +01:00
sys-script.py tree-wide: use proper unicode © instead of (C) where we can 2018-06-14 10:20:20 +02:00
sysinit.target test-engine: fix access to unit load path 2014-07-20 19:48:16 -04:00
sysv-generator-test.py tree-wide: use proper unicode © instead of (C) where we can 2018-06-14 10:20:20 +02:00
test-efi-create-disk.sh meson: also indent scripts with 8 spaces 2017-04-25 08:49:16 -04:00
test-exec-deserialization.py tree-wide: beautify remaining copyright statements 2018-06-14 10:20:21 +02:00
test-functions test: mark plymouth as optional dependency 2019-01-21 11:35:24 +01:00
testsuite.target test: factor out testsuite.target, end.service 2013-01-25 22:29:56 +01:00
timers.target test-engine: fix access to unit load path 2014-07-20 19:48:16 -04:00
udev-test.pl udev-test: check if permitted to create block device nodes 2018-12-11 16:55:34 +03:00
unit-with-multiple-dashes.service test: add test for prefix unit loading 2018-04-13 11:34:48 +02:00
unstoppable.service tests: fix unstoppable service 2015-11-12 03:24:10 +00:00

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 can be used to disable qemu tests.

TEST_NO_NSPAWN=1 can be used to disable nspawn tests.

KERNEL_APPEND='...' can be used to add additional kernel parameters for the QEMU runs.

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.