]> git.proxmox.com Git - systemd.git/blob - test/TEST-12-ISSUE-3171/test.sh
New upstream version 240
[systemd.git] / test / TEST-12-ISSUE-3171 / test.sh
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
4 set -e
5 TEST_DESCRIPTION="https://github.com/systemd/systemd/issues/3171"
6 TEST_NO_QEMU=1
7
8 . $TEST_BASE_DIR/test-functions
9
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 # 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
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 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 ]]
70 echo A | nc -w1 -U /run/test.socket
71
72 mv $U ${U}.disabled
73 systemctl daemon-reload
74 systemctl is-active test.socket
75 [[ "$(stat --format='%G' /run/test.socket)" == adm ]]
76 echo B | nc -w1 -U /run/test.socket && exit 1
77
78 mv ${U}.disabled $U
79 systemctl daemon-reload
80 systemctl is-active test.socket
81 echo C | nc -w1 -U /run/test.socket && exit 1
82 [[ "$(stat --format='%G' /run/test.socket)" == adm ]]
83
84 systemctl restart test.socket
85 systemctl is-active test.socket
86 echo D | nc -w1 -U /run/test.socket
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
103 do_test "$@"