chiark / gitweb /
test: remove duplicated code
[elogind.git] / test / TEST-03-JOBS / 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="Job-related tests"
5
6 . $TEST_BASE_DIR/test-functions
7
8 # Uncomment this to debug failures
9 #DEBUGFAIL="systemd.unit=multi-user.target"
10
11 check_result_qemu() {
12     ret=1
13     mkdir -p $TESTDIR/root
14     mount ${LOOPDEV}p1 $TESTDIR/root
15     [[ -e $TESTDIR/root/testok ]] && ret=0
16     [[ -f $TESTDIR/root/failed ]] && cp -a $TESTDIR/root/failed $TESTDIR
17     cp -a $TESTDIR/root/var/log/journal $TESTDIR
18     umount $TESTDIR/root
19     [[ -f $TESTDIR/failed ]] && cat $TESTDIR/failed
20     ls -l $TESTDIR/journal/*/*.journal
21     test -s $TESTDIR/failed && ret=$(($ret+1))
22     return $ret
23 }
24
25 test_run() {
26     if check_qemu ; then
27         run_qemu
28         check_result_qemu || return 1
29     else
30         dwarn "can't run qemu-kvm, skipping"
31     fi
32     if check_nspawn; then
33         run_nspawn
34         check_result_nspawn || return 1
35     else
36         dwarn "can't run systemd-nspawn, skipping"
37     fi
38     return 0
39 }
40
41 test_setup() {
42     create_empty_image
43     mkdir -p $TESTDIR/root
44     mount ${LOOPDEV}p1 $TESTDIR/root
45
46     # Create what will eventually be our root filesystem onto an overlay
47     (
48         LOG_LEVEL=5
49         eval $(udevadm info --export --query=env --name=${LOOPDEV}p2)
50
51         setup_basic_environment
52
53         # setup the testsuite service
54         cat >$initdir/etc/systemd/system/testsuite.service <<EOF
55 [Unit]
56 Description=Testsuite service
57 After=multi-user.target
58
59 [Service]
60 ExecStart=/test-jobs.sh
61 Type=oneshot
62 EOF
63
64         # copy the units used by this test
65         cp $TEST_BASE_DIR/{hello.service,sleep.service,hello-after-sleep.target,unstoppable.service} \
66             $initdir/etc/systemd/system
67         cp test-jobs.sh $initdir/
68
69         setup_testsuite
70     )
71     setup_nspawn_root
72
73     ddebug "umount $TESTDIR/root"
74     umount $TESTDIR/root
75 }
76
77 test_cleanup() {
78     umount $TESTDIR/root 2>/dev/null
79     [[ $LOOPDEV ]] && losetup -d $LOOPDEV
80     return 0
81 }
82
83 do_test "$@"