]> git.ipfire.org Git - thirdparty/systemd.git/blame - test/TEST-12-ISSUE-3171/test.sh
test: add create_empty_image_rootdir() to simplify testcase setup
[thirdparty/systemd.git] / test / TEST-12-ISSUE-3171 / test.sh
CommitLineData
03ae6f7d 1#!/bin/bash
818567fc 2set -e
03ae6f7d 3TEST_DESCRIPTION="https://github.com/systemd/systemd/issues/3171"
054ee249 4TEST_NO_QEMU=1
03ae6f7d
EV
5
6. $TEST_BASE_DIR/test-functions
7
03ae6f7d 8test_setup() {
ec4cab49 9 create_empty_image_rootdir
03ae6f7d
EV
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 dracut_install cat mv stat nc
18
056ae881
YW
19 # mask some services that we do not want to run in these tests
20 ln -fs /dev/null $initdir/etc/systemd/system/systemd-hwdb-update.service
21 ln -fs /dev/null $initdir/etc/systemd/system/systemd-journal-catalog-update.service
22 ln -fs /dev/null $initdir/etc/systemd/system/systemd-networkd.service
23 ln -fs /dev/null $initdir/etc/systemd/system/systemd-networkd.socket
24 ln -fs /dev/null $initdir/etc/systemd/system/systemd-resolved.service
25 ln -fs /dev/null $initdir/etc/systemd/system/systemd-machined.service
26
03ae6f7d
EV
27 # setup the testsuite service
28 cat >$initdir/etc/systemd/system/testsuite.service <<EOF
29[Unit]
30Description=Testsuite service
31After=multi-user.target
32
33[Service]
34ExecStart=/test-socket-group.sh
35Type=oneshot
36EOF
37
03ae6f7d
EV
38 cat >$initdir/test-socket-group.sh <<'EOF'
39#!/bin/bash
40set -x
41set -e
42set -o pipefail
43
44U=/run/systemd/system/test.socket
45cat <<'EOL' >$U
46[Unit]
47Description=Test socket
48[Socket]
49Accept=yes
50ListenStream=/run/test.socket
51SocketGroup=adm
52SocketMode=0660
53EOL
54
55cat <<'EOL' > /run/systemd/system/test@.service
56[Unit]
57Description=Test service
58[Service]
59StandardInput=socket
60ExecStart=/bin/sh -x -c cat
61EOL
62
63systemctl start test.socket
64systemctl is-active test.socket
65[[ "$(stat --format='%G' /run/test.socket)" == adm ]]
c618423a 66echo A | nc -w1 -U /run/test.socket
03ae6f7d
EV
67
68mv $U ${U}.disabled
69systemctl daemon-reload
70systemctl is-active test.socket
71[[ "$(stat --format='%G' /run/test.socket)" == adm ]]
c618423a 72echo B | nc -w1 -U /run/test.socket && exit 1
03ae6f7d
EV
73
74mv ${U}.disabled $U
75systemctl daemon-reload
76systemctl is-active test.socket
c618423a 77echo C | nc -w1 -U /run/test.socket && exit 1
03ae6f7d
EV
78[[ "$(stat --format='%G' /run/test.socket)" == adm ]]
79
80systemctl restart test.socket
81systemctl is-active test.socket
c618423a 82echo D | nc -w1 -U /run/test.socket
03ae6f7d
EV
83[[ "$(stat --format='%G' /run/test.socket)" == adm ]]
84
85
86touch /testok
87EOF
88
89 chmod 0755 $initdir/test-socket-group.sh
90 setup_testsuite
cc469c3d 91 )
03ae6f7d
EV
92
93 setup_nspawn_root
03ae6f7d
EV
94}
95
03ae6f7d 96do_test "$@"