[lvm-devel] LVM2/test test-utils.sh t-inconsistent-metadata.sh

mornfall at sourceware.org mornfall at sourceware.org
Fri Jan 9 10:16:58 UTC 2009


CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	mornfall at sourceware.org	2009-01-09 10:16:58

Modified files:
	test           : test-utils.sh 
Added files:
	test           : t-inconsistent-metadata.sh 

Log message:
	Document current state of inconsistent metadata behaviour of a few commands in
	a test. Should make changes to the !consistent bits of code easier. To be
	expanded.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/t-inconsistent-metadata.sh.diff?cvsroot=lvm2&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/test-utils.sh.diff?cvsroot=lvm2&r1=1.8&r2=1.9

/cvs/lvm2/LVM2/test/t-inconsistent-metadata.sh,v  -->  standard output
revision 1.1
--- LVM2/test/t-inconsistent-metadata.sh
+++ -	2009-01-09 10:16:58.626158000 +0000
@@ -0,0 +1,62 @@
+#!/bin/bash
+# Copyright (C) 2008 Red Hat, Inc. All rights reserved.
+#
+# 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
+
+. ./test-utils.sh
+
+aux prepare_vg 3
+
+lvcreate -m 1 -l 1 -n mirror $vg
+lvcreate -l 1 -n resized $vg
+lvchange -a n $vg/mirror
+
+backup_dev $devs
+
+init() {
+	restore_dev $devs
+	lvs -o lv_name,lv_size --units k $vg | tee lvs.out
+	grep resized lvs.out | not grep 8192
+	lvresize -L 8192K $vg/resized
+	restore_dev $dev1
+}
+	
+check() {
+	lvs -o lv_name,lv_size --units k $vg | tee lvs.out
+	grep resized lvs.out | grep 8192
+}
+
+# vgscan fixes up metadata
+init
+vgscan 2>&1 | tee cmd.out
+grep "Inconsistent metadata found for VG $vg" cmd.out
+vgscan 2>&1 | tee cmd.out
+not grep "Inconsistent metadata found for VG $vg" cmd.out
+check
+
+# vgdisplay doesn't change anything
+init
+vgdisplay 2>&1 | tee cmd.out
+grep "Volume group \"$vg\" inconsistent" cmd.out
+vgdisplay 2>&1 | tee cmd.out
+grep "Volume group \"$vg\" inconsistent" cmd.out
+
+# lvs fixes up
+init
+lvs 2>&1 | tee cmd.out
+grep "Inconsistent metadata found for VG $vg - updating" cmd.out
+vgdisplay 2>&1 | tee cmd.out
+not grep "Volume group \"$vg\" inconsistent" cmd.out
+check
+
+# vgs doesn't fix up... (why?)
+init
+vgs 2>&1 | tee cmd.out
+vgdisplay 2>&1 | tee cmd.out
+grep "Volume group \"$vg\" inconsistent" cmd.out
--- LVM2/test/test-utils.sh	2008/12/10 16:16:53	1.8
+++ LVM2/test/test-utils.sh	2009/01/09 10:16:57	1.9
@@ -17,7 +17,15 @@
 	#"$@"
 }
 
-not () { "$@" && exit 1 || return 0; }
+not () {
+	"$@" && exit 1 || {
+		err="$?"
+		if test "$err" = 129; then
+			echo "fatal error $err"
+			exit 1
+		fi
+	}
+}
 
 STACKTRACE() {
 	trap - ERR;
@@ -44,7 +52,10 @@
 
 	test -n "$LOOP" && losetup -d $LOOP
 	test -n "$LOOPFILE" && rm -f $LOOPFILE
+}
 
+teardown_() {
+	teardown
 	cleanup_ # user-overridable cleanup
 	testlib_cleanup_ # call test-lib cleanup routine, too
 }
@@ -60,7 +71,7 @@
 	test -n "$size" || size=32
 
 	test -n "$LOOP" && return 0
-	trap 'aux teardown' EXIT # don't forget to clean up
+	trap 'aux teardown_' EXIT # don't forget to clean up
 	trap 'set +vex; STACKTRACE; set -vex' ERR
 	#trap - ERR
 
@@ -147,6 +158,22 @@
 	done
 }
 
+backup_dev() {
+	for dev in "$@"; do
+		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
+	done
+}
+
 prepare_pvs() {
 	prepare_devs "$@"
 	pvcreate $devs




More information about the lvm-devel mailing list