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