]> git.ipfire.org Git - thirdparty/util-linux.git/blame - tests/ts/libmount/loop
tests: split stdout and stderr
[thirdparty/util-linux.git] / tests / ts / libmount / loop
CommitLineData
2edb8525
SB
1#!/bin/bash
2
3#
4# Copyright (C) 2016 Stanislav Brabec <sbrabec@suse.cz>
5#
6# This file is part of util-linux.
7#
8# This file is free software; you can redistribute it and/or modify
9# it under the terms of the GNU General Public License as published by
10# the Free Software Foundation; either version 2 of the License, or
11# (at your option) any later version.
12#
13# This file is distributed in the hope that it will be useful,
14# but WITHOUT ANY WARRANTY; without even the implied warranty of
15# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16# GNU General Public License for more details.
17#
18
19TS_TOPDIR="${0%/*}/../.."
20TS_DESC="losetup-loop"
21
22. $TS_TOPDIR/functions.sh
23ts_init "$*"
24
25ts_check_test_command "$TS_CMD_MOUNT"
bb872a23 26ts_check_test_command "$TS_CMD_UMOUNT"
a837b3bd 27ts_check_test_command "$TS_CMD_FINDMNT"
2edb8525
SB
28ts_check_test_command "$TS_CMD_LOSETUP"
29
30ts_skip_nonroot
31ts_check_losetup
32ts_check_prog "mkfs.ext3"
33
a837b3bd
RM
34function verify_mount_dev {
35 local dev=$1
36 local mp=$2
eff2c9a4 37 local dev_mounted=$($TS_CMD_FINDMNT -no SOURCE --mountpoint "$mp")
a837b3bd
RM
38
39 if test "$dev" != "$dev_mounted" ; then
40 echo "Mounted incorrect device: have '$dev_mounted', want '$dev'" >&2
41 return 1
42 fi
43}
44
2edb8525
SB
45#
46# file-* tests: Backing file is a regular file
47#
48BACKFILE=$(ts_image_init 10)
49
50mkfs.ext3 -F $BACKFILE &> /dev/null || ts_die "Cannot make ext3 on $BACKFILE"
51
52# All tests are separated by "udevadm settle" because loop device exists some time after
53# "losetup -d". This device confuses some tests. And find-race-condition, tests,
54# whether re-use of this device works.
55udevadm settle
56
57ts_init_subtest "file"
58[ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT
cbf858aa
KZ
59$TS_CMD_MOUNT "$BACKFILE" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>> $TS_ERRLOG
60$TS_CMD_UMOUNT "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>> $TS_ERRLOG
2edb8525
SB
61udevadm settle
62ts_log "Success"
63ts_finalize_subtest
64
65ts_init_subtest "file-o-loop"
66[ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT
cbf858aa
KZ
67$TS_CMD_MOUNT -oloop "$BACKFILE" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>> $TS_ERRLOG
68$TS_CMD_UMOUNT "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>> $TS_ERRLOG
2edb8525
SB
69udevadm settle
70ts_log "Success"
71ts_finalize_subtest
72
73ts_init_subtest "dev-loop"
74[ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT
75LODEV=$( $TS_CMD_LOSETUP --find --nooverlap --show $BACKFILE 2>> $TS_OUTPUT )
cbf858aa
KZ
76$TS_CMD_MOUNT $LODEV "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>> $TS_ERRLOG
77verify_mount_dev "$LODEV" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>> $TS_ERRLOG
78$TS_CMD_UMOUNT "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>> $TS_ERRLOG
79$TS_CMD_LOSETUP --detach $LODEV >> $TS_OUTPUT 2>> $TS_ERRLOG
2edb8525
SB
80udevadm settle
81ts_log "Success"
82ts_finalize_subtest
83
84ts_init_subtest "o-loop-val"
9212134d
KZ
85if [ "$TS_PARALLEL" = "yes" ]; then
86 # There is a race in $LODEV is usage
87 ts_skip_subtest "no-reentrant"
88else
89 [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT
90 LODEV=$( $TS_CMD_LOSETUP --find 2>> $TS_OUTPUT )
cbf858aa
KZ
91 $TS_CMD_MOUNT -oloop=$LODEV "$BACKFILE" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>> $TS_ERRLOG
92 verify_mount_dev "$LODEV" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>> $TS_ERRLOG
93 $TS_CMD_UMOUNT "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>> $TS_ERRLOG
9212134d
KZ
94 udevadm settle
95 ts_log "Success"
96 ts_finalize_subtest
97fi
2edb8525
SB
98
99ts_init_subtest "reuse"
100[ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT
101LODEV=$( $TS_CMD_LOSETUP --find --nooverlap --show "$BACKFILE" 2>> $TS_OUTPUT )
cbf858aa
KZ
102$TS_CMD_MOUNT "$BACKFILE" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>> $TS_ERRLOG
103verify_mount_dev "$LODEV" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>> $TS_ERRLOG
104$TS_CMD_UMOUNT "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>> $TS_ERRLOG
105$TS_CMD_LOSETUP --detach $LODEV >> $TS_OUTPUT 2>> $TS_ERRLOG
2edb8525
SB
106udevadm settle
107ts_log "Success"
108ts_finalize_subtest
109
110ts_init_subtest "conflict"
111[ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT
112LODEV=$( $TS_CMD_LOSETUP --find --nooverlap --show --offset=1000 "$BACKFILE" 2>> $TS_OUTPUT )
a8771dae
KZ
113$TS_CMD_MOUNT "$BACKFILE" "$TS_MOUNTPOINT" 2>&1 \
114 | sed 's/:.*:/: <target>/; s/for .*/for <source>/' > $TS_OUTPUT
cbf858aa 115$TS_CMD_LOSETUP --detach $LODEV >> $TS_OUTPUT 2>> $TS_ERRLOG
2edb8525
SB
116udevadm settle
117ts_log "Success"
118ts_finalize_subtest
119
120ts_init_subtest "o-loop-val-initialized"
c16590f2
RM
121[ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT
122LODEV=$( $TS_CMD_LOSETUP --show -f "$BACKFILE" 2>>$TS_OUTPUT)
123$TS_CMD_MOUNT -oloop=$LODEV "$BACKFILE" "$TS_MOUNTPOINT" 2>&1 \
124 | sed 's/:.*:/: <target>/; s/for .*/for <source>/' > $TS_OUTPUT
cbf858aa 125$TS_CMD_LOSETUP --detach $LODEV >> $TS_OUTPUT 2>> $TS_ERRLOG
c16590f2
RM
126udevadm settle
127ts_log "Success"
128ts_finalize_subtest
2edb8525
SB
129
130ts_init_subtest "o-loop-val-conflict"
c16590f2
RM
131[ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT
132cp "$BACKFILE" "$BACKFILE"-2
133LODEV=$( $TS_CMD_LOSETUP --show -f "$BACKFILE"-2 2>> $TS_OUTPUT)
134$TS_CMD_MOUNT -oloop=$LODEV "$BACKFILE" "$TS_MOUNTPOINT" 2>&1 \
135 | sed 's/:.*:/: <target>/; s/for .*/for <source>/' > $TS_OUTPUT
cbf858aa 136$TS_CMD_LOSETUP --detach $LODEV >> $TS_OUTPUT 2>> $TS_ERRLOG
c16590f2
RM
137rm "$BACKFILE"-2
138udevadm settle
139ts_log "Success"
140ts_finalize_subtest
2edb8525
SB
141
142ts_log "Success"
143ts_finalize