From: meyering@sourceware.org <meyering@sourceware.org>
To: lvm-devel@redhat.com
Subject: LVM2 ./WHATS_NEW test/Makefile.in test/lvm-uti ...
Date: 9 Oct 2007 13:13:07 -0000 [thread overview]
Message-ID: <20071009131307.5585.qmail@sourceware.org> (raw)
CVSROOT: /cvs/lvm2
Module name: LVM2
Changes by: meyering at sourceware.org 2007-10-09 13:13:06
Modified files:
. : WHATS_NEW
test : Makefile.in lvm-utils.sh t-lvcreate-pvtags.sh
t-lvcreate-usage.sh test-lib.sh
Log message:
Run tests with LVM_SYSTEM_DIR pointing to private root and /dev dirs.
This makes the tests more reproducible and helps isolate
them from any existing LVM set-up.
* test/Makefile.in (abs_builddir): Define.
(init.sh): Emit definition of abs_builddir.
* test/lvm-utils.sh (unsafe_losetup_): Keep only the portable,
iterative approach.
(dmsetup_has_dm_devdir_support_): New function.
(init_root_dir_): New function.
Invoke init_root_dir_ for all but the first test.
* test/test-lib.sh (this_test_): Adapt to test-name change.
Invoke lvm-utils.sh much later (after tmpdir creation), and
only if the current test is not being skipped.
Remove useless abs_top_srcdir definition.
Rename t0->test_dir_rand_.
* test/t-lvcreate-pvtags.sh: Skip this test if the available
version of dmsetup is not new enough.
Use global, $G_dev_, rather than hard-coded "/dev".
* test/t-lvcreate-usage.sh: Make --verbose output more useful.
Author: Jim Meyering <jim@meyering.net>
Committer: Jim Meyering <meyering@redhat.com>
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.716&r2=1.717
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/Makefile.in.diff?cvsroot=lvm2&r1=1.6&r2=1.7
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/lvm-utils.sh.diff?cvsroot=lvm2&r1=1.3&r2=1.4
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/t-lvcreate-pvtags.sh.diff?cvsroot=lvm2&r1=1.2&r2=1.3
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/t-lvcreate-usage.sh.diff?cvsroot=lvm2&r1=1.2&r2=1.3
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/test-lib.sh.diff?cvsroot=lvm2&r1=1.2&r2=1.3
--- LVM2/WHATS_NEW 2007/10/02 16:09:46 1.716
+++ LVM2/WHATS_NEW 2007/10/09 13:13:05 1.717
@@ -1,5 +1,6 @@
Version 2.02.29 -
==================================
+ Tests are run with LVM_SYSTEM_DIR pointing to private root and /dev dirs.
Fix a bug in lvm_dump.sh checks for lvm/dmsetup binaries.
Fix underquotations in lvm_dump.sh.
Refactor lvcreate stripe and mirror parameter validation.
--- LVM2/test/Makefile.in 2007/09/21 17:12:13 1.6
+++ LVM2/test/Makefile.in 2007/10/09 13:13:05 1.7
@@ -21,6 +21,7 @@
top_srcdir = @top_srcdir@
top_builddir = @top_builddir@
abs_srcdir = @abs_srcdir@
+abs_builddir = @abs_builddir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
@@ -32,6 +33,7 @@
echo 'abs_top_srcdir=$(abs_top_builddir)' >> $@-t
echo 'PATH=$(abs_top_builddir)/test/bin:$$PATH' >> $@-t
echo 'abs_srcdir=$(abs_srcdir)' >> $@-t
+ echo 'abs_builddir=$(abs_builddir)' >> $@-t
echo 'export PATH' >> $@-t
chmod a-w $@-t
mv $@-t $@
--- LVM2/test/lvm-utils.sh 2007/09/21 21:14:25 1.3
+++ LVM2/test/lvm-utils.sh 2007/10/09 13:13:06 1.4
@@ -19,19 +19,14 @@
unsafe_losetup_()
{
f=$1
- # Prefer the race-free losetup from recent util-linux-ng.
- dev=$(losetup --find --show "$f" 2>/dev/null) \
- && { echo "$dev"; return 0; }
-
- # If that fails, try to use util-linux-ng's -f "find-device" option.
- dev=$(losetup -f 2>/dev/null) \
- && losetup "$dev" "$f" \
- && { echo "$dev"; return 0; }
- # Last resort: iterate through /dev/loop{,/}{0,1,2,3,4,5,6,7,8,9}
+ 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=/dev/loop$slash$i
+ dev=$G_dev_/loop$slash$i
losetup $dev > /dev/null 2>&1 && continue;
losetup "$dev" "$f" > /dev/null && { echo "$dev"; return 0; }
break
@@ -55,7 +50,6 @@
return 0;
}
-
check_pv_size_()
{
return $(test $(pvs --noheadings -o pv_free $1) == $2)
@@ -65,3 +59,45 @@
{
return $(test $(lvs --noheadings -o lv_size $1) == $2)
}
+
+dmsetup_has_dm_devdir_support_()
+{
+ # Detect support for the envvar. If it's supported, the
+ # following command will fail with the expected diagnostic.
+ out=$(DM_DEV_DIR=j dmsetup version 2>&1)
+ test "$?:$out" = "1:Invalid DM_DEV_DIR envvar 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
+ for i in 0 1 2 3 4 5 6 7; do
+ mknod $G_root_/dev/loop$i b 7 $i
+ 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
+ }
+EOF
+}
+
+if test $(this_test_) != 000-basic; then
+ init_root_dir_
+fi
--- LVM2/test/t-lvcreate-pvtags.sh 2007/09/24 19:19:18 1.2
+++ LVM2/test/t-lvcreate-pvtags.sh 2007/10/09 13:13:06 1.3
@@ -14,6 +14,13 @@
. ./test-lib.sh
+dmsetup_has_dm_devdir_support_ ||
+{
+ say "Your version of dmsetup lacks support for changing DM_DEVDIR."
+ say "Skipping this test"
+ exit 0
+}
+
cleanup_()
{
test -n "$vg" && {
@@ -48,7 +55,7 @@
done
for n in $(seq 1 $nr_pvs); do
- pvs="$pvs /dev/mapper/pv$n"
+ pvs="$pvs $G_dev_/mapper/pv$n"
done
test_expect_success \
@@ -66,7 +73,7 @@
test_expect_failure 'too many stripes(4) for 3 PVs' \
'lvcreate -l4 -i4 $vg @fast'
test_expect_failure '2 stripes is too many with just one PV' \
- 'lvcreate -l2 -i2 $vg /dev/mapper/pv1'
+ 'lvcreate -l2 -i2 $vg $G_dev_/mapper/pv1'
test_expect_success 'lvcreate mirror' \
'lvcreate -l1 -m1 $vg @fast'
@@ -77,6 +84,6 @@
test_expect_failure 'lvcreate mirror (corelog, w/no free PVs)' \
'lvcreate -l1 -m3 --corelog $vg @fast'
test_expect_failure 'lvcreate mirror with a single PV arg' \
- 'lvcreate -l1 -m1 --corelog $vg /dev/mapper/pv1'
+ 'lvcreate -l1 -m1 --corelog $vg $G_dev_/mapper/pv1'
test_done
--- LVM2/test/t-lvcreate-usage.sh 2007/09/24 19:19:18 1.2
+++ LVM2/test/t-lvcreate-usage.sh 2007/10/09 13:13:06 1.3
@@ -30,15 +30,16 @@
'set up temp files, loopback devices, PVs, and a VG' \
'f1=$(pwd)/1 && d1=$(loop_setup_ "$f1") &&
f2=$(pwd)/2 && d2=$(loop_setup_ "$f2") &&
- pvcreate $d1 $d2 &&
- vg=$(this_test_)-test-vg-$$ &&
+ pvcreate $d1 $d2 &&
+ vg=$(this_test_)-test-vg-$$ &&
vgcreate $vg $d1 $d2'
lv=lvcreate-usage-$$
test_expect_success \
'lvcreate rejects a negative stripesize' \
- 'lvcreate -L 64M -n $lv -i2 --stripesize -4 $vg 2>err; test $? = 3 &&
+ 'lvcreate -L 64M -n $lv -i2 --stripesize -4 $vg 2>err;
+ status=$?; echo status=$?; test $status = 3 &&
grep "^ Negative stripesize is invalid\$" err'
test_expect_success \
--- LVM2/test/test-lib.sh 2007/09/18 14:02:22 1.2
+++ LVM2/test/test-lib.sh 2007/10/09 13:13:06 1.3
@@ -37,7 +37,7 @@
echo "* $*"
}
-this_test_() { expr "./$0" : '.*/\(t[0-9]*\)-[^/]*$'; }
+this_test_() { expr "./$0" : '.*/t-\([^/]*\)\.sh$'; }
test "${test_description}" != "" ||
error "Test script did not set test_description."
@@ -193,8 +193,6 @@
esac
}
-. lvm-utils.sh
-
this_test=$(this_test_)
skip_=0
@@ -208,8 +206,6 @@
fi
fi
-# Test the binaries we have just built.
-abs_top_srcdir=$(cd .. && pwd)
pwd_=`pwd`
test_dir_=${LVM_TEST_DIR-.}
@@ -239,16 +235,20 @@
esac
done
-t0=$($abs_srcdir/mkdtemp $test_dir_ lvm-$this_test.XXXXXXXXXX) \
+test_dir_rand_=$($abs_srcdir/mkdtemp $test_dir_ lvm-$this_test.XXXXXXXXXX) \
|| error "failed to create temporary directory in $test_dir_"
# Run each test from within a temporary sub-directory named after the
# test itself, and arrange to remove it upon exception or normal exit.
-trap 'st=$?; cleanup_; d='"$t0"';
+trap 'st=$?; cleanup_; d='"$test_dir_rand_"';
cd '"$test_dir_"' && chmod -R u+rwx "$d" && rm -rf "$d" && exit $st' 0
trap '(exit $?); exit $?' 1 2 13 15
-cd $t0 || error "failed to cd to $t0"
+cd $test_dir_rand_ || error "failed to cd to $test_dir_rand_"
+
+if test $skip_ = 0; then
+ . $abs_srcdir/lvm-utils.sh || exit 1
+fi
if ( diff --version < /dev/null 2>&1 | grep GNU ) 2>&1 > /dev/null; then
compare='diff -u'
reply other threads:[~2007-10-09 13:13 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20071009131307.5585.qmail@sourceware.org \
--to=meyering@sourceware.org \
--cc=lvm-devel@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.