]> git.ipfire.org Git - thirdparty/systemd.git/blob - test/TEST-12-ISSUE-3171/test.sh
Merge pull request #13080 from keszybz/firstboot-fixes
[thirdparty/systemd.git] / test / TEST-12-ISSUE-3171 / test.sh
1 #!/bin/bash
2 set -e
3 TEST_DESCRIPTION="https://github.com/systemd/systemd/issues/3171"
4 TEST_NO_QEMU=1
5
6 . $TEST_BASE_DIR/test-functions
7
8 test_setup() {
9 create_empty_image_rootdir
10
11 # Create what will eventually be our root filesystem onto an overlay
12 (
13 LOG_LEVEL=5
14 eval $(udevadm info --export --query=env --name=${LOOPDEV}p2)
15
16 setup_basic_environment
17 dracut_install cat mv stat nc
18
19 # mask some services that we do not want to run in these tests
20 ln -fs /dev/null $initdir/etc/systemd/system/systemd-hwdb-update.service
21 ln -fs /dev/null $initdir/etc/systemd/system/systemd-journal-catalog-update.service
22 ln -fs /dev/null $initdir/etc/systemd/system/systemd-networkd.service
23 ln -fs /dev/null $initdir/etc/systemd/system/systemd-networkd.socket
24 ln -fs /dev/null $initdir/etc/systemd/system/systemd-resolved.service
25 ln -fs /dev/null $initdir/etc/systemd/system/systemd-machined.service
26
27 # setup the testsuite service
28 cat >$initdir/etc/systemd/system/testsuite.service <<EOF
29 [Unit]
30 Description=Testsuite service
31 After=multi-user.target
32
33 [Service]
34 ExecStart=/test-socket-group.sh
35 Type=oneshot
36 EOF
37
38 cat >$initdir/test-socket-group.sh <<'EOF'
39 #!/bin/bash
40 set -x
41 set -e
42 set -o pipefail
43
44 U=/run/systemd/system/test.socket
45 cat <<'EOL' >$U
46 [Unit]
47 Description=Test socket
48 [Socket]
49 Accept=yes
50 ListenStream=/run/test.socket
51 SocketGroup=adm
52 SocketMode=0660
53 EOL
54
55 cat <<'EOL' > /run/systemd/system/test@.service
56 [Unit]
57 Description=Test service
58 [Service]
59 StandardInput=socket
60 ExecStart=/bin/sh -x -c cat
61 EOL
62
63 systemctl start test.socket
64 systemctl is-active test.socket
65 [[ "$(stat --format='%G' /run/test.socket)" == adm ]]
66 echo A | nc -w1 -U /run/test.socket
67
68 mv $U ${U}.disabled
69 systemctl daemon-reload
70 systemctl is-active test.socket
71 [[ "$(stat --format='%G' /run/test.socket)" == adm ]]
72 echo B | nc -w1 -U /run/test.socket && exit 1
73
74 mv ${U}.disabled $U
75 systemctl daemon-reload
76 systemctl is-active test.socket
77 echo C | nc -w1 -U /run/test.socket && exit 1
78 [[ "$(stat --format='%G' /run/test.socket)" == adm ]]
79
80 systemctl restart test.socket
81 systemctl is-active test.socket
82 echo D | nc -w1 -U /run/test.socket
83 [[ "$(stat --format='%G' /run/test.socket)" == adm ]]
84
85
86 touch /testok
87 EOF
88
89 chmod 0755 $initdir/test-socket-group.sh
90 setup_testsuite
91 )
92
93 setup_nspawn_root
94 }
95
96 do_test "$@"