]>
Commit | Line | Data |
---|---|---|
aa27b158 MP |
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 | |
f5e65279 | 4 | set -e |
aa27b158 | 5 | TEST_DESCRIPTION="https://github.com/systemd/systemd/issues/3171" |
f5e65279 | 6 | TEST_NO_QEMU=1 |
aa27b158 MP |
7 | |
8 | . $TEST_BASE_DIR/test-functions | |
9 | ||
aa27b158 MP |
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 | ||
6e866b33 MB |
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 | ||
aa27b158 MP |
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 | ||
aa27b158 MP |
42 | cat >$initdir/test-socket-group.sh <<'EOF' |
43 | #!/bin/bash | |
44 | set -x | |
45 | set -e | |
46 | set -o pipefail | |
47 | ||
48 | U=/run/systemd/system/test.socket | |
49 | cat <<'EOL' >$U | |
50 | [Unit] | |
51 | Description=Test socket | |
52 | [Socket] | |
53 | Accept=yes | |
54 | ListenStream=/run/test.socket | |
55 | SocketGroup=adm | |
56 | SocketMode=0660 | |
57 | EOL | |
58 | ||
59 | cat <<'EOL' > /run/systemd/system/test@.service | |
60 | [Unit] | |
61 | Description=Test service | |
62 | [Service] | |
63 | StandardInput=socket | |
64 | ExecStart=/bin/sh -x -c cat | |
65 | EOL | |
66 | ||
67 | systemctl start test.socket | |
68 | systemctl is-active test.socket | |
69 | [[ "$(stat --format='%G' /run/test.socket)" == adm ]] | |
81c58355 | 70 | echo A | nc -w1 -U /run/test.socket |
aa27b158 MP |
71 | |
72 | mv $U ${U}.disabled | |
73 | systemctl daemon-reload | |
74 | systemctl is-active test.socket | |
75 | [[ "$(stat --format='%G' /run/test.socket)" == adm ]] | |
81c58355 | 76 | echo B | nc -w1 -U /run/test.socket && exit 1 |
aa27b158 MP |
77 | |
78 | mv ${U}.disabled $U | |
79 | systemctl daemon-reload | |
80 | systemctl is-active test.socket | |
81c58355 | 81 | echo C | nc -w1 -U /run/test.socket && exit 1 |
aa27b158 MP |
82 | [[ "$(stat --format='%G' /run/test.socket)" == adm ]] |
83 | ||
84 | systemctl restart test.socket | |
85 | systemctl is-active test.socket | |
81c58355 | 86 | echo D | nc -w1 -U /run/test.socket |
aa27b158 MP |
87 | [[ "$(stat --format='%G' /run/test.socket)" == adm ]] |
88 | ||
89 | ||
90 | touch /testok | |
91 | EOF | |
92 | ||
93 | chmod 0755 $initdir/test-socket-group.sh | |
94 | setup_testsuite | |
95 | ) || return 1 | |
96 | ||
97 | setup_nspawn_root | |
98 | ||
99 | ddebug "umount $TESTDIR/root" | |
100 | umount $TESTDIR/root | |
101 | } | |
102 | ||
aa27b158 | 103 | do_test "$@" |