# ex: ts=8 sw=4 sts=4 et filetype=sh
TEST_DESCRIPTION="Basic systemd setup"
-KVERSION=${KVERSION-$(uname -r)}
-KERNEL_VER=$(uname -r)
+. $TEST_BASE_DIR/test-functions
# Uncomment this to debug failures
#DEBUGFAIL="systemd.unit=multi-user.target"
mount ${LOOPDEV}p1 $TESTDIR/root
[[ -e $TESTDIR/root/testok ]] && ret=0
cp -a $TESTDIR/root/failed $TESTDIR
- cryptsetup luksOpen ${LOOPDEV}p2 varcrypt <$TESTDIR/keyfile
- mount /dev/mapper/varcrypt $TESTDIR/root/var
cp -a $TESTDIR/root/var/log/journal $TESTDIR
- umount $TESTDIR/root/var
umount $TESTDIR/root
- cryptsetup luksClose /dev/mapper/varcrypt
cat $TESTDIR/failed
ls -l $TESTDIR/journal/*/*.journal
test -s $TESTDIR/failed && ret=$(($ret+1))
run_nspawn() {
- systemd-nspawn -b -D $TESTDIR/nspawn-root --capability=CAP_AUDIT_CONTROL,CAP_AUDIT_WRITE /usr/lib/systemd/systemd
+ ../../systemd-nspawn -b -D $TESTDIR/nspawn-root /usr/lib/systemd/systemd
ret=1
[[ -e $TESTDIR/nspawn-root/testok ]] && ret=0
- cp -a $TESTDIR/nspawn-root/var/log/journal $TESTDIR
cp -a $TESTDIR/nspawn-root/failed $TESTDIR
+ cp -a $TESTDIR/nspawn-root/var/log/journal $TESTDIR
cat $TESTDIR/failed
ls -l $TESTDIR/journal/*/*.journal
test -s $TESTDIR/failed && ret=$(($ret+1))
mkfs.ext3 -L systemd ${LOOPDEV}p1
echo -n test >$TESTDIR/keyfile
- cryptsetup -q luksFormat ${LOOPDEV}p2 $TESTDIR/keyfile
- cryptsetup luksOpen ${LOOPDEV}p2 varcrypt <$TESTDIR/keyfile
- mkfs.ext3 -L var /dev/mapper/varcrypt
mkdir -p $TESTDIR/root
mount ${LOOPDEV}p1 $TESTDIR/root
mkdir -p $TESTDIR/root/run
- mkdir -p $TESTDIR/root/var
- mount /dev/mapper/varcrypt $TESTDIR/root/var
# Create what will eventually be our root filesystem onto an overlay
(
inst_libs $i
done
- # activate kmsg import
- echo 'ImportKernel=yes' >> $initdir/etc/systemd/journald.conf
-
# make a journal directory
mkdir -p $initdir/var/log/journal
# set the hostname
echo systemd-testsuite > $initdir/etc/hostname
- eval $(udevadm info --export --query=env --name=/dev/mapper/varcrypt)
eval $(udevadm info --export --query=env --name=${LOOPDEV}p2)
- cat >$initdir/etc/crypttab <<EOF
-$DM_NAME UUID=$ID_FS_UUID /etc/varkey
-EOF
- echo -n test > $initdir/etc/varkey
- cat $initdir/etc/crypttab | ddebug
-
cat >$initdir/etc/fstab <<EOF
LABEL=systemd / ext3 rw 0 1
-/dev/mapper/varcrypt /var ext3 defaults 0 1
EOF
- # setup the testsuite target
- cat >$initdir/etc/systemd/system/testsuite.target <<EOF
-[Unit]
-Description=Testsuite target
-Requires=multi-user.target
-After=multi-user.target
-Conflicts=rescue.target
-AllowIsolate=yes
-EOF
+ # setup the testsuite target and the test ending service
+ cp $TEST_BASE_DIR/{testsuite.target,end.service} $initdir/etc/systemd/system/
# setup the testsuite service
cat >$initdir/etc/systemd/system/testsuite.service <<EOF
After=multi-user.target
[Service]
-ExecStart=/bin/bash -c 'set -x; systemctl --failed --no-legend --no-pager > /failed ; echo OK > /testok; while : ;do systemd-cat echo "testsuite service waiting for /var/log/journal" ; 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;'
-ExecStopPost=/usr/bin/systemctl poweroff
+ExecStart=/bin/bash -c 'set -x; ( systemctl --failed --no-legend --no-pager; systemctl status --failed ) > /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
+
mkdir -p $initdir/etc/systemd/system/testsuite.target.wants
ln -fs ../testsuite.service $initdir/etc/systemd/system/testsuite.target.wants/testsuite.service
+ ln -fs ../end.service $initdir/etc/systemd/system/testsuite.target.wants/end.service
# make the testsuite the default target
ln -fs testsuite.target $initdir/etc/systemd/system/default.target
login sushell sulogin gzip sleep echo mount umount cryptsetup
dracut_install dmsetup modprobe
- instmods dm_crypt =crypto
-
- type -P dmeventd >/dev/null && dracut_install dmeventd
-
- inst_libdir_file "libdevmapper-event.so*"
-
- inst_rules 10-dm.rules 13-dm-disk.rules 95-dm-notify.rules
-
# install libnss_files for login
inst_libdir_file "libnss_files*"
# softlink mtab
ln -fs /proc/self/mounts $initdir/etc/mtab
- # install any Exec's from the service files
+ # install any Execs from the service files
egrep -ho '^Exec[^ ]*=[^ ]+' $initdir/lib/systemd/system/*.service \
| while read i; do
i=${i##Exec*=}; i=${i##-}
# install ld.so.conf* and run ldconfig
cp -a /etc/ld.so.conf* $initdir/etc
ldconfig -r "$initdir"
- ddebug "Strip binaeries"
- find "$initdir" -perm +111 -type f | xargs strip --strip-unneeded | ddebug
+ ddebug "Strip binaries"
+ find "$initdir" -executable -not -path '*/lib/modules/*.ko' -type f | xargs strip --strip-unneeded | ddebug
# copy depmod files
inst /lib/modules/$KERNEL_VER/modules.order
ddebug "cp -ar $TESTDIR/root $TESTDIR/nspawn-root"
cp -ar $TESTDIR/root $TESTDIR/nspawn-root
# we don't mount in the nspawn root
- rm -fr $TESTDIR/nspawn-root/etc/fstab
+ rm -f $TESTDIR/nspawn-root/etc/fstab
- ddebug "umount $TESTDIR/root/var"
- umount $TESTDIR/root/var
- cryptsetup luksClose /dev/mapper/varcrypt
ddebug "umount $TESTDIR/root"
umount $TESTDIR/root
}
test_cleanup() {
- umount $TESTDIR/root/var 2>/dev/null
- [[ -b /dev/mapper/varcrypt ]] && cryptsetup luksClose /dev/mapper/varcrypt
umount $TESTDIR/root 2>/dev/null
[[ $LOOPDEV ]] && losetup -d $LOOPDEV
return 0
}
-. $TEST_BASE_DIR/test-functions
do_test "$@"