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