Systemd/test
Susant Sahani 299d578f7f network: DHCP server Add support to transmit SIP server
1. DHCP server trasmit
2. Client parses and saves in leases
Implements http://www.rfc-editor.org/rfc/rfc3361.txt

```
Frame 134: 348 bytes on wire (2784 bits), 348 bytes captured (2784 bits) on interface 0
Ethernet II, Src: 42:65:85:d6:4e:32 (42:65:85:d6:4e:32), Dst: 1e:04:f8:b8:2f:d4 (1e:04:f8:b8:2f:d4)
Internet Protocol Version 4, Src: 192.168.5.1, Dst: 192.168.5.11
User Datagram Protocol, Src Port: 67, Dst Port: 68
Dynamic Host Configuration Protocol (ACK)
    Message type: Boot Reply (2)
    Hardware type: Ethernet (0x01)
    Hardware address length: 6
    Hops: 0
    Transaction ID: 0x7cc87cb4
    Seconds elapsed: 0
    Bootp flags: 0x0000 (Unicast)
    Client IP address: 0.0.0.0
    Your (client) IP address: 192.168.5.11
    Next server IP address: 0.0.0.0
    Relay agent IP address: 0.0.0.0
    Client MAC address: 1e:04:f8:b8:2f:d4 (1e:04:f8:b8:2f:d4)
    Client hardware address padding: 00000000000000000000
    Server host name not given
    Boot file name not given
    Magic cookie: DHCP
    Option: (53) DHCP Message Type (ACK)
        Length: 1
        DHCP: ACK (5)
    Option: (51) IP Address Lease Time
        Length: 4
        IP Address Lease Time: (3600s) 1 hour
    Option: (1) Subnet Mask (255.255.255.0)
        Length: 4
        Subnet Mask: 255.255.255.0
    Option: (3) Router
        Length: 4
        Router: 192.168.5.1
    Option: (6) Domain Name Server
        Length: 4
        Domain Name Server: 192.168.5.1
    Option: (42) Network Time Protocol Servers
        Length: 4
        Network Time Protocol Server: 192.168.1.1
    Option: (120) SIP Servers <=====here
        Length: 9
        SIP Server Encoding: IPv4 Address (1)
        SIP Server Address: 192.168.1.1
        SIP Server Address: 192.168.5.2
    Option: (101) TCode
        Length: 13
        TZ TCode: Europe/Berlin
    Option: (54) DHCP Server Identifier (192.168.5.1)
        Length: 4
        DHCP Server Identifier: 192.168.5.1
    Option: (255) End
        Option End: 255
```

```
cat /run/systemd/netif/state                                                                                                   ✔    3148  16:40:51
OPER_STATE=routable
CARRIER_STATE=carrier
ADDRESS_STATE=routable
DNS=192.168.94.2 192.168.5.1
NTP=192.168.5.1
SIP=192.168.1.1 192.168.5.2

```

