All of lore.kernel.org
 help / color / mirror / Atom feed
From: zkabelac@sourceware.org <zkabelac@sourceware.org>
To: lvm-devel@redhat.com
Subject: LVM2/test/lib aux.sh lvm-wrapper.sh
Date: 16 Mar 2012 12:59:03 -0000	[thread overview]
Message-ID: <20120316125903.23177.qmail@sourceware.org> (raw)

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	zkabelac at sourceware.org	2012-03-16 12:59:02

Modified files:
	test/lib       : aux.sh lvm-wrapper.sh 

Log message:
	Update aux.sh lvmwrapper
	
	Indent
	
	Add valgrind support:
	env LVM_TEST_VALGRIND={0123} (the higher level, more commands tested)
	env LVM_TEST_CLVMD=1   runs clvmd within valgrind.
	env VALGRIND  script name executed for each lvm command (def. is valg).
	
	Smarted teardown - should minimize occurence of left dev entries
	(using dmsetup remove -f only as last resort)
	sort removed devices by open count before actual removal
	
	Use "" around string that may contain spaces.
	
	Set log/verbose and activation/retry_deactivation to defined value.
	
	Remove  debug.log after successful lvm command (easier to check output).

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/lib/aux.sh.diff?cvsroot=lvm2&r1=1.43&r2=1.44
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/lib/lvm-wrapper.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2

--- LVM2/test/lib/aux.sh	2012/03/16 12:57:28	1.43
+++ LVM2/test/lib/aux.sh	2012/03/16 12:59:02	1.44
@@ -11,69 +11,67 @@
 
 . lib/utils
 
+run_valgrind() {
+	# Execute script which may use $TESTNAME for creating individal
+	# log files for each execute command
+	exec "${VALGRIND:-valg}" "$@"
+}
+
 prepare_clvmd() {
-	if test -z "$LVM_TEST_LOCKING" || test "$LVM_TEST_LOCKING" -ne 3 ; then
-		return 0 # not needed
-	fi
+	test "${LVM_TEST_LOCKING:-0}" -ne 3 && return # not needed
 
 	if pgrep clvmd ; then
 		echo "Cannot use fake cluster locking with real clvmd ($(pgrep clvmd)) running."
-                skip
+		skip
 	fi
 
 	# skip if we don't have our own clvmd...
-	(which clvmd | grep $abs_builddir) || skip
+	(which clvmd 2>/dev/null | grep "$abs_builddir") || skip
 
 	# skip if we singlenode is not compiled in
-	(clvmd --help 2>&1 | grep "Available cluster managers" | grep singlenode) || skip
-
-	lvmconf "activation/monitoring = 1"
+	(clvmd --help 2>&1 | grep "Available cluster managers" | grep "singlenode") || skip
 
-	clvmd -Isinglenode -d 1 &
-	LOCAL_CLVMD="$!"
-
-	# check that it is really running now
+#	lvmconf "activation/monitoring = 1"
+	local run_valgrind=
+	test -z "$LVM_VALGRIND_CLVMD" || run_valgrind="run_valgrind"
+	$run_valgrind lib/clvmd -Isinglenode -d 1 -f &
+	local local_clvmd=$!
 	sleep .1
-	ps $LOCAL_CLVMD || die
-	echo "$LOCAL_CLVMD" > LOCAL_CLVMD
+	# extra sleep for slow valgrind
+	test -z "$LVM_VALGRIND_CLVMD" || sleep 5
+	# check that it is really running now
+	ps $local_clvmd || die
+	echo $local_clvmd > LOCAL_CLVMD
 }
 
 prepare_dmeventd() {
 	if pgrep dmeventd ; then
 		echo "Cannot test dmeventd with real dmeventd ($(pgrep dmeventd)) running."
-                touch SKIP_THIS_TEST
-		exit 1
+		skip
 	fi
 
 	# skip if we don't have our own dmeventd...
-	(which dmeventd | grep $abs_builddir) || {
-            touch SKIP_THIS_TEST
-            exit 1
-        }
+	(which dmeventd 2>/dev/null | grep "$abs_builddir") || skip
 
-        lvmconf "activation/monitoring = 1"
+	lvmconf "activation/monitoring = 1"
 
 	dmeventd -f "$@" &
-	echo "$!" > LOCAL_DMEVENTD
+	echo $! > LOCAL_DMEVENTD
 
 	# FIXME wait for pipe in /var/run instead
 	sleep 1
 }
 
 prepare_lvmetad() {
-	echo preparing lvmetad...
-
 	# skip if we don't have our own lvmetad...
-	(which lvmetad | grep $abs_builddir) || {
-		touch SKIP_THIS_TEST
-		exit 1
-	}
+	(which lvmetad 2>/dev/null | grep "$abs_builddir") || skip
 
 	lvmconf "global/use_lvmetad = 1"
 	lvmconf "devices/md_component_detection = 0"
 
-	lvmetad -f "$@" -s $TESTDIR/lvmetad.socket &
-	echo "$!" > LOCAL_LVMETAD
+	echo "preparing lvmetad..."
+	lvmetad -f "$@" -s "$TESTDIR/lvmetad.socket" &
+	echo $! > LOCAL_LVMETAD
 
 	sleep 1
 }
