[lvm-devel] master - test: Add support for running LVM commands in tests through strace.

Petr Rockai mornfall at fedoraproject.org
Thu Feb 5 13:43:17 UTC 2015


Gitweb:        http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=5d833fd4587ce30eb1fb4e20363ede07c40bc2f0
Commit:        5d833fd4587ce30eb1fb4e20363ede07c40bc2f0
Parent:        a6d006d9db033e8251fd58848f8876b3e3d0fe90
Author:        Petr Rockai <prockai at redhat.com>
AuthorDate:    Tue Sep 30 17:09:26 2014 +0200
Committer:     Petr Rockai <prockai at redhat.com>
CommitterDate: Thu Feb 5 13:50:34 2015 +0100

test: Add support for running LVM commands in tests through strace.

---
 test/lib/aux.sh         |   18 +++++++++---------
 test/lib/lvm-wrapper.sh |   23 ++++++++++++++---------
 test/lib/utils.sh       |    1 +
 3 files changed, 24 insertions(+), 18 deletions(-)

diff --git a/test/lib/aux.sh b/test/lib/aux.sh
index fd537bd..ca06c69 100644
--- a/test/lib/aux.sh
+++ b/test/lib/aux.sh
@@ -22,7 +22,7 @@ expect_failure() {
 }
 
 prepare_clvmd() {
-	rm -f debug.log
+	rm -f debug.log strace.log
 	test "${LVM_TEST_LOCKING:-0}" -ne 3 && return # not needed
 
 	if pgrep clvmd ; then
@@ -54,7 +54,7 @@ prepare_clvmd() {
 }
 
 prepare_dmeventd() {
-	rm -f debug.log
+	rm -f debug.log strace.log
 	if pgrep dmeventd ; then
 		echo "Cannot test dmeventd with real dmeventd ($(pgrep dmeventd)) running."
 		skip
@@ -81,7 +81,7 @@ prepare_dmeventd() {
 
 prepare_lvmetad() {
 	test $# -eq 0 && default_opts="-l wire,debug"
-	rm -f debug.log
+	rm -f debug.log strace.log
 	# skip if we don't have our own lvmetad...
 	(which lvmetad 2>/dev/null | grep "$abs_builddir") || skip
 
@@ -227,7 +227,7 @@ teardown() {
 		# Avoid activation of dmeventd if there is no pid
 		cfg=$(test -s LOCAL_DMEVENTD || echo "--config activation{monitoring=0}")
 		vgremove -ff $cfg  \
-			$vg $vg1 $vg2 $vg3 $vg4 &>/dev/null || rm -f debug.log
+			$vg $vg1 $vg2 $vg3 $vg4 &>/dev/null || rm -f debug.log strace.log
 	}
 
 	kill_sleep_kill_ LOCAL_CLVMD ${LVM_VALGRIND_CLVMD:-0}
@@ -478,7 +478,7 @@ enable_dev() {
 	    shift
 	fi
 
-	rm -f debug.log
+	rm -f debug.log strace.log
 	init_udev_transaction
 	for dev in "$@"; do
 		local name=$(echo "$dev" | sed -e 's,.*/,,')
@@ -601,7 +601,7 @@ unhide_dev() {
 }
 
 mkdev_md5sum() {
-	rm -f debug.log
+	rm -f debug.log strace.log
 	mkfs.ext2 "$DM_DEV_DIR/$1/$2" || return 1
 	md5sum "$DM_DEV_DIR/$1/$2" > "md5.$1-$2"
 }
@@ -704,12 +704,12 @@ apitest() {
 	local t=$1
 	shift
 	test -x "$abs_top_builddir/test/api/$t.t" || skip
-	"$abs_top_builddir/test/api/$t.t" "$@" && rm -f debug.log
+	"$abs_top_builddir/test/api/$t.t" "$@" && rm -f debug.log strace.log
 }
 
 api() {
 	test -x "$abs_top_builddir/test/api/wrapper" || skip
-	"$abs_top_builddir/test/api/wrapper" "$@" && rm -f debug.log
+	"$abs_top_builddir/test/api/wrapper" "$@" && rm -f debug.log strace.log
 }
 
 mirror_recovery_works() {
@@ -820,7 +820,7 @@ version_at_least() {
 #
 # i.e.   dm_target_at_least  dm-thin-pool  1 0
 target_at_least() {
-	rm -f debug.log
+	rm -f debug.log strace.log
 	case "$1" in
 	  dm-*) modprobe "$1" || true ;;
 	esac
diff --git a/test/lib/lvm-wrapper.sh b/test/lib/lvm-wrapper.sh
index 013bc13..3eb0d99 100644
--- a/test/lib/lvm-wrapper.sh
+++ b/test/lib/lvm-wrapper.sh
@@ -24,17 +24,22 @@ test -z "$LVM_GDB" || exec gdb --readnow --args "$abs_top_builddir/tools/lvm" $C
 # 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
+	RUN_DBG="aux run_valgrind";
 fi
 
+if test -n "$LVM_STRACE"; then
+	RUN_DBG="strace $LVM_STRACE -o strace.log"
+fi
+
+set -x
+
+case "$CMD" in
+  lvs|pvs|vgs|vgck|vgscan)
+	test ${LVM_DEBUG_LEVEL:-0} -lt 2 && RUN_DBG= ;;
+  pvcreate|pvremove|lvremove|vgcreate|vgremove)
+	test ${LVM_DEBUG_LEVEL:-0} -lt 1 && RUN_DBG= ;;
+esac
+
 # the exec is important, because otherwise fatal signals inside "not" go unnoticed
 if test -n "$abs_top_builddir"; then
     exec $RUN_DBG "$abs_top_builddir/tools/lvm" $CMD "$@"
diff --git a/test/lib/utils.sh b/test/lib/utils.sh
index 70f8ca5..0599f4d 100644
--- a/test/lib/utils.sh
+++ b/test/lib/utils.sh
@@ -129,6 +129,7 @@ STACKTRACE() {
 
 	test -z "$LVM_TEST_NODEBUG" -a -f debug.log && {
 		sed -e "s,^,## DEBUG: ,;s,$top_srcdir/\?,," < debug.log
+		test -e strace.log && sed -e "s,^,## STRACE: ,;s,$top_srcdir/\?,," < strace.log
 	}
 
 	test -f SKIP_THIS_TEST && exit 200




More information about the lvm-devel mailing list