]>
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 | ||
23 | # setup the testsuite service | |
24 | cat >$initdir/etc/systemd/system/testsuite.service <<EOF | |
25 | [Unit] | |
26 | Description=Testsuite service | |
27 | After=multi-user.target | |
28 | ||
29 | [Service] | |
30 | ExecStart=/test-socket-group.sh | |
31 | Type=oneshot | |
32 | EOF | |
33 | ||
34 | ||
35 | cat >$initdir/test-socket-group.sh <<'EOF' | |
36 | #!/bin/bash | |
37 | set -x | |
38 | set -e | |
39 | set -o pipefail | |
40 | ||
41 | U=/run/systemd/system/test.socket | |
42 | cat <<'EOL' >$U | |
43 | [Unit] | |
44 | Description=Test socket | |
45 | [Socket] | |
46 | Accept=yes | |
47 | ListenStream=/run/test.socket | |
48 | SocketGroup=adm | |
49 | SocketMode=0660 | |
50 | EOL | |
51 | ||
52 | cat <<'EOL' > /run/systemd/system/test@.service | |
53 | [Unit] | |
54 | Description=Test service | |
55 | [Service] | |
56 | StandardInput=socket | |
57 | ExecStart=/bin/sh -x -c cat | |
58 | EOL | |
59 | ||
60 | systemctl start test.socket | |
61 | systemctl is-active test.socket | |
62 | [[ "$(stat --format='%G' /run/test.socket)" == adm ]] | |
c618423a | 63 | echo A | nc -w1 -U /run/test.socket |
03ae6f7d EV |
64 | |
65 | mv $U ${U}.disabled | |
66 | systemctl daemon-reload | |
67 | systemctl is-active test.socket | |
68 | [[ "$(stat --format='%G' /run/test.socket)" == adm ]] | |
c618423a | 69 | echo B | nc -w1 -U /run/test.socket && exit 1 |
03ae6f7d EV |
70 | |
71 | mv ${U}.disabled $U | |
72 | systemctl daemon-reload | |
73 | systemctl is-active test.socket | |
c618423a | 74 | echo C | nc -w1 -U /run/test.socket && exit 1 |
03ae6f7d EV |
75 | [[ "$(stat --format='%G' /run/test.socket)" == adm ]] |
76 | ||
77 | systemctl restart test.socket | |
78 | systemctl is-active test.socket | |
c618423a | 79 | echo D | nc -w1 -U /run/test.socket |
03ae6f7d EV |
80 | [[ "$(stat --format='%G' /run/test.socket)" == adm ]] |
81 | ||
82 | ||
83 | touch /testok | |
84 | EOF | |
85 | ||
86 | chmod 0755 $initdir/test-socket-group.sh | |
87 | setup_testsuite | |
88 | ) || return 1 | |
89 | ||
90 | setup_nspawn_root | |
91 | ||
92 | ddebug "umount $TESTDIR/root" | |
93 | umount $TESTDIR/root | |
94 | } | |
95 | ||
03ae6f7d | 96 | do_test "$@" |