This is the mail archive of the
lvm2-cvs@sourceware.org
mailing list for the LVM2 project.
LVM2/test Makefile.in lvm-utils.sh t-000-basic ...
- From: mornfall at sourceware dot org
- To: lvm-devel at redhat dot com, lvm2-cvs at sourceware dot org
- Date: 7 Apr 2010 14:46:29 -0000
- Subject: LVM2/test Makefile.in lvm-utils.sh t-000-basic ...
CVSROOT: /cvs/lvm2
Module name: LVM2
Changes by: mornfall@sourceware.org 2010-04-07 14:46:27
Modified files:
test : Makefile.in lvm-utils.sh t-000-basic.sh
t-fsadm.sh t-lvcreate-operation.sh
t-lvcreate-pvtags.sh t-mirror-basic.sh
t-pvcreate-operation.sh t-pvmove-basic.sh
t-read-ahead.sh t-snapshot-merge.sh
t-topology-support.sh t-vgsplit-stacked.sh
test-utils.sh
Removed files:
test : test-lib.sh
Log message:
Refactor the test utilities, dropping the legacy test-lib.sh and curtailing
lvm-utils.sh. Clears up lots of unused code, should have little observable
impact (it does change test directory layout slightly).
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/Makefile.in.diff?cvsroot=lvm2&r1=1.33&r2=1.34
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/lvm-utils.sh.diff?cvsroot=lvm2&r1=1.23&r2=1.24
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/t-000-basic.sh.diff?cvsroot=lvm2&r1=1.7&r2=1.8
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/t-fsadm.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/t-lvcreate-operation.sh.diff?cvsroot=lvm2&r1=1.4&r2=1.5
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/t-lvcreate-pvtags.sh.diff?cvsroot=lvm2&r1=1.6&r2=1.7
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/t-mirror-basic.sh.diff?cvsroot=lvm2&r1=1.7&r2=1.8
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/t-pvcreate-operation.sh.diff?cvsroot=lvm2&r1=1.17&r2=1.18
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/t-pvmove-basic.sh.diff?cvsroot=lvm2&r1=1.6&r2=1.7
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/t-read-ahead.sh.diff?cvsroot=lvm2&r1=1.11&r2=1.12
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/t-snapshot-merge.sh.diff?cvsroot=lvm2&r1=1.2&r2=1.3
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/t-topology-support.sh.diff?cvsroot=lvm2&r1=1.2&r2=1.3
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/t-vgsplit-stacked.sh.diff?cvsroot=lvm2&r1=1.2&r2=1.3
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/test-utils.sh.diff?cvsroot=lvm2&r1=1.29&r2=1.30
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/test-lib.sh.diff?cvsroot=lvm2&r1=1.5&r2=NONE
--- LVM2/test/Makefile.in 2010/03/31 23:05:20 1.33
+++ LVM2/test/Makefile.in 2010/04/07 14:46:26 1.34
@@ -30,7 +30,7 @@
SCRIPTS := $(wildcard $(srcdir)/t-*.sh) \
$(srcdir)/test-utils.sh \
- $(srcdir)/test-lib.sh
+ $(srcdir)/lvm-utils.sh
ifeq ("@UDEV_SYNC@", "yes")
dm_udev_synchronisation = 1
--- LVM2/test/lvm-utils.sh 2010/03/26 13:21:28 1.23
+++ LVM2/test/lvm-utils.sh 2010/04/07 14:46:26 1.24
@@ -16,40 +16,6 @@
ME=$(basename "$0")
warn() { echo >&2 "$ME: $@"; }
-unsafe_losetup_()
-{
- f=$1
-
- test -n "$G_dev_" \
- || error "Internal error: unsafe_losetup_ called before init_root_dir_"
-
- # Iterate through $G_dev_/loop{,/}{0,1,2,3,4,5,6,7,8,9}
- for slash in '' /; do
- for i in 0 1 2 3 4 5 6 7 8 9; do
- dev=$G_dev_/loop$slash$i
- losetup $dev > /dev/null 2>&1 && continue;
- losetup "$dev" "$f" > /dev/null && { echo "$dev"; return 0; }
- break
- done
- done
-
- return 1
-}
-
-loop_setup_()
-{
- file=$1
- dd if=/dev/zero of="$file" bs=1M count=1 seek=1000 > /dev/null 2>&1 \
- || { warn "loop_setup_ failed: Unable to create tmp file $file"; return 1; }
-
- # NOTE: this requires a new enough version of losetup
- dev=$(unsafe_losetup_ "$file" 2>/dev/null) \
- || { warn "loop_setup_ failed: Unable to create loopback device"; return 1; }
-
- echo "$dev"
- return 0;
-}
-
compare_two_fields_()
{
local cmd1=$1;
@@ -176,61 +142,3 @@
test "$?:$out" = "1:Invalid DM_DEV_DIR envvar value." -o \
"$?:$out" = "1:Invalid DM_DEV_DIR environment variable value."
}
-
-# set up private /dev and /etc
-init_root_dir_()
-{
- test -n "$test_dir_rand_" \
- || error "Internal error: called init_root_dir_ before" \
- "defining \$test_dir_rand_"
-
- # Define these two globals.
- G_root_=$test_dir_rand_/root
- G_dev_=$G_root_/dev
-
- export LVM_SYSTEM_DIR=$G_root_/etc
- export DM_DEV_DIR=$G_dev_
-
- # Only the first caller does anything.
- mkdir -p $G_root_/etc $G_dev_ $G_dev_/mapper $G_root_/lib
- for i in 0 1 2 3 4 5 6 7; do
- mknod $G_root_/dev/loop$i b 7 $i
- done
- for i in $abs_top_builddir/daemons/dmeventd/plugins/*/*.so
- do
- # NOTE: This check is necessary because the loop above will give us the value
- # "$abs_top_builddir/daemons/dmeventd/plugins/*/*.so" if no files ending in 'so' exist.
- # This is the best way I could quickly determine to skip over this bogus value.
- if [ -f $i ]; then
- echo Setting up symlink from $i to $G_root_/lib
- ln -s $i $G_root_/lib
- fi
- done
- cat > $G_root_/etc/lvm.conf <<-EOF
- devices {
- dir = "$G_dev_"
- scan = "$G_dev_"
- filter = [ "a/loop/", "a/mirror/", "a/mapper/", "r/.*/" ]
- cache_dir = "$G_root_/etc"
- sysfs_scan = 0
- }
- log {
- verbose = $verboselevel
- syslog = 0
- indent = 1
- }
- backup {
- backup = 0
- archive = 0
- }
- global {
- library_dir = "$G_root_/lib"
- }
- activation {
- udev_sync = 1
- udev_rules = 1
- }
-EOF
-}
-
-init_root_dir_
--- LVM2/test/t-000-basic.sh 2009/07/13 12:42:26 1.7
+++ LVM2/test/t-000-basic.sh 2010/04/07 14:46:26 1.8
@@ -20,7 +20,7 @@
# ensure they are the same
diff -u actual expected
-mknod $G_root_/dev/null c 1 3 ||
+mknod $DM_DEV_DIR/null c 1 3 ||
error "Can't create nodes on filesystem"
-echo >$G_root_/dev/null ||
+echo >$DM_DEV_DIR/null ||
error "Filesystem for tests does not allow using device nodes (check nodev)"
--- LVM2/test/t-fsadm.sh 2009/01/15 17:14:38 1.1
+++ LVM2/test/t-fsadm.sh 2010/04/07 14:46:26 1.2
@@ -19,7 +19,7 @@
# Test for block sizes != 1024 (rhbz #480022)
lvcreate -n$lv1 -L 64M $vg
-mke2fs -b4096 -j $G_dev_/$vg/$lv1
-e2fsck -f -y $G_dev_/$vg/$lv1
-fsadm --lvresize resize $G_dev_/$vg/$lv1 128M
+mke2fs -b4096 -j $DM_DEV_DIR/$vg/$lv1
+e2fsck -f -y $DM_DEV_DIR/$vg/$lv1
+fsadm --lvresize resize $DM_DEV_DIR/$vg/$lv1 128M
vgremove -ff $vg
--- LVM2/test/t-lvcreate-operation.sh 2010/04/06 14:24:13 1.4
+++ LVM2/test/t-lvcreate-operation.sh 2010/04/07 14:46:26 1.5
@@ -21,7 +21,7 @@
fi
}
-aux prepare_pvs 2
+prepare_pvs 2
aux pvcreate --metadatacopies 0 $dev1
aux vgcreate -c n $vg $devs
--- LVM2/test/t-lvcreate-pvtags.sh 2009/12/28 18:33:04 1.6
+++ LVM2/test/t-lvcreate-pvtags.sh 2010/04/07 14:46:26 1.7
@@ -24,7 +24,7 @@
not lvcreate -l4 -i4 $vg @fast
# 2 stripes is too many with just one PV
-not lvcreate -l2 -i2 $vg $G_dev_/mapper/pv1
+not lvcreate -l2 -i2 $vg $DM_DEV_DIR/mapper/pv1
# lvcreate mirror
lvcreate -l1 -m1 $vg @fast
--- LVM2/test/t-mirror-basic.sh 2010/02/17 15:41:28 1.7
+++ LVM2/test/t-mirror-basic.sh 2010/04/07 14:46:26 1.8
@@ -21,7 +21,7 @@
lvdev_()
{
- echo "$G_dev_/$1/$2"
+ echo "$DM_DEV_DIR/$1/$2"
}
mimages_are_redundant_ ()
--- LVM2/test/t-pvcreate-operation.sh 2010/02/22 14:47:55 1.17
+++ LVM2/test/t-pvcreate-operation.sh 2010/04/07 14:46:26 1.18
@@ -15,9 +15,9 @@
for mdatype in 1 2
do
# pvcreate (lvm$mdatype) refuses to overwrite an mounted filesystem (bz168330)
- test ! -d $G_root_/mnt && mkdir $G_root_/mnt
+ test ! -d $TESTDIR/mnt && mkdir $TESTDIR/mnt
if mke2fs $dev1; then
- mount $dev1 $G_root_/mnt
+ mount $dev1 $TESTDIR/mnt
not pvcreate -M$mdatype $dev1 2>err
grep "Can't open $dev1 exclusively. Mounted filesystem?" err
umount $dev1
@@ -89,7 +89,7 @@
# pvcreate (lvm2) fails writing LVM label at sector 4
not pvcreate --labelsector 4 $dev1
-backupfile=mybackupfile-$(this_test_)
+backupfile=$PREFIX.mybackupfile
uuid1=freddy-fred-fred-fred-fred-fred-freddy
uuid2=freddy-fred-fred-fred-fred-fred-fredie
bogusuuid=fred
--- LVM2/test/t-pvmove-basic.sh 2009/12/28 18:33:04 1.6
+++ LVM2/test/t-pvmove-basic.sh 2010/04/07 14:46:26 1.7
@@ -20,7 +20,7 @@
# Utilities
lvdev_() {
- echo "$G_dev_/$1/$2"
+ echo "$DM_DEV_DIR/$1/$2"
}
lv_is_on_() {
--- LVM2/test/t-read-ahead.sh 2010/02/17 15:41:28 1.11
+++ LVM2/test/t-read-ahead.sh 2010/04/07 14:46:26 1.12
@@ -47,7 +47,7 @@
blockdev --setra 768 $dev1
vgscan
lvcreate -n $lv -L4m $vg $dev1
-test $(blockdev --getra $G_dev_/$vg/$lv) -eq 768
+test $(blockdev --getra $DM_DEV_DIR/$vg/$lv) -eq 768
lvremove -ff $vg
# Check default, active/inactive values for read_ahead / kernel_read_ahead
--- LVM2/test/t-snapshot-merge.sh 2010/02/05 22:44:38 1.2
+++ LVM2/test/t-snapshot-merge.sh 2010/04/07 14:46:26 1.3
@@ -16,7 +16,7 @@
lvdev_()
{
- echo "$G_dev_/$1/$2"
+ echo "$DM_DEV_DIR/$1/$2"
}
snap_lv_name_() {
--- LVM2/test/t-topology-support.sh 2010/01/19 17:06:50 1.2
+++ LVM2/test/t-topology-support.sh 2010/04/07 14:46:27 1.3
@@ -31,7 +31,7 @@
lvdev_()
{
- echo "$G_dev_/$1/$2"
+ echo "$DM_DEV_DIR/$1/$2"
}
test_snapshot_mount()
--- LVM2/test/t-vgsplit-stacked.sh 2010/03/17 14:44:19 1.2
+++ LVM2/test/t-vgsplit-stacked.sh 2010/04/07 14:46:27 1.3
@@ -8,8 +8,8 @@
lvcreate -n $lv1 -l 100%FREE $vg1
#top VG
-pvcreate $G_dev_/$vg1/$lv1
-vgcreate $vg $G_dev_/$vg1/$lv1 $dev3
+pvcreate $DM_DEV_DIR/$vg1/$lv1
+vgcreate $vg $DM_DEV_DIR/$vg1/$lv1 $dev3
vgchange -a n $vg
vgchange -a n $vg1
--- LVM2/test/test-utils.sh 2010/04/06 17:36:43 1.29
+++ LVM2/test/test-utils.sh 2010/04/07 14:46:27 1.30
@@ -8,9 +8,6 @@
# along with this program; if not, write to the Free Software Foundation,
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-test_description="foo" # silence test-lib for now
-. ./test-lib.sh
-
aux() {
# use just "$@" for verbose operation
"$@" > /dev/null 2> /dev/null
@@ -71,12 +68,30 @@
# skip if we don't have our own clvmd...
(which clvmd | grep $abs_builddir) || exit 200
- trap 'aux teardown_' EXIT # don't forget to clean up
+ trap_teardown
clvmd -Isinglenode -d 1 &
LOCAL_CLVMD="$!"
}
+prepare_testroot() {
+ PWD="`pwd`"
+ PREFIX="LVMTEST$$"
+
+ trap_teardown
+ TESTDIR=$($abs_srcdir/mkdtemp ${LVM_TEST_DIR-$(pwd)} $PREFIX.XXXXXXXXXX) \
+ || { echo "failed to create temporary directory in $test_dir_"; exit 1; }
+
+ export LVM_SYSTEM_DIR=$TESTDIR/etc
+ export DM_DEV_DIR=$TESTDIR/dev
+ mkdir $LVM_SYSTEM_DIR $DM_DEV_DIR $DM_DEV_DIR/mapper $TESTDIR/lib
+
+ for i in `find $abs_top_builddir/daemons/dmeventd/plugins/ -name \*.so`; do
+ echo Setting up symlink from $i to $TESTDIR/lib
+ ln -s $i $TESTDIR/lib
+ done
+}
+
teardown() {
echo $LOOP
echo $PREFIX
@@ -84,12 +99,12 @@
test -n "$LOCAL_CLVMD" && kill -9 "$LOCAL_CLVMD"
test -n "$PREFIX" && {
- rm -rf $G_root_/dev/$PREFIX*
+ rm -rf $TESTDIR/dev/$PREFIX*
init_udev_transaction
while dmsetup table | grep -q ^$PREFIX; do
- for s in `dmsetup table | grep ^$PREFIX| awk '{ print substr($1,1,length($1)-1) }'`; do
- dmsetup remove $s 2>/dev/null > /dev/null || true
+ for s in `dmsetup info -c -o name --noheading | grep ^$PREFIX`; do
+ dmsetup remove $s >& /dev/null || true
done
done
finish_udev_transaction
@@ -105,27 +120,35 @@
test -n "$LOOPFILE" && rm -f $LOOPFILE
fi
unset devs # devs is set in prepare_devs()
+
+ test -n "$TESTDIR" && {
+ cd $PWD
+ rm -rf $TESTDIR || echo BLA
+ }
}
-teardown_() {
- teardown
- cleanup_ # user-overridable cleanup
- testlib_cleanup_ # call test-lib cleanup routine, too
+trap_teardown() {
+ trap 'set +vex; STACKTRACE; set -vex' ERR
+ trap 'aux teardown' EXIT # don't forget to clean up
}
make_ioerror() {
echo 0 10000000 error | dmsetup create ioerror
- ln -s $G_dev_/mapper/ioerror $G_dev_/ioerror
+ ln -s $DM_DEV_DIR/mapper/ioerror $DM_DEV_DIR/ioerror
}
prepare_loop() {
size=$1
test -n "$size" || size=32
- test -n "$LOOP" && return 0
- trap 'aux teardown_' EXIT # don't forget to clean up
- trap 'set +vex; STACKTRACE; set -vex' ERR
- #trap - ERR
+ test -z "$LOOP"
+ test -n "$DM_DEV_DIR"
+
+ trap_teardown
+
+ for i in 0 1 2 3 4 5 6 7; do
+ mknod $DM_DEV_DIR/loop$i b 7 $i
+ done
LOOPFILE="$PWD/test.img"
dd if=/dev/zero of="$LOOPFILE" bs=$((1024*1024)) count=1 seek=$(($size-1))
@@ -136,10 +159,10 @@
return 0
else
# no -f support
- # Iterate through $G_dev_/loop{,/}{0,1,2,3,4,5,6,7}
+ # Iterate through $DM_DEV_DIR/loop{,/}{0,1,2,3,4,5,6,7}
for slash in '' /; do
for i in 0 1 2 3 4 5 6 7; do
- local dev=$G_dev_/loop$slash$i
+ local dev=$DM_DEV_DIR/loop$slash$i
! losetup $dev >/dev/null 2>&1 || continue
# got a free
losetup "$dev" "$LOOPFILE"
@@ -174,8 +197,7 @@
local SCSI_DEBUG_PARAMS="$@"
test -n "$SCSI_DEBUG_DEV" && return 0
- trap 'aux teardown_' EXIT # don't forget to clean up
- trap 'set +vex; STACKTRACE; set -vex' ERR
+ trap_teardown
# Skip test if awk isn't available (required for get_sd_devs_)
which awk || exit 200
@@ -201,8 +223,8 @@
fi
done
if [ $FOUND -eq 0 ]; then
- # Create symlink to scsi_debug device in $G_dev_
- SCSI_DEBUG_DEV=$G_dev_/$(basename $dev1)
+ # Create symlink to scsi_debug device in $DM_DEV_DIR
+ SCSI_DEBUG_DEV=$DM_DEV_DIR/$(basename $dev1)
# Setting $LOOP provides means for prepare_devs() override
LOOP=$SCSI_DEBUG_DEV
ln -snf $dev1 $SCSI_DEBUG_DEV
@@ -228,8 +250,6 @@
prepare_loop $(($n*$devsize))
- PREFIX="LVMTEST$$"
-
if ! loopsz=`blockdev --getsz $LOOP 2>/dev/null`; then
loopsz=`blockdev --getsize $LOOP 2>/dev/null`
fi
@@ -239,7 +259,7 @@
init_udev_transaction
for i in `seq 1 $n`; do
local name="${PREFIX}$pvname$i"
- local dev="$G_dev_/mapper/$name"
+ local dev="$DM_DEV_DIR/mapper/$name"
eval "dev$i=$dev"
devs="$devs $dev"
echo 0 $size linear $LOOP $((($i-1)*$size)) > $name.table
@@ -325,13 +345,13 @@
filter='[ "a/dev\/mirror/", "a/dev\/mapper\/.*pv[0-9_]*$/", "r/.*/" ]'
locktype=
if test -n "$LVM_TEST_LOCKING"; then locktype="locking_type = $LVM_TEST_LOCKING"; fi
- cat > $G_root_/etc/lvm.conf <<-EOF
+ cat > $TESTDIR/etc/lvm.conf <<-EOF
$LVM_TEST_CONFIG
devices {
- dir = "$G_dev_"
- scan = "$G_dev_"
+ dir = "$DM_DEV_DIR"
+ scan = "$DM_DEV_DIR"
filter = $filter
- cache_dir = "$G_root_/etc"
+ cache_dir = "$TESTDIR/etc"
sysfs_scan = 0
}
log {
@@ -344,8 +364,8 @@
}
global {
abort_on_internal_errors = 1
- library_dir = "$G_root_/lib"
- locking_dir = "$G_root_/var/lock/lvm"
+ library_dir = "$TESTDIR/lib"
+ locking_dir = "$TESTDIR/var/lock/lvm"
$locktype
}
activation {
@@ -353,9 +373,22 @@
udev_rules = 1
}
EOF
+ cat $TESTDIR/etc/lvm.conf
}
-set -vexE -o pipefail
-aux prepare_lvmconf
-prepare_clvmd
+prepare() {
+ prepare_testroot
+ prepare_lvmconf
+ prepare_clvmd
+ source ./lvm-utils.sh
+}
+
+LANG=C
+LC_ALL=C
+TZ=UTC
+unset CDPATH
+. ./init.sh || { echo >&2 you must run make first; exit 1; }
+
+set -vexE -o pipefail
+aux prepare