@@ -85,120 +83,136 @@
 }
 
 teardown_devs() {
+	vgremove -ff $vg $vg1 $vg2 $vg3 $vg4 &>/dev/null || rm -f debug.log
+
 	# Delete any remaining dm/udev semaphores
 	teardown_udev_cookies
 
-	test -n "$PREFIX" && {
-		rm -rf $TESTDIR/dev/$PREFIX*
+	test -z "$PREFIX" || {
+		rm -rf "$TESTDIR/dev/$PREFIX"*
 
+		# Try unmount opened devices first
+		for s in $(dmsetup info -c -o open,name --sort -open --noheading | grep "$PREFIX"); do
+			test "${s%%:*}" -gt 0 || break
+			umount -fl "$DM_DEV_DIR/mapper/${s#[0..9]*:}" &>/dev/null || true
+		done
+
+		# Remove devices, start with closed (sorted by open count)
 		init_udev_transaction
-		while dmsetup table | grep -q $PREFIX; do
-			for s in `dmsetup info -c -o name --noheading | grep $PREFIX`; do
-				umount -fl $DM_DEV_DIR/mapper/$s >& /dev/null || true
-				dmsetup remove -f $s >& /dev/null || true
-			done
+		for s in $(dmsetup info -c -o name --sort open --noheading | grep "$PREFIX"); do
+			dmsetup remove "$s" &>/dev/null || true
 		done
 		finish_udev_transaction
+		udev_wait
 
+		# Brute force, and without udev transaction
+		while dmsetup table | grep -q "$PREFIX"; do
+			for s in $(dmsetup info -c -o name --sort open --noheading | grep "$PREFIX"); do
+				umount -fl "$DM_DEV_DIR/mapper/$s" &>/dev/null || true
+				dmsetup remove -f "$s" &>/dev/null || true
+			done
+			udev_wait
+		done
 	}
 
-	udev_wait
 	# NOTE: SCSI_DEBUG_DEV test must come before the LOOP test because
 	# prepare_scsi_debug_dev() also sets LOOP to short-circuit prepare_loop()
 	if test -f SCSI_DEBUG_DEV; then
 		modprobe -r scsi_debug
 	else
-		test -f LOOP && losetup -d $(cat LOOP)
-		test -f LOOPFILE && rm -f $(cat LOOPFILE)
+		test ! -f LOOP || losetup -d $(cat LOOP)
+		test ! -f LOOPFILE || rm -f $(cat LOOPFILE)
 	fi
 	rm -f DEVICES # devs is set in prepare_devs()
 	rm -f LOOP
 
 	# Attempt to remove any loop devices that failed to get torn down if earlier tests aborted
-	test -n "$COMMON_PREFIX" && {
+	test -z "$COMMON_PREFIX" || {
 		# Resume any linears to be sure we do not deadlock
-		STRAY_DEVS=$(dmsetup table | sed 's/:.*//' | grep $COMMON_PREFIX | cut -d' '  -f 1)
+		STRAY_DEVS=$(dmsetup table | sed 's/:.*//' | grep "$COMMON_PREFIX" | cut -d' '  -f 1)
 		for dm in $STRAY_DEVS ; do
 			# FIXME: only those really suspended
-			echo dmsetup resume $dm
-			dmsetup resume $dm || true
+			echo "dmsetup resume \"$dm\""
+			dmsetup resume "$dm" || true
 		done
 
-		STRAY_MOUNTS=`mount | grep $COMMON_PREFIX | cut -d\  -f1`
+		STRAY_MOUNTS=$(mount | grep "$COMMON_PREFIX" | cut -d' ' -f1)
 		if test -n "$STRAY_MOUNTS"; then
 			echo "Removing stray mounted devices containing $COMMON_PREFIX:"
-			mount | grep $COMMON_PREFIX
-			umount -fl $STRAY_MOUNTS || true
-			sleep 2
+			mount | grep "$COMMON_PREFIX"
+			umount -fl "$STRAY_MOUNTS" || true
+			udev_wait
 		fi
 
 		init_udev_transaction
 		NUM_REMAINING_DEVS=999
-		while NUM_DEVS=`dmsetup table | grep ^$COMMON_PREFIX | wc -l` && \
+		while NUM_DEVS=$(dmsetup table | grep "^$COMMON_PREFIX" | wc -l) && \
 		    test $NUM_DEVS -lt $NUM_REMAINING_DEVS -a $NUM_DEVS -ne 0; do
 			echo "Removing $NUM_DEVS stray mapped devices with names beginning with $COMMON_PREFIX:"
-			STRAY_DEVS=$(dmsetup table | sed 's/:.*//' | grep $COMMON_PREFIX | cut -d' '  -f 1)
-			dmsetup info -c | grep ^$COMMON_PREFIX
+			STRAY_DEVS=$(dmsetup table | sed 's/:.*//' | grep "$COMMON_PREFIX" | cut -d' '  -f 1)
+			dmsetup info -c | grep "^$COMMON_PREFIX"
 			for dm in $STRAY_DEVS ; do
-				echo dmsetup remove $dm
-				dmsetup remove -f $dm || true
+				echo "dmsetup remove -f \"$dm\""
+				dmsetup remove -f "$dm" || true
 			done
 			NUM_REMAINING_DEVS=$NUM_DEVS
 		done
 		finish_udev_transaction
 		udev_wait
 
-        	STRAY_LOOPS=`losetup -a | grep $COMMON_PREFIX | cut -d: -f1`
-        	if test -n "$STRAY_LOOPS"; then
-                	echo "Removing stray loop devices containing $COMMON_PREFIX:"
-                	losetup -a | grep $COMMON_PREFIX
-                	losetup -d $STRAY_LOOPS || true
-        	fi
+		STRAY_LOOPS=$(losetup -a | grep "$COMMON_PREFIX" | cut -d: -f1)
+		if test -n "$STRAY_LOOPS"; then
+			echo "Removing stray loop devices containing $COMMON_PREFIX:"
+			losetup -a | grep "$COMMON_PREFIX"
+			losetup -d "$STRAY_LOOPS" || true
+		fi
 	}
 }
 
 teardown() {
-    echo -n "## teardown..."
+	echo -n "## teardown..."
 
-    test -f LOCAL_CLVMD && {
-	kill "$(cat LOCAL_CLVMD)"
-	sleep .1
-	kill -9 "$(cat LOCAL_CLVMD)" || true
-    }
+	test -f LOCAL_CLVMD && {
+		kill -INT "$(cat LOCAL_CLVMD)"
+		test -z "$LVM_VALGRIND_CLVMD" || sleep 1
+		sleep .1
+		kill -9 "$(cat LOCAL_CLVMD)" || true
+	}
+
+	echo -n .
 
-    echo -n .
+	test -f LOCAL_DMEVENTD && kill -9 $(cat LOCAL_DMEVENTD) || true
+	test -f LOCAL_LVMETAD && kill -9 $(cat LOCAL_LVMETAD) || true
 
-    test -f LOCAL_DMEVENTD && kill -9 "$(cat LOCAL_DMEVENTD)"
-    test -f LOCAL_LVMETAD && kill -9 "$(cat LOCAL_LVMETAD)"
+	echo -n .
 
-    echo -n .
+	test -d "$DM_DEV_DIR/mapper" && teardown_devs
 
-    test -d $DM_DEV_DIR/mapper && teardown_devs
+	echo -n .
 
-    echo -n .
+	test -n "$TESTDIR" && {
+		cd "$TESTOLDPWD"
+		rm -rf "$TESTDIR" || echo BLA
+	}
 
-    test -n "$TESTDIR" && {
-	cd $OLDPWD
-	rm -rf $TESTDIR || echo BLA
-    }
+	echo "ok"
 
-    echo "ok"
+	test -z "$RUNNING_DMEVENTD" && not pgrep dmeventd &>/dev/null
 }
 
 make_ioerror() {
 	echo 0 10000000 error | dmsetup create -u TEST-ioerror ioerror
-	ln -s $DM_DEV_DIR/mapper/ioerror $DM_DEV_DIR/ioerror
+	ln -s "$DM_DEV_DIR/mapper/ioerror" "$DM_DEV_DIR/ioerror"
 }
 
 prepare_loop() {
-	size=$1
-	test -n "$size" || size=32
+	local size=${1=32}
 
-        echo -n "## preparing loop device..."
+	echo -n "## preparing loop device..."
 
 	# skip if prepare_scsi_debug_dev() was used
-	if [ -f "SCSI_DEBUG_DEV" -a -f "LOOP" ]; then
-                echo "(skipped)"
+	if test -f SCSI_DEBUG_DEV -a -f LOOP ; then
+		echo "(skipped)"
 		return 0
 	fi
 
@@ -206,110 +220,100 @@
 	test -n "$DM_DEV_DIR"
 
 	for i in 0 1 2 3 4 5 6 7; do
-		test -e $DM_DEV_DIR/loop$i || mknod $DM_DEV_DIR/loop$i b 7 $i
+		test -e "$DM_DEV_DIR/loop$i" || mknod "$DM_DEV_DIR/loop$i" b 7 $i
 	done
 
-        echo -n .
+	echo -n .
 
-	LOOPFILE="$PWD/test.img"
+	local LOOPFILE="$PWD/test.img"
 	dd if=/dev/zero of="$LOOPFILE" bs=$((1024*1024)) count=0 seek=$(($size-1)) 2> /dev/null
-	if LOOP=`losetup -s -f "$LOOPFILE" 2>/dev/null`; then
+	if LOOP=$(losetup -s -f "$LOOPFILE" 2>/dev/null); then
 		:
-	elif LOOP=`losetup -f` && losetup $LOOP "$LOOPFILE"; then
+	elif LOOP=$(losetup -f) && losetup "$LOOP" "$LOOPFILE"; then
 		# no -s support
 		:
 	else
-		# no -f support 
+		# no -f support
 		# 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=$DM_DEV_DIR/loop$slash$i
-				! losetup $dev >/dev/null 2>&1 || continue
+				local dev="$DM_DEV_DIR/loop$slash$i"
+				! losetup "$dev" >/dev/null 2>&1 || continue
 				# got a free
 				losetup "$dev" "$LOOPFILE"
 				LOOP=$dev
 				break
 			done
-			if [ -n "$LOOP" ]; then 
-				break
-			fi
+			test -z "$LOOP" || break
 		done
 	fi
 	test -n "$LOOP" # confirm or fail
-        echo "$LOOP" > LOOP
-        echo "ok ($LOOP)"
+	echo "$LOOP" > LOOP
+	echo "ok ($LOOP)"
 }
 
 # A drop-in replacement for prepare_loop() that uses scsi_debug to create
 # a ramdisk-based SCSI device upon which all LVM devices will be created
 # - scripts must take care not to use a DEV_SIZE that will enduce OOM-killer
-prepare_scsi_debug_dev()
-{
-    local DEV_SIZE="$1"
-    shift
-    local SCSI_DEBUG_PARAMS="$@"
-
-    test -f "SCSI_DEBUG_DEV" && return 0
-    test -z "$LOOP"
-    test -n "$DM_DEV_DIR"
-
-    # Skip test if awk isn't available (required for get_sd_devs_)
-    which awk || skip
-
-    # Skip test if scsi_debug module is unavailable or is already in use
-    modprobe --dry-run scsi_debug || skip
-    lsmod | grep -q scsi_debug && skip
-
-    # Create the scsi_debug device and determine the new scsi device's name
-    # NOTE: it will _never_ make sense to pass num_tgts param;
-    # last param wins.. so num_tgts=1 is imposed
-    modprobe scsi_debug dev_size_mb=$DEV_SIZE $SCSI_DEBUG_PARAMS num_tgts=1 || skip
-    sleep 2 # allow for async Linux SCSI device registration
-
-    local DEBUG_DEV=/dev/$(grep -H scsi_debug /sys/block/*/device/model | cut -f4 -d /)
-    [ -b $DEBUG_DEV ] || exit 1 # should not happen
-
-    # Create symlink to scsi_debug device in $DM_DEV_DIR
-    SCSI_DEBUG_DEV="$DM_DEV_DIR/$(basename $DEBUG_DEV)"
-    echo "$SCSI_DEBUG_DEV" > SCSI_DEBUG_DEV
-    echo "$SCSI_DEBUG_DEV" > LOOP
-    # Setting $LOOP provides means for prepare_devs() override
-    test "$LVM_TEST_DEVDIR" != "/dev" && ln -snf $DEBUG_DEV $SCSI_DEBUG_DEV
-    return 0
-}
+prepare_scsi_debug_dev() {
+	local DEV_SIZE=$1
+	local SCSI_DEBUG_PARAMS=${@:2}
 
-cleanup_scsi_debug_dev()
-{
-    aux teardown_devs
-    rm -f SCSI_DEBUG_DEV
-    rm -f LOOP
+	test -f "SCSI_DEBUG_DEV" && return 0
+	test -z "$LOOP"
+	test -n "$DM_DEV_DIR"
+
+	# Skip test if awk isn't available (required for get_sd_devs_)
+	which awk || skip
+
+	# Skip test if scsi_debug module is unavailable or is already in use
+	modprobe --dry-run scsi_debug || skip
+	lsmod | grep -q scsi_debug && skip
+
+	# Create the scsi_debug device and determine the new scsi device's name
+	# NOTE: it will _never_ make sense to pass num_tgts param;
+	# last param wins.. so num_tgts=1 is imposed
+	modprobe scsi_debug dev_size_mb=$DEV_SIZE $SCSI_DEBUG_PARAMS num_tgts=1 || skip
+	sleep 2 # allow for async Linux SCSI device registration
+
+	local DEBUG_DEV="/dev/$(grep -H scsi_debug /sys/block/*/device/model | cut -f4 -d /)"
+	test -b "$DEBUG_DEV" || return 1 # should not happen
+
+	# Create symlink to scsi_debug device in $DM_DEV_DIR
+	SCSI_DEBUG_DEV="$DM_DEV_DIR/$(basename $DEBUG_DEV)"
+	echo "$SCSI_DEBUG_DEV" > SCSI_DEBUG_DEV
+	echo "$SCSI_DEBUG_DEV" > LOOP
+	# Setting $LOOP provides means for prepare_devs() override
+	test "$LVM_TEST_DEVDIR" != "/dev" && ln -snf "$DEBUG_DEV" "$SCSI_DEBUG_DEV"
+}
+
+cleanup_scsi_debug_dev() {
+	aux teardown_devs
+	rm -f SCSI_DEBUG_DEV LOOP
 }
 
 prepare_devs() {
-	local n="$1"
-	test -z "$n" && n=3
-	local devsize="$2"
-	test -z "$devsize" && devsize=34
-	local pvname="$3"
-	test -z "$pvname" && pvname="pv"
+	local n=${1:-3}
+	local devsize=${2:-34}
+	local pvname=${3:-pv}
 
 	prepare_loop $(($n*$devsize))
-        echo -n "## preparing $n devices..."
+	echo -n "## preparing $n devices..."
 
-	if ! loopsz=`blockdev --getsz $LOOP 2>/dev/null`; then
-  		loopsz=`blockdev --getsize $LOOP 2>/dev/null`
+	if ! loopsz=$(blockdev --getsz "$LOOP" 2>/dev/null); then
+		loopsz=$(blockdev --getsize "$LOOP" 2>/dev/null)
 	fi
 
 	local size=$(($loopsz/$n))
-        devs=
+	devs=
 
 	init_udev_transaction
-	for i in `seq 1 $n`; do
+	for i in $(seq 1 $n); do
 		local name="${PREFIX}$pvname$i"
 		local dev="$DM_DEV_DIR/mapper/$name"
 		devs="$devs $dev"
-		echo 0 $size linear $LOOP $((($i-1)*$size)) > $name.table
-		dmsetup create -u TEST-$name $name $name.table
+		echo 0 $size linear "$LOOP" $((($i-1)*$size)) > "$name.table"
+		dmsetup create -u "TEST-$name" "$name" "$name.table"
 	done
 	finish_udev_transaction
 
@@ -322,50 +326,47 @@
 	#	dmsetup table $name
 	#done
 
-        echo $devs > DEVICES
-        echo "ok"
+	echo $devs > DEVICES
+	echo "ok"
 }
 
 disable_dev() {
-
 	init_udev_transaction
 	for dev in "$@"; do
-	    maj=$(($(stat --printf=0x%t $dev)))
-	    min=$(($(stat --printf=0x%T $dev)))
-	    echo "disabling device $dev ($maj:$min)"
-            dmsetup remove -f $dev || true
-	    notify_lvmetad --major $maj --minor $min
+		maj=$(($(stat --printf=0x%t "$dev")))
+		min=$(($(stat --printf=0x%T "$dev")))
+		echo "Disabling device $dev ($maj:$min)"
+		dmsetup remove -f "$dev" || true
+		notify_lvmetad --major "$maj" --minor "$min"
 	done
 	finish_udev_transaction
 
 }
 
 enable_dev() {
-
 	init_udev_transaction
 	for dev in "$@"; do
-		local name=`echo "$dev" | sed -e 's,.*/,,'`
-		dmsetup create -u TEST-$name $name $name.table || dmsetup load $name $name.table
+		local name=$(echo "$dev" | sed -e 's,.*/,,')
+		dmsetup create -u "TEST-$name" "$name" "$name.table" || \
+			dmsetup load "$name" "$name.table"
 		# using device name (since device path does not exists yes with udev)
-		dmsetup resume $name
-		notify_lvmetad $dev
+		dmsetup resume "$name"
+		notify_lvmetad "$dev"
 	done
 	finish_udev_transaction
 }
 
 backup_dev() {
 	for dev in "$@"; do
-		dd if=$dev of=$dev.backup bs=1024
+		dd if="$dev" of="$dev.backup" bs=1024
 	done
 }
 
 restore_dev() {
 	for dev in "$@"; do
-		test -e $dev.backup || {
-			echo "Internal error: $dev not backed up, can't restore!"
-			exit 1
-		}
-		dd of=$dev if=$dev.backup bs=1024
+		test -e "$dev.backup" || \
+			die "Internal error: $dev not backed up, can't restore!"
+		dd of="$dev" if="$dev.backup" bs=1024
 	done
 }
 
@@ -375,23 +376,21 @@
 }
 
 prepare_vg() {
-	vgremove -ff $vg >& /dev/null || true
 	teardown_devs
 
 	prepare_pvs "$@"
 	vgcreate -c n $vg $devs
-	#pvs -v
 }
 
 lvmconf() {
-    if test -z "$LVM_TEST_LOCKING"; then LVM_TEST_LOCKING=1; fi
-    if test "$DM_DEV_DIR" = "/dev"; then
-	LVM_VERIFY_UDEV=${LVM_VERIFY_UDEV:-0};
-    else
-	LVM_VERIFY_UDEV=${LVM_VERIFY_UDEV:-1};
-    fi
-    test -f CONFIG_VALUES || {
-        cat > CONFIG_VALUES <<-EOF
+	LVM_TEST_LOCKING=${LVM_TEST_LOCKING:-1}
+	if test "$DM_DEV_DIR" = "/dev"; then
+	    LVM_VERIFY_UDEV=${LVM_VERIFY_UDEV:-0}
+	else
+	    LVM_VERIFY_UDEV=${LVM_VERIFY_UDEV:-1}
+	fi
+	test -f CONFIG_VALUES || {
+            cat > CONFIG_VALUES <<-EOF
 devices/dir = "$DM_DEV_DIR"
 devices/scan = "$DM_DEV_DIR"
 devices/filter = [ "a/dev\\\\/mirror/", "a/dev\\\\/mapper\\\\/.*pv[0-9_]*$/", "r/.*/" ]
@@ -405,6 +404,8 @@
 log/file = "$TESTDIR/debug.log"
 log/overwrite = 1
 log/activation = 1
+log/verbose = 0
+activation/retry_deactivation = 1
 backup/backup = 0
 backup/archive = 0
 global/abort_on_internal_errors = 1
@@ -423,34 +424,34 @@
 activation/snapshot_autoextend_threshold = 50
 activation/monitoring = 0
 EOF
-    }
+	}
 
-    for v in "$@"; do
-        echo "$v" >> CONFIG_VALUES
-    done
-
-    rm -f CONFIG
-    for s in `cat CONFIG_VALUES | cut -f1 -d/ | sort | uniq`; do
-        echo "$s {" >> CONFIG
-        for k in `grep ^$s/ CONFIG_VALUES | cut -f1 -d= | sed -e 's, *$,,' | sort | uniq`; do
-            grep "^$k" CONFIG_VALUES | tail -n 1 | sed -e "s,^$s/,    ," >> CONFIG
-        done
-        echo "}" >> CONFIG
-        echo >> CONFIG
-    done
-    mv -f CONFIG $TESTDIR/etc/lvm.conf
+	for v in "$@"; do
+	    echo "$v" >> CONFIG_VALUES
+	done
+
+	rm -f CONFIG
+	for s in $(cat CONFIG_VALUES | cut -f1 -d/ | sort | uniq); do
+		echo "$s {" >> CONFIG
+		for k in $(grep ^$s/ CONFIG_VALUES | cut -f1 -d= | sed -e 's, *$,,' | sort | uniq); do
+			grep "^$k" CONFIG_VALUES | tail -n 1 | sed -e "s,^$s/,	  ," >> CONFIG
+		done
+		echo "}" >> CONFIG
+		echo >> CONFIG
+	done
+        mv -f CONFIG $TESTDIR/etc/lvm.conf
 }
 
 apitest() {
 	t=$1
-        shift
-	test -x $abs_top_builddir/test/api/$t.t || skip
-	$abs_top_builddir/test/api/$t.t "$@"
+	shift
+	test -x "$abs_top_builddir/test/api/$t.t" || skip
+	"$abs_top_builddir/test/api/$t.t" "$@" && rm -f debug.log
 }
 
 api() {
-	test -x $abs_top_builddir/test/api/wrapper || skip
-	$abs_top_builddir/test/api/wrapper "$@"
+	test -x "$abs_top_builddir/test/api/wrapper" || skip
+	"$abs_top_builddir/test/api/wrapper" "$@" && rm -f debug.log
 }
 
 udev_wait() {
@@ -479,24 +480,25 @@
 	version=$(dmsetup targets 2>/dev/null | grep "${1##dm-} " 2>/dev/null)
 	version=${version##* v}
 	shift
-	major=$(echo $version | cut -d. -f1)
-	minor=$(echo $version | cut -d. -f2)
-	revision=$(echo $version | cut -d. -f3)
+	major=$(echo "$version" | cut -d. -f1)
+	minor=$(echo "$version" | cut -d. -f2)
+	revision=$(echo "$version" | cut -d. -f3)
 
 	test -z "$1" && return 0
-	test -z "$major" && return 1
+	test -n "$major" || return 1
 	test "$major" -gt "$1" && return 0
-	test "$major" -lt "$1" && return 1
+	test "$major" -eq "$1" || return 1
 	test -z "$2" && return 0
-	test -z "$minor" && return 1
+	test -n "$minor" || return 1
 	test "$minor" -gt "$2" && return 0
-	test "$minor" -lt "$2" && return 1
+	test "$minor" -eq "$2" || return 1
 	test -z "$4" && return 0
-	test -z "$revision" && return 1
-	test "$revision" -lt "$3" && return 1
+	test -n "$revision" || return 1
+	test "$revision" -eq "$3" || return 1
 }
 
 test -f DEVICES && devs=$(cat DEVICES)
 test -f LOOP && LOOP=$(cat LOOP)
 
+unset LVM_VALGRIND
 "$@"
--- LVM2/test/lib/lvm-wrapper.sh	2011/01/05 00:16:21	1.1
+++ LVM2/test/lib/lvm-wrapper.sh	2012/03/16 12:59:02	1.2
@@ -1,7 +1,32 @@
 #!/bin/sh
+# Copyright (C) 2011-2012 Red Hat, Inc.
+#
+# This copyrighted material is made available to anyone wishing to use,
+# modify, copy, or redistribute it subject to the terms and conditions
+# of the GNU General Public License v.2.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
 . lib/paths
-cmd=$(echo ./$0|sed "s,.*/,,")
 
-test "$cmd" = lvm && exec "$abs_top_builddir/tools/lvm" "$@"
-exec "$abs_top_builddir/tools/lvm" "$cmd" "$@"
+CMD=${0##*/}
+test "$CMD" != lvm || unset CMD
+
+# Multiple level of LVM_VALGRIND support
+# the higher level the more commands are traced
+if test -n "$LVM_VALGRIND"; then
+	RUN_VALGRIND="aux run_valgrind";
+	case "$CMD" in
+	  lvs|pvs|vgs|vgck|vgscan)
+		test "$LVM_VALGRIND" -gt 2 || unset RUN_VALGRIND ;;
+	  pvcreate|pvremove|lvremove|vgcreate|vgremove)
+		test "$LVM_VALGRIND" -gt 1 || unset RUN_VALGRIND ;;
+	  *)
+		test "$LVM_VALGRIND" -gt 0 || unset RUN_VALGRIND ;;
+	esac
+fi
+
+$RUN_VALGRIND "$abs_top_builddir/tools/lvm" $CMD "$@" && \
+	rm -f debug.log # Remove log for successful command



                 reply	other threads:[~2012-03-16 12:59 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=20120316125903.23177.qmail@sourceware.org \
    --to=zkabelac@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.