]> git.ipfire.org Git - thirdparty/util-linux.git/blob - tests/ts/libmount/context-utab-py
a2e821fe6c11699cceb57cebffbd1c81c0e0583a
[thirdparty/util-linux.git] / tests / ts / libmount / context-utab-py
1 #!/bin/bash
2
3 # Copyright (C) 2010 Karel Zak <kzak@redhat.com>
4 TS_TOPDIR="${0%/*}/../.."
5 TS_DESC="context-py (utab)"
6
7 . $TS_TOPDIR/functions.sh
8 ts_init "$*"
9
10 ts_check_test_command "$TS_CMD_FDISK"
11 ts_check_test_command "$TS_CMD_FINDMNT"
12 ts_check_test_command "$TS_CMD_MOUNT"
13 ts_check_test_command "$TS_CMD_UMOUNT"
14 ts_check_test_command "$TS_CMD_WIPEFS"
15 ts_check_test_command "$TS_CMD_UUIDGEN"
16
17 ts_skip_nonroot
18 ts_check_prog "mkfs.ext4"
19
20 ts_init_py libmount
21
22 if [ "$TS_ENABLE_ASAN" == "yes" ]; then
23 TS_KNOWN_FAIL="yes"
24 fi
25
26 TESTPROG="$TS_HELPER_PYLIBMOUNT_CONTEXT"
27 [ -x $TESTPROG ] || ts_die "test script missing"
28
29 LABEL=libmount-test
30 UUID=$($TS_CMD_UUIDGEN)
31 MOUNTPOINT="$TS_MOUNTPOINT"
32
33 # set global variable TS_DEVICE
34 ts_scsi_debug_init dev_size_mb=257
35 DEVNAME=$(basename $TS_DEVICE)
36
37 ts_log "Create partitions"
38 $TS_CMD_FDISK ${TS_DEVICE} &> /dev/null <<EOF
39 n
40 p
41 1
42
43
44 w
45 q
46 EOF
47
48 DEVICE="${TS_DEVICE}1"
49
50 udevadm settle
51
52 grep -q " $DEVNAME\$" /proc/partitions
53 if [ $? -ne 0 ]; then
54 ts_skip "no partition!"
55 fi
56
57 ts_log "Create filesystem"
58 mkfs.ext4 -L "$LABEL" -U "$UUID" $DEVICE &> /dev/null
59
60 ts_log "Do tests..."
61
62 export LIBMOUNT_MTAB=$TS_OUTPUT.mtab
63 rm -f $LIBMOUNT_MTAB
64 ln -s /proc/mounts $LIBMOUNT_MTAB
65
66 export LIBMOUNT_UTAB=$TS_OUTPUT.utab
67 rm -f $LIBMOUNT_UTAB
68 > $LIBMOUNT_UTAB
69
70 udevadm settle
71
72 ts_init_subtest "mount-by-devname"
73 mkdir -p $MOUNTPOINT &> /dev/null
74 $PYTHON $TESTPROG --mount $DEVICE $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
75 ts_is_mounted "$DEVICE" || \
76 echo "(by device) cannot find $DEVICE in /proc/mounts" >> $TS_OUTPUT 2>> $TS_ERRLOG
77 ts_finalize_subtest
78
79
80 ts_init_subtest "umount-by-devname"
81 $PYTHON $TESTPROG --umount $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
82 ts_is_mounted "$DEVICE" &&
83 echo "umount (device) failed: found $DEVICE in /proc/mounts" >> $TS_OUTPUT 2>> $TS_ERRLOG
84 ts_finalize_subtest
85
86
87 ts_init_subtest "mount-uhelper"
88 mkdir -p $MOUNTPOINT &> /dev/null
89 $PYTHON $TESTPROG --mount -o uhelper=foo,rw LABEL="$LABEL" $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
90 grep -q "SRC=$DEVICE\b" "$LIBMOUNT_UTAB" || \
91 echo "(by label) cannot find $DEVICE in $LIBMOUNT_UTAB" >> $TS_OUTPUT 2>> $TS_ERRLOG
92 ts_finalize_subtest
93
94
95 ts_init_subtest "umount"
96 $PYTHON $TESTPROG --umount $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
97 grep -q "SRC=$DEVICE\b" "$LIBMOUNT_UTAB" && \
98 echo "umount (mountpoint) failed: found $DEVICE in $LIBMOUNT_UTAB" >> $TS_OUTPUT 2>> $TS_ERRLOG
99 ts_finalize_subtest
100
101
102 if type "mkfs.btrfs" &>/dev/null && mkfs.btrfs --version &>/dev/null; then
103 $TS_CMD_WIPEFS -a $DEVICE &> /dev/null
104 #ts_log "Create filesystem [btrfs]"
105 mkfs.btrfs -L "$LABEL" $DEVICE &> /dev/null
106 udevadm settle
107
108 $TS_CMD_MOUNT -t btrfs $DEVICE $MOUNTPOINT &> /dev/null
109 btrfs subvolume create $MOUNTPOINT/sub &> /dev/null
110 $TS_CMD_UMOUNT $MOUNTPOINT &> /dev/null
111
112 udevadm settle
113
114 ts_init_subtest "mount-uhelper-subvol"
115 mkdir -p $MOUNTPOINT &> /dev/null
116 $PYTHON $TESTPROG --mount -o uhelper=foo,rw,subvol=sub $DEVICE $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
117 grep -q "SRC=$DEVICE\b" "$LIBMOUNT_UTAB" || \
118 echo "cannot find $DEVICE in $LIBMOUNT_UTAB" >> $TS_OUTPUT 2>> $TS_ERRLOG
119 ts_finalize_subtest
120
121 # Don't temporary write btrfs mount options to the test output,
122 # the options depend on kernel version (since 4.2 it contains
123 # subvol= and subvolid=).
124 #
125 #ts_log "All mount options (btrfs subvolume + utab) ---"
126 #$TS_CMD_FINDMNT --mtab $MOUNTPOINT -o OPTIONS -n >> $TS_OUTPUT 2>> $TS_ERRLOG
127 #ts_log "---"
128
129 ts_init_subtest "umount-subvol"
130 $PYTHON $TESTPROG --umount $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
131 grep -q $DEVICE $LIBMOUNT_UTAB && \
132 echo "umount (mountpoint) failed: found $DEVICE in $LIBMOUNT_UTAB" >> $TS_OUTPUT 2>> $TS_ERRLOG
133 ts_finalize_subtest
134 fi
135
136 ts_log "...done."
137 ts_finalize