]> git.ipfire.org Git - thirdparty/systemd.git/blame - test/TEST-12-ISSUE-3171/test.sh
test: mask several unnecessary services
[thirdparty/systemd.git] / test / TEST-12-ISSUE-3171 / test.sh
CommitLineData
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 4set -e
03ae6f7d 5TEST_DESCRIPTION="https://github.com/systemd/systemd/issues/3171"
054ee249 6TEST_NO_QEMU=1
03ae6f7d
EV
7
8. $TEST_BASE_DIR/test-functions
9
03ae6f7d
EV
10test_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
056ae881
YW
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
03ae6f7d
EV
31 # setup the testsuite service
32 cat >$initdir/etc/systemd/system/testsuite.service <<EOF
33[Unit]
34Description=Testsuite service
35After=multi-user.target
36
37[Service]
38ExecStart=/test-socket-group.sh
39Type=oneshot
40EOF
41
42
43 cat >$initdir/test-socket-group.sh <<'EOF'
44#!/bin/bash
45set -x
46set -e
47set -o pipefail
48
49U=/run/systemd/system/test.socket
50cat <<'EOL' >$U
51[Unit]
52Description=Test socket
53[Socket]
54Accept=yes
55ListenStream=/run/test.socket
56SocketGroup=adm
57SocketMode=0660
58EOL
59
60cat <<'EOL' > /run/systemd/system/test@.service
61[Unit]
62Description=Test service
63[Service]
64StandardInput=socket
65ExecStart=/bin/sh -x -c cat
66EOL
67
68systemctl start test.socket
69systemctl is-active test.socket
70[[ "$(stat --format='%G' /run/test.socket)" == adm ]]
c618423a 71echo A | nc -w1 -U /run/test.socket
03ae6f7d
EV
72
73mv $U ${U}.disabled
74systemctl daemon-reload
75systemctl is-active test.socket
76[[ "$(stat --format='%G' /run/test.socket)" == adm ]]
c618423a 77echo B | nc -w1 -U /run/test.socket && exit 1
03ae6f7d
EV
78
79mv ${U}.disabled $U
80systemctl daemon-reload
81systemctl is-active test.socket
c618423a 82echo C | nc -w1 -U /run/test.socket && exit 1
03ae6f7d
EV
83[[ "$(stat --format='%G' /run/test.socket)" == adm ]]
84
85systemctl restart test.socket
86systemctl is-active test.socket
c618423a 87echo D | nc -w1 -U /run/test.socket
03ae6f7d
EV
88[[ "$(stat --format='%G' /run/test.socket)" == adm ]]
89
90
91touch /testok
92EOF
93
94 chmod 0755 $initdir/test-socket-group.sh
95 setup_testsuite
96 ) || return 1
97
98 setup_nspawn_root
99
100 ddebug "umount $TESTDIR/root"
101 umount $TESTDIR/root
102}
103
03ae6f7d 104do_test "$@"