chiark / gitweb /
tests: do not use systemctl status --failed
[elogind.git] / test / TEST-01-BASIC / 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="Basic systemd setup"
5
6 . $TEST_BASE_DIR/test-functions
7
8 check_result_qemu() {
9     ret=1
10     mkdir -p $TESTDIR/root
11     mount ${LOOPDEV}p1 $TESTDIR/root
12     [[ -e $TESTDIR/root/testok ]] && ret=0
13     [[ -f $TESTDIR/root/failed ]] && cp -a $TESTDIR/root/failed $TESTDIR
14     [[ -f $TESTDIR/root/var/log/journal ]] && cp -a $TESTDIR/root/var/log/journal $TESTDIR
15     umount $TESTDIR/root
16     [[ -f $TESTDIR/failed ]] && cat $TESTDIR/failed
17     ls -l $TESTDIR/journal/*/*.journal
18     test -s $TESTDIR/failed && ret=$(($ret+1))
19     return $ret
20 }
21
22 test_run() {
23     if run_qemu; then
24         check_result_qemu || return 1
25     else
26         dwarn "can't run QEMU, skipping"
27     fi
28     if check_nspawn; then
29         run_nspawn
30         check_result_nspawn || return 1
31     else
32         dwarn "can't run systemd-nspawn, skipping"
33     fi
34     return 0
35 }
36
37 test_setup() {
38     create_empty_image
39     mkdir -p $TESTDIR/root
40     mount ${LOOPDEV}p1 $TESTDIR/root
41
42     # Create what will eventually be our root filesystem onto an overlay
43     (
44         LOG_LEVEL=5
45         eval $(udevadm info --export --query=env --name=${LOOPDEV}p2)
46
47         setup_basic_environment
48
49         # setup the testsuite service
50         cat >$initdir/etc/systemd/system/testsuite.service <<EOF
51 [Unit]
52 Description=Testsuite service
53 After=multi-user.target
54
55 [Service]
56 ExecStart=/bin/bash -c 'set -x; systemctl --failed --no-legend --no-pager > /failed ; echo OK > /testok; while : ;do echo "testsuite service waiting for journal to move to /var/log/journal" > /dev/console ; for i in /var/log/journal/*;do [ -d "\$i" ] && echo "\$i" && break 2; done; sleep 1; done; sleep 1; exit 0;'
57 Type=oneshot
58 EOF
59
60         setup_testsuite
61     )
62     setup_nspawn_root
63
64     ddebug "umount $TESTDIR/root"
65     umount $TESTDIR/root
66 }
67
68 test_cleanup() {
69     umount $TESTDIR/root 2>/dev/null
70     [[ $LOOPDEV ]] && losetup -d $LOOPDEV
71     return 0
72 }
73
74 do_test "$@"