#!/bin/bash # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- # ex: ts=8 sw=4 sts=4 et filetype=sh TEST_DESCRIPTION="Basic systemd setup" . $TEST_BASE_DIR/test-functions check_result_qemu() { ret=1 mkdir -p $TESTDIR/root mount ${LOOPDEV}p1 $TESTDIR/root [[ -e $TESTDIR/root/testok ]] && ret=0 [[ -f $TESTDIR/root/failed ]] && cp -a $TESTDIR/root/failed $TESTDIR [[ -f $TESTDIR/root/var/log/journal ]] && cp -a $TESTDIR/root/var/log/journal $TESTDIR umount $TESTDIR/root [[ -f $TESTDIR/failed ]] && cat $TESTDIR/failed ls -l $TESTDIR/journal/*/*.journal test -s $TESTDIR/failed && ret=$(($ret+1)) return $ret } test_run() { if run_qemu; then check_result_qemu || return 1 else dwarn "can't run QEMU, skipping" fi if check_nspawn; then run_nspawn check_result_nspawn || return 1 else dwarn "can't run systemd-nspawn, skipping" fi return 0 } test_setup() { create_empty_image mkdir -p $TESTDIR/root mount ${LOOPDEV}p1 $TESTDIR/root # Create what will eventually be our root filesystem onto an overlay ( LOG_LEVEL=5 eval $(udevadm info --export --query=env --name=${LOOPDEV}p2) setup_basic_environment # setup the testsuite service cat >$initdir/etc/systemd/system/testsuite.service <<EOF [Unit] Description=Testsuite service After=multi-user.target [Service] 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;' Type=oneshot EOF setup_testsuite ) setup_nspawn_root ddebug "umount $TESTDIR/root" umount $TESTDIR/root } test_cleanup() { umount $TESTDIR/root 2>/dev/null [[ $LOOPDEV ]] && losetup -d $LOOPDEV return 0 } do_test "$@"