]> git.ipfire.org Git - thirdparty/systemd.git/blob - test/TEST-11-ISSUE-3166/test.sh
Merge pull request #3111 from poettering/nspawn-remove-veth
[thirdparty/systemd.git] / test / TEST-11-ISSUE-3166 / 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 TEST_DESCRIPTION="https://github.com/systemd/systemd/issues/3166"
5
6 . $TEST_BASE_DIR/test-functions
7 SKIP_INITRD=yes
8
9 check_result_qemu() {
10 ret=1
11 mkdir -p $TESTDIR/root
12 mount ${LOOPDEV}p1 $TESTDIR/root
13 [[ -e $TESTDIR/root/testok ]] && ret=0
14 [[ -f $TESTDIR/root/failed ]] && cp -a $TESTDIR/root/failed $TESTDIR
15 cp -a $TESTDIR/root/var/log/journal $TESTDIR
16 umount $TESTDIR/root
17 [[ -f $TESTDIR/failed ]] && cat $TESTDIR/failed
18 ls -l $TESTDIR/journal/*/*.journal
19 test -s $TESTDIR/failed && ret=$(($ret+1))
20 return $ret
21 }
22
23 test_run() {
24 run_qemu || return 1
25 check_result_qemu || return 1
26 return 0
27 }
28
29 test_setup() {
30 create_empty_image
31 mkdir -p $TESTDIR/root
32 mount ${LOOPDEV}p1 $TESTDIR/root
33
34 # Create what will eventually be our root filesystem onto an overlay
35 (
36 LOG_LEVEL=5
37 eval $(udevadm info --export --query=env --name=${LOOPDEV}p2)
38
39 setup_basic_environment
40 dracut_install false touch
41
42 # setup the testsuite service
43 cat >$initdir/etc/systemd/system/testsuite.service <<EOF
44 [Unit]
45 Description=Testsuite service
46 After=multi-user.target
47
48 [Service]
49 ExecStart=/test-fail-on-restart.sh
50 Type=oneshot
51 EOF
52
53 cat >$initdir/etc/systemd/system/fail-on-restart.service <<EOF
54 [Unit]
55 Description=Fail on restart
56
57 [Service]
58 Type=simple
59 ExecStart=/bin/false
60 Restart=always
61 EOF
62
63
64 cat >$initdir/test-fail-on-restart.sh <<'EOF'
65 #!/bin/bash -x
66
67 systemctl start fail-on-restart.service
68 active_state=$(systemctl show --property ActiveState fail-on-restart.service)
69 while [[ "$active_state" == "ActiveState=activating" || "$active_state" == "ActiveState=active" ]]; do
70 sleep 1
71 active_state=$(systemctl show --property ActiveState fail-on-restart.service)
72 done
73 systemctl is-failed fail-on-restart.service || exit 1
74 touch /testok
75 EOF
76
77 chmod 0755 $initdir/test-fail-on-restart.sh
78 setup_testsuite
79 ) || return 1
80
81 ddebug "umount $TESTDIR/root"
82 umount $TESTDIR/root
83 }
84
85 test_cleanup() {
86 umount $TESTDIR/root 2>/dev/null
87 [[ $LOOPDEV ]] && losetup -d $LOOPDEV
88 return 0
89 }
90
91 do_test "$@"