aa
2019-09-20 21:22:23 +09:00
..
fuzz network: DHCP server Add support to transmit SIP server 2019-09-20 21:22:23 +09: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
mocks Add mock fsck process 2015-02-18 16:33:46 +01:00
TEST-01-BASIC test: add create_empty_image_rootdir() to simplify testcase setup 2019-07-16 18:05:15 -04:00
TEST-02-CRYPTSETUP test: replace $TESTDIR/root with $initdir 2019-08-17 12:29:08 -04:00
TEST-03-JOBS test: add create_empty_image_rootdir() to simplify testcase setup 2019-07-16 18:05:15 -04:00
TEST-04-JOURNAL test: add create_empty_image_rootdir() to simplify testcase setup 2019-07-16 18:05:15 -04:00
TEST-05-RLIMITS test: add create_empty_image_rootdir() to simplify testcase setup 2019-07-16 18:05:15 -04:00
TEST-06-SELINUX test: use "ln -fs" 2019-07-30 13:27:06 +02:00
TEST-07-ISSUE-1981 test: add create_empty_image_rootdir() to simplify testcase setup 2019-07-16 18:05:15 -04:00
TEST-08-ISSUE-2730 test: use "ln -fs" 2019-07-30 13:27:06 +02:00
TEST-09-ISSUE-2691 test: use "ln -fs" 2019-07-30 13:27:06 +02:00
TEST-10-ISSUE-2467 test/TEST-10-ISSUE-2467: remove testsuite.service TimeoutStartSec 2019-08-26 12:47:15 +09:00
TEST-11-ISSUE-3166 test: add create_empty_image_rootdir() to simplify testcase setup 2019-07-16 18:05:15 -04:00
TEST-12-ISSUE-3171 test: add create_empty_image_rootdir() to simplify testcase setup 2019-07-16 18:05:15 -04:00
TEST-13-NSPAWN-SMOKE test: add some test for norbind 2019-07-24 17:20:29 +02:00
TEST-14-MACHINE-ID test: use "ln -fs" 2019-07-30 13:27:06 +02:00
TEST-15-DROPIN pid1: use a cache for all unit aliases 2019-07-30 14:01:46 +02:00
TEST-16-EXTEND-TIMEOUT Merge pull request #13119 from keszybz/unit-loading-2 2019-07-30 17:55:37 +02:00
TEST-17-UDEV-WANTS test: use "ln -fs" 2019-07-30 13:27:06 +02:00
TEST-18-FAILUREACTION test/TEST-18-FAILUREACTION: fix typo to actually run firstphase action 2019-08-26 12:46:39 +09:00
TEST-19-DELEGATE test: increase qemu timeout for TEST-18 and TEST-19 2019-08-19 00:30:22 +09:00
TEST-20-MAINPIDGAMES test: add create_empty_image_rootdir() to simplify testcase setup 2019-07-16 18:05:15 -04:00
TEST-21-SYSUSERS meson: make nologin path build time configurable 2019-07-18 12:46:35 +02:00
TEST-22-TMPFILES tests: add test for suid/sgid handling in tmpfiles 2019-04-30 09:18:23 +02:00
TEST-23-TYPE-EXEC test: add create_empty_image_rootdir() to simplify testcase setup 2019-07-16 18:05:15 -04:00
TEST-24-UNIT-TESTS test: replace $TESTDIR/root with $initdir 2019-08-17 12:29:08 -04:00
TEST-25-IMPORT test: add create_empty_image_rootdir() to simplify testcase setup 2019-07-16 18:05:15 -04:00
TEST-26-SETENV test: add create_empty_image_rootdir() to simplify testcase setup 2019-07-16 18:05:15 -04:00
TEST-27-STDOUTFILE test: add create_empty_image_rootdir() to simplify testcase setup 2019-07-16 18:05:15 -04:00
TEST-28-PERCENTJ-WANTEDBY Merge pull request #13119 from keszybz/unit-loading-2 2019-07-30 17:55:37 +02:00
TEST-29-UDEV-ID_RENAMING test: use "ln -fs" 2019-07-30 13:27:06 +02:00
TEST-30-ONCLOCKCHANGE test: add create_empty_image_rootdir() to simplify testcase setup 2019-07-16 18:05:15 -04:00
TEST-31-DEVICE-ENUMERATION test: use "ln -fs" 2019-07-30 13:27:06 +02:00
TEST-32-OOMPOLICY test: add create_empty_image_rootdir() to simplify testcase setup 2019-07-16 18:05:15 -04:00
TEST-33-CLEAN-UNIT test: add more tests for "systemctl clean" 2019-08-31 09:30:12 +02:00
TEST-34-DYNAMICUSERMIGRATE test: add create_empty_image_rootdir() to simplify testcase setup 2019-07-16 18:05:15 -04:00
TEST-35-NETWORK-GENERATOR network-generator: rename generated unit files 2019-07-30 02:30:09 +09:00
TEST-36-NUMAPOLICY Merge pull request #13300 from mrc0mmand/test-execreload 2019-09-17 10:54:18 +02:00
TEST-37-RUNTIMEDIRECTORYPRESERVE test: add tests for RuntimeDirectoryPreserve=yes 2019-08-23 00:22:54 +09:00
TEST-39-EXECRELOAD test: rename TEST-EXECRELOAD to avoid name conflict 2019-09-18 00:14:43 +09:00
TEST-40-EXEC-COMMAND-EX core: add ExecXYZEx= bus hook ups to all exec command properties 2019-09-17 15:48:44 +00:00
test-execute core: ExecCondition= for services 2019-07-17 11:35:02 +02:00
test-network test-network: Drop start dnsmasq 2019-09-20 08:09:25 +00: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
a-conj.service tests: Check trivial loop between two jobs 2019-06-26 23:16:31 +02:00
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 cgroup v2: Don't require CPU controller for CPU accounting in 4.15+ 2018-11-18 12:21:41 +00:00
dml-discard-empty.service cgroup: Implement default propagation of MemoryLow with DefaultMemoryLow 2019-04-12 17:23:58 +02:00
dml-discard-set-ml.service cgroup: Implement default propagation of MemoryLow with DefaultMemoryLow 2019-04-12 17:23:58 +02:00
dml-discard.slice cgroup: Implement default propagation of MemoryLow with DefaultMemoryLow 2019-04-12 17:23:58 +02:00
dml-override-empty.service cgroup: Implement default propagation of MemoryLow with DefaultMemoryLow 2019-04-12 17:23:58 +02:00
dml-override.slice cgroup: Implement default propagation of MemoryLow with DefaultMemoryLow 2019-04-12 17:23:58 +02:00
dml-passthrough-empty.service cgroup: Implement default propagation of MemoryLow with DefaultMemoryLow 2019-04-12 17:23:58 +02:00
dml-passthrough-set-dml.service cgroup: Implement default propagation of MemoryLow with DefaultMemoryLow 2019-04-12 17:23:58 +02:00
dml-passthrough-set-ml.service cgroup: Test that it's possible to set memory protection to 0 again 2019-05-08 12:06:32 +01:00
dml-passthrough.slice cgroup: Implement default propagation of MemoryLow with DefaultMemoryLow 2019-04-12 17:23:58 +02:00
dml.slice cgroup: Implement default propagation of MemoryLow with DefaultMemoryLow 2019-04-12 17:23:58 +02:00
e.service
end.service tests: various fixes 2015-11-10 18:01:15 +00:00
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
i.service tests: Check job ordering on execution cycles 2019-06-26 23:16:31 +02:00
loopy.service
loopy2.service
loopy3.service
loopy4.service
meson.build core: ExecCondition= for services 2019-07-17 11:35:02 +02: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 codespell: fix spelling errors 2019-04-29 16:47:18 +02: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 test: print an error when networkctl returns an unexpected EC 2019-07-31 16:33:12 +02: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
parent.slice core: translate between IO and BlockIO settings to ease transition 2016-05-18 17:35:12 -07:00
README.testsuite test: improve testsuite configuration documentation 2019-03-16 18:59:07 +01:00
rule-syntax-check.py rule-syntax-check: allow PROGRAM as an assignment 2019-02-10 19:06:58 +01:00
run-integration-tests.sh scripts: use 4 space indentation 2019-04-12 08:30:31 +02: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 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
sysv-generator-test.py codespell: fix spelling errors 2019-04-29 16:47:18 +02:00
test-efi-create-disk.sh scripts: use 4 space indentation 2019-04-12 08:30:31 +02:00
test-exec-deserialization.py tree-wide: beautify remaining copyright statements 2018-06-14 10:20:21 +02:00
test-functions test/test-functions: use truncate instead of dd to create testbed image 2019-08-25 15:37:51 +09:00
testsuite.target
timers.target
udev-test.pl test: add test cases for empty string match 2019-09-11 09:06:15 +09: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
    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.