]> git.ipfire.org Git - thirdparty/systemd.git/blame - test/TEST-02-CRYPTSETUP/test.sh
test: add function to reduce copied setup boilerplate
[thirdparty/systemd.git] / test / TEST-02-CRYPTSETUP / test.sh
CommitLineData
71dc3ed1 1#!/bin/bash
818567fc 2set -e
71dc3ed1 3TEST_DESCRIPTION="cryptsetup systemd setup"
054ee249 4TEST_NO_NSPAWN=1
71dc3ed1 5
fff87a35 6. $TEST_BASE_DIR/test-functions
71dc3ed1 7
889a9042 8check_result_qemu() {
71dc3ed1 9 ret=1
0036ce06
DS
10 mkdir -p $initdir
11 mount ${LOOPDEV}p1 $initdir
12 [[ -e $initdir/testok ]] && ret=0
13 [[ -f $initdir/failed ]] && cp -a $initdir/failed $TESTDIR
71dc3ed1 14 cryptsetup luksOpen ${LOOPDEV}p2 varcrypt <$TESTDIR/keyfile
0036ce06
DS
15 mount /dev/mapper/varcrypt $initdir/var
16 cp -a $initdir/var/log/journal $TESTDIR
17 umount $initdir/var
18 umount $initdir
71dc3ed1 19 cryptsetup luksClose /dev/mapper/varcrypt
889a9042 20 [[ -f $TESTDIR/failed ]] && cat $TESTDIR/failed
71dc3ed1
LP
21 ls -l $TESTDIR/journal/*/*.journal
22 test -s $TESTDIR/failed && ret=$(($ret+1))
23 return $ret
24}
25
26
71dc3ed1 27test_setup() {
ec4cab49 28 create_empty_image_rootdir
71dc3ed1 29 echo -n test >$TESTDIR/keyfile
5b69d297 30 cryptsetup -q luksFormat --pbkdf pbkdf2 --pbkdf-force-iterations 1000 ${LOOPDEV}p2 $TESTDIR/keyfile
71dc3ed1 31 cryptsetup luksOpen ${LOOPDEV}p2 varcrypt <$TESTDIR/keyfile
4b742c8a 32 mkfs.ext4 -L var /dev/mapper/varcrypt
0036ce06
DS
33 mkdir -p $initdir/var
34 mount /dev/mapper/varcrypt $initdir/var
71dc3ed1
LP
35
36 # Create what will eventually be our root filesystem onto an overlay
37 (
38 LOG_LEVEL=5
71dc3ed1
LP
39 eval $(udevadm info --export --query=env --name=/dev/mapper/varcrypt)
40 eval $(udevadm info --export --query=env --name=${LOOPDEV}p2)
41
889a9042 42 setup_basic_environment
51fa8591 43 mask_supporting_services
056ae881 44
71dc3ed1
LP
45 # setup the testsuite service
46 cat >$initdir/etc/systemd/system/testsuite.service <<EOF
47[Unit]
48Description=Testsuite service
49After=multi-user.target
50
51[Service]
ed119049 52ExecStart=/bin/sh -x -c 'systemctl --state=failed --no-legend --no-pager > /failed ; echo OK > /testok'
71dc3ed1
LP
53Type=oneshot
54EOF
c90feab4 55
889a9042 56 setup_testsuite
71dc3ed1 57
889a9042 58 install_dmevent
1a6dc653 59 generate_module_dependencies
889a9042
RC
60 cat >$initdir/etc/crypttab <<EOF
61$DM_NAME UUID=$ID_FS_UUID /etc/varkey
71dc3ed1 62EOF
889a9042
RC
63 echo -n test > $initdir/etc/varkey
64 cat $initdir/etc/crypttab | ddebug
71dc3ed1 65
889a9042 66 cat >>$initdir/etc/fstab <<EOF
4b742c8a 67/dev/mapper/varcrypt /var ext4 defaults 0 1
889a9042 68EOF
cc469c3d 69 )
ec4cab49 70}
71dc3ed1 71
ec4cab49 72cleanup_root_var() {
0036ce06
DS
73 ddebug "umount $initdir/var"
74 mountpoint $initdir/var && umount $initdir/var
ec4cab49 75 [[ -b /dev/mapper/varcrypt ]] && cryptsetup luksClose /dev/mapper/varcrypt
71dc3ed1
LP
76}
77
78test_cleanup() {
f85bc044 79 # ignore errors, so cleanup can continue
65dd488f 80 cleanup_root_var || :
ec4cab49
DS
81 _test_cleanup
82}
83
84test_setup_cleanup() {
85 cleanup_root_var
86 _test_setup_cleanup
71dc3ed1
LP
87}
88
71dc3ed1 89do_test "$@"