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