1
0
mirror of https://github.com/systemd/systemd.git synced 2024-11-01 17:51:22 +03:00
systemd/test
Evgeny Vereshchagin 220fa139de tests: add a couple of files containing all the sections and directives
This should help the fuzzers to discover code paths faster.

In case anyone is interested, they were generated with the following script
```
perl -aF'/[\s,]+/' -ne '
if (my ($s, $d) = ($F[0] =~ /^([^\s\.]+)\.([^\s\.]+)$/)) { $d{$s}{$d} = 1; }
END { while (my ($key, $value) = each %d) {
    printf "[%s]\n%s\n", $key, join("\n", keys(%$value))
}}'
```
by passing src/network/networkd-network-gperf.gperf and
src/network/netdev/netdev-gperf.gperf to it.
2018-11-06 19:42:29 +01:00
..
fuzz tests: add a couple of files containing all the sections and directives 2018-11-06 19:42:29 +01:00
hwdb
journal-data
loopy.service.d
mocks
TEST-01-BASIC tests: clean up again after running tests (#10446) 2018-10-19 03:59:24 +09: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 test: drop 'After=multi-user.target' from most of testsuite.service 2018-11-03 18:00:47 +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 test: mask several unnecessary services 2018-11-03 18:00:47 +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: drop 'After=multi-user.target' from most of testsuite.service 2018-11-03 18:00:47 +09: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-execute shared: add %g, %G specifiers for group / gid (#10368) 2018-10-13 17:26:48 +09:00
test-network networkd: cleanup for #10542 2018-11-06 16:42:12 +03:00
test-path
test-resolve
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
a.service
b.service
basic.target
c.service
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
daughter.service
e.service
end.service
f.service
g.service
grandchild.service
h.service
hello-after-sleep.target
hello.service
hwdb-test.sh tree-wide: drop license boilerplate 2018-04-06 18:58:55 +02:00
loopy2.service
loopy3.service
loopy4.service
loopy.service
meson.build Merge pull request #10134 from keszybz/test-runner 2018-10-05 20:35:30 +02:00
networkd-test.py tests: update networkd-test.py to use resolvectl instead of systemd-resolve (#10486) 2018-10-23 07:29:03 +09:00
parent-deep.slice
parent.slice
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_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 tree-wide: use proper unicode © instead of (C) where we can 2018-06-14 10:20:20 +02:00
sysinit.target
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
test-exec-deserialization.py tree-wide: beautify remaining copyright statements 2018-06-14 10:20:21 +02:00
test-functions tests: allow passing log_level via an environment variable (#10490) 2018-10-23 16:09:23 +09:00
testsuite.target
timers.target
udev-test.pl test: create /dev/null in test-udev.pl 2018-10-24 04:46:48 +09:00
unit-with-multiple-dashes.service test: add test for prefix unit loading 2018-04-13 11:34:48 +02:00
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 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.