All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/4 v2] test-btrfs-devmgt.sh
@ 2015-02-09  7:05 Anand Jain
  2015-02-09  7:05 ` [PATCH 1/4] Btrfs-progs: add regression tests for sysfs contents during btrfs device management Anand Jain
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Anand Jain @ 2015-02-09  7:05 UTC (permalink / raw)
  To: linux-btrfs; +Cc: dsterba, clm

simple controllable test script to exercise btrfs devices and at the same time collect sysfs (optional) to test for regression.

v1->v2: add some clean ups

Anand Jain (4):
  Btrfs-progs: add regression tests for sysfs contents during btrfs
    device management
  Btrfs-progs: adds simple to use seed test for test-btrfs-devmgt.sh
  Btrfs-progs: test-btrfs-devmgt.sh support if btrfs is root fs
  Btrfs-progs: test-btrfs-devmgt.sh have a safe defaults

 tests/test-btrfs-devmgt.sh | 935 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 935 insertions(+)
 create mode 100755 tests/test-btrfs-devmgt.sh

-- 
1.9.1


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 1/4] Btrfs-progs: add regression tests for sysfs contents during btrfs device management
  2015-02-09  7:05 [PATCH 0/4 v2] test-btrfs-devmgt.sh Anand Jain
@ 2015-02-09  7:05 ` Anand Jain
  2015-02-09  8:24   ` Qu Wenruo
  2015-02-09  7:05 ` [PATCH 2/4] Btrfs-progs: adds simple to use seed test for test-btrfs-devmgt.sh Anand Jain
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 8+ messages in thread
From: Anand Jain @ 2015-02-09  7:05 UTC (permalink / raw)
  To: linux-btrfs; +Cc: dsterba, clm

This contains a series of btrfs device operations and at each operation
the btrfs sysfs contents are logged.  This helps to check if the patch
is affecting any of the btrfs sysfs contents.

OR This script can be used to test the only the device operations.

as of now there are 32 test cases

Signed-off-by: Anand Jain <anand.jain@oracle.com>
---
 tests/test-btrfs-devmgt.sh | 863 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 863 insertions(+)
 create mode 100755 tests/test-btrfs-devmgt.sh

diff --git a/tests/test-btrfs-devmgt.sh b/tests/test-btrfs-devmgt.sh
new file mode 100755
index 0000000..2f75200
--- /dev/null
+++ b/tests/test-btrfs-devmgt.sh
@@ -0,0 +1,863 @@
+# * GNU General Public License v2. Copyright Oracle 2015
+
+
+# Series of btrfs device operation test cases.
+#
+
+# sysfs: test
+# sysfs contents are taken at reasonable places (but you may disable it).
+# So to compare with the next iteration with your kernel patch. so
+# you can check for the sysfs changes by running diff of TMP_FILE(s)
+
+# Changelog:
+# v1.0 init asj
+
+
+		#When you change something related to device
+		#remember to test on btrfs boot separately
+ #test0: btrfs boot test
+
+		#Replace:
+ #test1: raid1, replace normal
+ #test2: raid1, replace missing
+ #test3: NOP
+ #test4: raid1, replace missing, replace normal
+ #test5: raid1, replace dev2, replace dev1
+
+		#Add sprout, replace:
+ #test6: add sprout, replace seed
+ #test7: raid1 seed, add sprout, replace seed, replace sprout
+ #test8: 3 level nested seeds, add sprout, replace mid level seed
+ #test9: raid1, degraded seed mount, add sprout, replace missing, replace non missing seed
+ #test10: add sprout, replace sprout
+ #test11: raid1 seed, add sprout, replace sprout, replace sprout again
+ #test12: 3 level nested seeds, add sprout, replace sprout
+ #test13: degraded raid1 seed, add sprout, replace sprout
+
+		#Mount sprout, replace:
+ #test14: NOP
+ #test15: mount sprout, replace sprout
+ #test16: mount sprout, replace seed
+ #test17: Raid1, mount sprout, replace sprout
+ #test18: Raid1, mount sprout, replace seed
+ #test19: Raid1 degraded, mount sprout, replace sprout
+ #test20: Raid1 degraded, mount sprout, replace missing
+ #test21: 3 level nested seeds, mount sprout, replace mid level seed
+
+		#seed sprout test:
+ #test22: mount sprout, mount seed
+ #test23: clean, mount -o device sprout
+ #test24: raid1, mount sprout
+ #test25: clean, scan, mount sprout
+ #test26: raid1, clean, mount -o device sprout
+ #test26: raid1, clean, scan, mount sprout
+
+		#dev add del test:
+ #test27: dev add
+ #test28: dev del
+
+		#dev scan test:
+ #test29: scan mount
+ #test30: use -o mount
+
+		#subvol mount test:
+ #test31: mount, mount subvol
+
+		#remount test:
+ #test32: mount, remount
+
+
+
+
+# Devices are hard coded. sorry
+
+DEV0=/dev/sdb
+x=0
+if [ $x -eq 1 ]; then
+DEV1=/dev/sdc
+DEV2=/dev/sdd
+DEV3=/dev/sde
+DEV4=/dev/sdf
+DEV5=/dev/sdg
+else
+DEV1=/dev/sdd
+DEV2=/dev/sde
+DEV3=/dev/sdf
+DEV4=/dev/sdg
+DEV5=/dev/sdc
+fi
+
+TEST_FSID=1c52f894-0ead-43d6-847a-d42359f78370
+
+#Enable or disable sysfs data collection by set/unset the below
+#TMP_FILE=''
+TMP_FILE=`mktemp`
+
+ent_cont()
+{
+	echo -n "Enter to continue: "
+	#read
+	echo "wait for input is disabled, uncomment above to wait."
+}
+
+erase()
+{
+	for i in $DEV0 $DEV1 $DEV2 $DEV3 $DEV4 $DEV5; do wipefs -a $i > /dev/null; done
+}
+
+clean()
+{
+	modprobe -r btrfs && modprobe btrfs
+}
+
+collect_sysfs()
+{
+	# see above to disable sysfs data collection
+	[[ -z $TMP_FILE ]] && return
+
+	echo ---------------- $1 ------------- >> $TMP_FILE
+	find /sys/fs/btrfs -type f -exec cat {} \; -print >> $TMP_FILE
+}
+
+_mkfs.btrfs()
+{
+	mkfs.btrfs $* > /dev/null
+}
+
+
+test1()
+{
+	TEST="test1"
+	erase
+	echo -e "\n$TEST"
+_mkfs.btrfs -L $TEST -U $TEST_FSID -d raid1 -m raid1 $DEV1 $DEV2 -f
+	collect_sysfs "$TEST"
+mount $DEV2 /btrfs
+	collect_sysfs "$TEST"
+btrfs rep start -B $DEV2 $DEV3 /btrfs -f
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+	clean
+	ent_cont
+}
+
+test2()
+{
+	TEST="test2"
+	erase
+	echo -e "\n$TEST"
+_mkfs.btrfs -L $TEST -U $TEST_FSID -d raid1 -m raid1 $DEV1 $DEV2 -f
+	clean
+mount -o degraded $DEV1 /btrfs
+	collect_sysfs "$TEST"
+btrfs rep start -B 2 $DEV3 /btrfs -f
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+	clean
+	ent_cont
+}
+
+test4()
+{
+	TEST="test4"
+	erase
+	echo -e "\n$TEST"
+_mkfs.btrfs -L $TEST -U $TEST_FSID -d raid1 -m raid1 $DEV1 $DEV2 -f
+	clean
+mount -o degraded $DEV1 /btrfs
+	collect_sysfs "$TEST"
+btrfs rep start -B 2 $DEV3 /btrfs -f
+	collect_sysfs "$TEST"
+btrfs rep start -B $DEV1 $DEV4 /btrfs -f
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+	clean
+	ent_cont
+}
+
+test5()
+{
+	TEST="test5"
+	erase
+	echo -e "\n$TEST"
+_mkfs.btrfs -L $TEST -U $TEST_FSID -d raid1 -m raid1 $DEV1 $DEV2 -f
+mount $DEV1 /btrfs
+	collect_sysfs "$TEST"
+btrfs rep start -B $DEV2 $DEV3 /btrfs -f
+	collect_sysfs "$TEST"
+btrfs rep start -B $DEV1 $DEV4 /btrfs -f
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+	clean
+	ent_cont
+}
+
+
+##### Seed device test cases replace the seed device ###########
+test6()
+{
+	TEST="test6"
+	erase
+	echo -e "\n$TEST"
+_mkfs.btrfs -L $TEST -U $TEST_FSID $DEV1 -f
+btrfstune -S 1 $DEV1
+mount $DEV1 /btrfs
+	collect_sysfs "$TEST"
+btrfs dev add $DEV2 /btrfs -f
+	collect_sysfs "$TEST"
+btrfs repl start -B $DEV1 $DEV3 /btrfs -f
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+	clean
+	ent_cont
+}
+
+test7()
+{
+	TEST="test7"
+	erase
+	echo -e "\n$TEST"
+_mkfs.btrfs -L $TEST -U $TEST_FSID -draid1 -mraid1 $DEV1 $DEV2 -f
+btrfstune -S 1 $DEV1
+mount $DEV1 /btrfs
+	collect_sysfs "$TEST"
+btrfs dev add $DEV3 /btrfs -f
+	collect_sysfs "$TEST"
+btrfs rep start -B $DEV1 $DEV4 /btrfs -f
+	collect_sysfs "$TEST"
+btrfs rep start -B $DEV2 $DEV5 /btrfs -f
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+	clean
+	ent_cont
+}
+
+test8()
+{
+	TEST="test8"
+	erase
+	echo -e "\n$TEST"
+_mkfs.btrfs -L $TEST -U $TEST_FSID $DEV1 -f
+btrfstune -S 1 $DEV1
+mount $DEV1 /btrfs
+	collect_sysfs "$TEST"
+btrfs dev add $DEV2 /btrfs -f
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+btrfstune -S 1 $DEV2
+mount $DEV2 /btrfs1
+	collect_sysfs "$TEST"
+btrfs dev add $DEV3 /btrfs1 -f
+	collect_sysfs "$TEST"
+umount /btrfs1
+	collect_sysfs "$TEST"
+btrfstune -S 1 $DEV3
+mount $DEV3 /btrfs2
+	collect_sysfs "$TEST"
+btrfs dev add $DEV4 /btrfs2 -f
+	collect_sysfs "$TEST"
+btrfs rep start -B $DEV2 $DEV5 /btrfs2 -f
+	collect_sysfs "$TEST"
+umount /btrfs2
+	collect_sysfs "$TEST"
+mount $DEV5 /btrfs
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+	clean
+	ent_cont
+}
+
+test9()
+{
+	TEST="test9"
+	erase
+	echo -e "\n$TEST"
+_mkfs.btrfs -L $TEST -U $TEST_FSID -d raid1 -m raid1 $DEV1 $DEV2 -f
+	collect_sysfs "$TEST"
+btrfstune -S 1 $DEV1
+	clean
+mount -o degraded $DEV1 /btrfs
+	collect_sysfs "$TEST"
+	echo -e add
+btrfs dev add $DEV3 /btrfs -f
+	collect_sysfs "$TEST"
+	echo -e replace1
+btrfs rep start -B 2 $DEV4 /btrfs -f
+	collect_sysfs "$TEST"
+	echo -e replace2
+btrfs rep start -B $DEV1 $DEV5 /btrfs -f
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+	clean
+	ent_cont
+}
+
+##### Seed device test cases replace the sprout device ###########
+test10()
+{
+	TEST="test10"
+	erase
+	echo -e "\n$TEST"
+_mkfs.btrfs -L $TEST -U $TEST_FSID $DEV1 -f
+btrfstune -S 1 $DEV1
+mount $DEV1 /btrfs
+	collect_sysfs "$TEST"
+btrfs dev add $DEV2 /btrfs -f
+	collect_sysfs "$TEST"
+btrfs repl start -B $DEV2 $DEV3 /btrfs -f
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+	clean
+	ent_cont
+}
+
+test11()
+{
+	TEST="test11"
+	erase
+	echo -e "\n$TEST"
+_mkfs.btrfs -L $TEST -U $TEST_FSID -draid1 -mraid1 $DEV1 $DEV2 -f
+btrfstune -S 1 $DEV1
+mount $DEV1 /btrfs
+	collect_sysfs "$TEST"
+btrfs dev add $DEV3 /btrfs -f
+	collect_sysfs "$TEST"
+btrfs rep start -B $DEV3 $DEV4 /btrfs -f
+	collect_sysfs "$TEST"
+btrfs rep start -B $DEV4 $DEV5 /btrfs -f
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+	clean
+	ent_cont
+}
+
+test12()
+{
+	TEST="test12"
+	erase
+	echo -e "\n$TEST"
+_mkfs.btrfs -L $TEST -U $TEST_FSID $DEV1 -f
+btrfstune -S 1 $DEV1
+mount $DEV1 /btrfs
+	collect_sysfs "$TEST"
+btrfs dev add $DEV2 /btrfs -f
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+btrfstune -S 1 $DEV2
+mount $DEV2 /btrfs1
+	collect_sysfs "$TEST"
+btrfs dev add $DEV3 /btrfs1 -f
+	collect_sysfs "$TEST"
+umount /btrfs1
+	collect_sysfs "$TEST"
+btrfstune -S 1 $DEV3
+mount $DEV3 /btrfs2
+	collect_sysfs "$TEST"
+btrfs dev add $DEV4 /btrfs2 -f
+	collect_sysfs "$TEST"
+btrfs rep start -B $DEV4 $DEV5 /btrfs2 -f
+	collect_sysfs "$TEST"
+umount /btrfs2
+	collect_sysfs "$TEST"
+mount $DEV5 /btrfs
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+	clean
+	ent_cont
+}
+
+test13()
+{
+	TEST="test13"
+	erase
+	echo -e "\n$TEST"
+_mkfs.btrfs -L $TEST -U $TEST_FSID -d raid1 -m raid1 $DEV1 $DEV2 -f
+	collect_sysfs "$TEST"
+btrfstune -S 1 $DEV1
+	clean
+mount -o degraded $DEV1 /btrfs
+	collect_sysfs "$TEST"
+	echo -e add
+btrfs dev add $DEV3 /btrfs -f
+	collect_sysfs "$TEST"
+	echo -e replace1
+btrfs rep start -B $DEV3 $DEV4 /btrfs -f
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+	clean
+	ent_cont
+}
+
+
+test15()
+{
+	TEST="test15"
+	erase
+	echo -e "\n$TEST"
+_mkfs.btrfs -L $TEST -U $TEST_FSID $DEV1 -f
+btrfstune -S 1 $DEV1
+mount $DEV1 /btrfs
+	collect_sysfs "$TEST"
+btrfs dev add $DEV2 /btrfs
+	collect_sysfs "$TEST"
+umount /btrfs
+mount $DEV2 /btrfs
+	collect_sysfs "$TEST"
+btrfs rep start -B $DEV1 $DEV3 /btrfs -f
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+	clean
+	ent_cont
+}
+
+test16()
+{
+	TEST="test16"
+	erase
+	echo -e "\n$TEST"
+_mkfs.btrfs -L $TEST -U $TEST_FSID $DEV1 -f
+btrfstune -S 1 $DEV1
+mount $DEV1 /btrfs
+	collect_sysfs "$TEST"
+btrfs dev add $DEV2 /btrfs
+	collect_sysfs "$TEST"
+umount /btrfs
+mount $DEV2 /btrfs
+	collect_sysfs "$TEST"
+btrfs rep start -B $DEV2 $DEV3 /btrfs -f
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+	clean
+	ent_cont
+}
+
+test17()
+{
+	TEST="test17"
+	erase
+	echo -e "\n$TEST"
+_mkfs.btrfs -L $TEST -U $TEST_FSID -draid1 -mraid1 $DEV1 $DEV2 -f
+btrfstune -S 1 $DEV1
+mount $DEV1 /btrfs
+	collect_sysfs "$TEST"
+btrfs dev add $DEV3 /btrfs -f
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+mount $DEV3 /btrfs
+	collect_sysfs "$TEST"
+btrfs rep start -B $DEV3 $DEV4 /btrfs -f
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+	clean
+	ent_cont
+}
+
+test18()
+{
+	TEST="test18"
+	erase
+	echo -e "\n$TEST"
+_mkfs.btrfs -L $TEST -U $TEST_FSID -draid1 -mraid1 $DEV1 $DEV2 -f
+btrfstune -S 1 $DEV1
+mount $DEV1 /btrfs
+	collect_sysfs "$TEST"
+btrfs dev add $DEV3 /btrfs -f
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+mount $DEV3 /btrfs
+	collect_sysfs "$TEST"
+btrfs rep start -B $DEV1 $DEV4 /btrfs -f
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+	clean
+	ent_cont
+}
+
+test19()
+{
+	TEST="test19"
+	erase
+	echo -e "\n$TEST"
+_mkfs.btrfs -L $TEST -U $TEST_FSID -draid1 -mraid1 $DEV1 $DEV2 -f
+btrfstune -S 1 $DEV1
+mount $DEV1 /btrfs
+	collect_sysfs "$TEST"
+btrfs dev add $DEV3 /btrfs -f
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+	clean
+mount -o degraded -o device=$DEV2 $DEV3 /btrfs
+	collect_sysfs "$TEST"
+btrfs rep start -B $DEV3 $DEV4 /btrfs -f
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+	clean
+	ent_cont
+}
+
+test20()
+{
+	TEST="test20"
+	erase
+	echo -e "\n$TEST"
+_mkfs.btrfs -L $TEST -U $TEST_FSID -draid1 -mraid1 $DEV1 $DEV2 -f
+btrfstune -S 1 $DEV1
+mount $DEV1 /btrfs
+	collect_sysfs "$TEST"
+btrfs dev add $DEV3 /btrfs -f
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+	clean
+mount -o degraded -o device=$DEV2 $DEV3 /btrfs
+	collect_sysfs "$TEST"
+btrfs rep start -B 1 $DEV4 /btrfs -f
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+	clean
+	ent_cont
+}
+
+test21()
+{
+	TEST="test21"
+	erase
+	echo -e "\n$TEST"
+_mkfs.btrfs -L $TEST -U $TEST_FSID $DEV1 -f
+btrfstune -S 1 $DEV1
+mount $DEV1 /btrfs
+	collect_sysfs "$TEST"
+btrfs dev add $DEV2 /btrfs -f
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+btrfstune -S 1 $DEV2
+mount $DEV2 /btrfs
+	collect_sysfs "$TEST"
+btrfs dev add $DEV3 /btrfs -f
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+btrfstune -S 1 $DEV3
+mount $DEV3 /btrfs
+	collect_sysfs "$TEST"
+btrfs dev add $DEV4 /btrfs2 -f
+	collect_sysfs "$TEST"
+umount /btrfs
+mount $DEV4 /btrfs
+btrfs rep start -B $DEV2 $DEV5 /btrfs -f
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+mount $DEV5 /btrfs
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+	clean
+	ent_cont
+}
+
+test22()
+{
+	TEST="test22"
+	erase
+	echo -e "\n$TEST"
+_mkfs.btrfs -L $TEST -U $TEST_FSID $DEV1 -f
+btrfstune -S 1 $DEV1
+mount $DEV1 /btrfs
+	collect_sysfs "$TEST"
+btrfs dev add $DEV2 /btrfs
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+mount $DEV2 /btrfs
+	collect_sysfs "$TEST"
+mount $DEV1 /btrfs1
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+umount /btrfs1
+	collect_sysfs "$TEST"
+	clean
+	ent_cont
+}
+
+
+test23()
+{
+	TEST="test23"
+	erase
+	echo -e "\n$TEST"
+_mkfs.btrfs -L $TEST -U $TEST_FSID $DEV1 -f
+btrfstune -S 1 $DEV1
+mount $DEV1 /btrfs
+	collect_sysfs "$TEST"
+btrfs dev add $DEV2 /btrfs
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+
+	clean
+
+mount -o device=$DEV1 $DEV2 /btrfs
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+	clean
+	ent_cont
+}
+
+test24()
+{
+	TEST="test24"
+	erase
+	echo -e "\n$TEST"
+_mkfs.btrfs -L $TEST -U $TEST_FSID $DEV1 $DEV2 -f
+btrfstune -S 1 $DEV1
+mount $DEV1 /btrfs
+	collect_sysfs "$TEST"
+btrfs dev add $DEV3 /btrfs
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+mount $DEV3 /btrfs
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+	clean
+	ent_cont
+}
+
+test25()
+{
+	TEST="test25"
+	erase
+	echo -e "\n$TEST"
+_mkfs.btrfs -L $TEST -U $TEST_FSID $DEV1 -f
+btrfstune -S 1 $DEV1
+mount $DEV1 /btrfs
+	collect_sysfs "$TEST"
+btrfs dev add $DEV2 /btrfs
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+
+	clean
+
+btrfs dev scan
+mount $DEV2 /btrfs
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+	clean
+	ent_cont
+}
+
+test26()
+{
+	TEST="test26"
+	erase
+	echo -e "\n$TEST"
+_mkfs.btrfs -L $TEST -U $TEST_FSID $DEV1 $DEV2 -f
+btrfstune -S 1 $DEV1
+mount $DEV1 /btrfs
+	collect_sysfs "$TEST"
+btrfs dev add $DEV3 /btrfs
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+
+	clean
+
+mount -o device=$DEV1 -o device=$DEV2 $DEV3 /btrfs
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+	clean
+	ent_cont
+}
+
+test27()
+{
+	TEST="test27"
+	erase
+	echo -e "\n$TEST"
+_mkfs.btrfs -L $TEST -U $TEST_FSID $DEV1 $DEV2 -f
+mount $DEV1 /btrfs
+	collect_sysfs "$TEST"
+btrfs dev add $DEV3 /btrfs
+	collect_sysfs "$TEST"
+btrfs dev del $DEV1 /btrfs
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+	ent_cont
+}
+
+test28()
+{
+	TEST="test28" && erase && echo -e "\n$TEST"
+
+_mkfs.btrfs -dsingle -msingle -L $TEST -U $TEST_FSID $DEV1 $DEV2 -f
+mount $DEV1 /btrfs
+	collect_sysfs "$TEST"
+btrfs dev del $DEV1 /btrfs
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+
+	ent_cont
+}
+
+test29()
+{
+	TEST="test29" && erase && echo -e "\n$TEST"
+clean
+	collect_sysfs "$TEST"
+_mkfs.btrfs -dsingle -msingle -L $TEST -U $TEST_FSID $DEV1 $DEV2 -f
+	collect_sysfs "$TEST"
+clean
+	collect_sysfs "$TEST"
+btrfs dev scan
+	collect_sysfs "$TEST"
+mount $DEV1 /btrfs
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+clean
+	collect_sysfs "$TEST"
+
+	ent_cont
+
+}
+
+test30()
+{
+	TEST="test30" && erase && echo -e "\n$TEST"
+clean
+	collect_sysfs "$TEST"
+_mkfs.btrfs -dsingle -msingle -L $TEST -U $TEST_FSID $DEV1 $DEV2 $DEV3 -f
+	collect_sysfs "$TEST"
+clean
+	collect_sysfs "$TEST"
+mount -o device=$DEV1,device=$DEV2 $DEV3 /btrfs
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+clean
+	collect_sysfs "$TEST"
+
+	ent_cont
+}
+
+test31()
+{
+	TEST="test31" && erase && echo -e "\n$TEST"
+clean
+	collect_sysfs "$TEST"
+_mkfs.btrfs -L $TEST -U $TEST_FSID $DEV1 -f
+	collect_sysfs "$TEST"
+mount $DEV1 /btrfs
+	collect_sysfs "$TEST"
+btrfs su create /btrfs/sv1
+mount -o subvol=sv1 $DEV1 /btrfs1
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+umount /btrfs1
+	collect_sysfs "$TEST"
+clean
+	collect_sysfs "$TEST"
+
+	ent_cont
+}
+
+test32()
+{
+	TEST="test32" && erase && echo -e "\n$TEST"
+clean
+	collect_sysfs "$TEST"
+_mkfs.btrfs -L $TEST -U $TEST_FSID $DEV1 -f
+	collect_sysfs "$TEST"
+mount $DEV1 /btrfs
+	collect_sysfs "$TEST"
+mount -o remount /btrfs
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+clean
+	collect_sysfs "$TEST"
+
+	ent_cont
+}
+
+test0()
+{
+  echo "Have you tested with btrfs boot, you can't do that here\n"
+}
+
+clean
+sleep 2; test1
+sleep 2; test2
+sleep 2; test3
+sleep 2; test4
+sleep 2; test5
+
+# Due to a bug in the ref below, don't enable 6-21 yet.
+#   ref: email: Sub: "replace seed/sprout hangs (regression ?)"
+#sleep 2; test6
+#sleep 2; test7
+#sleep 2; test8
+#sleep 2; test9
+#sleep 2; test9
+#sleep 2; test10
+#sleep 2; test11
+#sleep 2; test12
+#sleep 2; test13
+
+#sleep 2; test14
+#sleep 2; test15
+#sleep 2; test16
+#sleep 2; test17
+#sleep 2; test18
+#sleep 2; test19
+#sleep 2; test20
+#sleep 2; test21
+
+sleep 2; test22
+sleep 2; test23
+sleep 2; test24
+sleep 2; test25
+sleep 2; test26
+
+sleep 2; test27
+sleep 2; test28
+sleep 2; test29
+sleep 2; test30
+sleep 2; test31
+sleep 2; test32
+
+[[ -z $TMP_FILE ]] || echo -e "\nTMP_FILE= $TMP_FILE"
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 2/4] Btrfs-progs: adds simple to use seed test for test-btrfs-devmgt.sh
  2015-02-09  7:05 [PATCH 0/4 v2] test-btrfs-devmgt.sh Anand Jain
  2015-02-09  7:05 ` [PATCH 1/4] Btrfs-progs: add regression tests for sysfs contents during btrfs device management Anand Jain
@ 2015-02-09  7:05 ` Anand Jain
  2015-02-09  7:05 ` [PATCH 3/4] Btrfs-progs: test-btrfs-devmgt.sh support if btrfs is root fs Anand Jain
  2015-02-09  7:05 ` [PATCH 4/4] Btrfs-progs: test-btrfs-devmgt.sh have a safe defaults Anand Jain
  3 siblings, 0 replies; 8+ messages in thread
From: Anand Jain @ 2015-02-09  7:05 UTC (permalink / raw)
  To: linux-btrfs; +Cc: dsterba, clm

Signed-off-by: Anand Jain <anand.jain@oracle.com>
---
 tests/test-btrfs-devmgt.sh | 76 +++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 75 insertions(+), 1 deletion(-)

diff --git a/tests/test-btrfs-devmgt.sh b/tests/test-btrfs-devmgt.sh
index 2f75200..5facbdb 100755
--- a/tests/test-btrfs-devmgt.sh
+++ b/tests/test-btrfs-devmgt.sh
@@ -66,7 +66,10 @@
 		#remount test:
  #test32: mount, remount
 
-
+		#add sprout test:
+ #test33: add sprout
+ #test34: raid1 seed, add sprout
+ #test35: add sprout, umount, mount seed, mount sprout
 
 
 # Devices are hard coded. sorry
@@ -814,6 +817,73 @@ clean
 	ent_cont
 }
 
+test33()
+{
+	TEST="test33" && erase && echo -e "\n$TEST"
+clean
+	collect_sysfs "$TEST"
+_mkfs.btrfs -L $TEST -U $TEST_FSID $DEV1 -f
+	collect_sysfs "$TEST"
+btrfstune -S 1 $DEV1
+mount $DEV1 /btrfs
+	collect_sysfs "$TEST"
+btrfs dev add $DEV2 /btrfs
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+clean
+	collect_sysfs "$TEST"
+
+	ent_cont
+}
+
+test34()
+{
+	TEST="test34" && erase && echo -e "\n$TEST"
+clean
+	collect_sysfs "$TEST"
+_mkfs.btrfs -draid1 -mraid1 -L $TEST -U $TEST_FSID $DEV1 $DEV2 -f
+	collect_sysfs "$TEST"
+btrfstune -S 1 $DEV1
+mount $DEV1 /btrfs
+	collect_sysfs "$TEST"
+btrfs dev add $DEV3 /btrfs
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+clean
+	collect_sysfs "$TEST"
+
+	ent_cont
+}
+
+test35()
+{
+	TEST="test35" && erase && echo -e "\n$TEST"
+clean
+	collect_sysfs "$TEST"
+_mkfs.btrfs -L $TEST -U $TEST_FSID $DEV1 -f
+	collect_sysfs "$TEST"
+btrfstune -S 1 $DEV1
+mount $DEV1 /btrfs
+	collect_sysfs "$TEST"
+btrfs dev add $DEV2 /btrfs
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+mount $DEV1 /btrfs
+	collect_sysfs "$TEST"
+mount $DEV2 /btrfs1
+	collect_sysfs "$TEST"
+umount /btrfs
+	collect_sysfs "$TEST"
+umount /btrfs1
+clean
+	collect_sysfs "$TEST"
+
+	ent_cont
+}
+
 test0()
 {
   echo "Have you tested with btrfs boot, you can't do that here\n"
@@ -860,4 +930,8 @@ sleep 2; test30
 sleep 2; test31
 sleep 2; test32
 
+sleep 2; test33
+sleep 2; test34
+sleep 2; test35
+
 [[ -z $TMP_FILE ]] || echo -e "\nTMP_FILE= $TMP_FILE"
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 3/4] Btrfs-progs: test-btrfs-devmgt.sh support if btrfs is root fs
  2015-02-09  7:05 [PATCH 0/4 v2] test-btrfs-devmgt.sh Anand Jain
  2015-02-09  7:05 ` [PATCH 1/4] Btrfs-progs: add regression tests for sysfs contents during btrfs device management Anand Jain
  2015-02-09  7:05 ` [PATCH 2/4] Btrfs-progs: adds simple to use seed test for test-btrfs-devmgt.sh Anand Jain
@ 2015-02-09  7:05 ` Anand Jain
  2015-02-09  7:05 ` [PATCH 4/4] Btrfs-progs: test-btrfs-devmgt.sh have a safe defaults Anand Jain
  3 siblings, 0 replies; 8+ messages in thread
From: Anand Jain @ 2015-02-09  7:05 UTC (permalink / raw)
  To: linux-btrfs; +Cc: dsterba, clm

Signed-off-by: Anand Jain <anand.jain@oracle.com>
---
 tests/test-btrfs-devmgt.sh | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/tests/test-btrfs-devmgt.sh b/tests/test-btrfs-devmgt.sh
index 5facbdb..55bc877 100755
--- a/tests/test-btrfs-devmgt.sh
+++ b/tests/test-btrfs-devmgt.sh
@@ -96,6 +96,10 @@ TEST_FSID=1c52f894-0ead-43d6-847a-d42359f78370
 #TMP_FILE=''
 TMP_FILE=`mktemp`
 
+#If the btrfs is root fs as well then set this
+CANT_CLEAN='yes'
+#CANT_CLEAN=''
+
 ent_cont()
 {
 	echo -n "Enter to continue: "
@@ -110,7 +114,7 @@ erase()
 
 clean()
 {
-	modprobe -r btrfs && modprobe btrfs
+	[[ -z $CANT_CLEAN ]] && modprobe -r btrfs && modprobe btrfs
 }
 
 collect_sysfs()
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 4/4] Btrfs-progs: test-btrfs-devmgt.sh have a safe defaults
  2015-02-09  7:05 [PATCH 0/4 v2] test-btrfs-devmgt.sh Anand Jain
                   ` (2 preceding siblings ...)
  2015-02-09  7:05 ` [PATCH 3/4] Btrfs-progs: test-btrfs-devmgt.sh support if btrfs is root fs Anand Jain
@ 2015-02-09  7:05 ` Anand Jain
  3 siblings, 0 replies; 8+ messages in thread
From: Anand Jain @ 2015-02-09  7:05 UTC (permalink / raw)
  To: linux-btrfs; +Cc: dsterba, clm

After I burnt my fingers by testing on non test disks,
decided to have a safe defaults

Signed-off-by: Anand Jain <anand.jain@oracle.com>
---
 tests/test-btrfs-devmgt.sh | 36 +++++++++++++++---------------------
 1 file changed, 15 insertions(+), 21 deletions(-)

diff --git a/tests/test-btrfs-devmgt.sh b/tests/test-btrfs-devmgt.sh
index 55bc877..71d9ac4 100755
--- a/tests/test-btrfs-devmgt.sh
+++ b/tests/test-btrfs-devmgt.sh
@@ -9,9 +9,6 @@
 # So to compare with the next iteration with your kernel patch. so
 # you can check for the sysfs changes by running diff of TMP_FILE(s)
 
-# Changelog:
-# v1.0 init asj
-
 
 		#When you change something related to device
 		#remember to test on btrfs boot separately
@@ -74,21 +71,15 @@
 
 # Devices are hard coded. sorry
 
-DEV0=/dev/sdb
-x=0
-if [ $x -eq 1 ]; then
-DEV1=/dev/sdc
-DEV2=/dev/sdd
-DEV3=/dev/sde
-DEV4=/dev/sdf
-DEV5=/dev/sdg
-else
-DEV1=/dev/sdd
-DEV2=/dev/sde
-DEV3=/dev/sdf
-DEV4=/dev/sdg
-DEV5=/dev/sdc
-fi
+# Assign per your config, all 5 needed, replace might fail
+# if DEV5 < DEV4 < DEV3 < DEV2 < DEV1
+#DEV1=/dev/sdd
+#DEV2=/dev/sde
+#DEV3=/dev/sdf
+#DEV4=/dev/sdg
+#DEV5=/dev/sdc
+
+[[ -z $DEV1 ]] || [[ -z $DEV2 ]] || [[ -z $DEV3 ]] || [[ -z $DEV4 ]] || [[ -z $DEV5 ]] && echo "Need to initialize DEVx as above here" && exit
 
 TEST_FSID=1c52f894-0ead-43d6-847a-d42359f78370
 
@@ -97,7 +88,7 @@ TEST_FSID=1c52f894-0ead-43d6-847a-d42359f78370
 TMP_FILE=`mktemp`
 
 #If the btrfs is root fs as well then set this
-CANT_CLEAN='yes'
+#CANT_CLEAN='yes'
 #CANT_CLEAN=''
 
 ent_cont()
@@ -109,12 +100,15 @@ ent_cont()
 
 erase()
 {
-	for i in $DEV0 $DEV1 $DEV2 $DEV3 $DEV4 $DEV5; do wipefs -a $i > /dev/null; done
+	for i in $DEV1 $DEV2 $DEV3 $DEV4 $DEV5; do wipefs -a $i > /dev/null; done
 }
 
 clean()
 {
-	[[ -z $CANT_CLEAN ]] && modprobe -r btrfs && modprobe btrfs
+	[[ -z $CANT_CLEAN ]] && return
+
+	! modprobe -r btrfs && echo "For btrfs boot set CANT_CLEAN to yes here above" && exit
+	modprobe btrfs
 }
 
 collect_sysfs()
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/4] Btrfs-progs: add regression tests for sysfs contents during btrfs device management
  2015-02-09  7:05 ` [PATCH 1/4] Btrfs-progs: add regression tests for sysfs contents during btrfs device management Anand Jain
@ 2015-02-09  8:24   ` Qu Wenruo
  2015-02-11 18:19     ` David Sterba
  0 siblings, 1 reply; 8+ messages in thread
From: Qu Wenruo @ 2015-02-09  8:24 UTC (permalink / raw)
  To: Anand Jain, linux-btrfs; +Cc: dsterba, clm


-------- Original Message --------
Subject: [PATCH 1/4] Btrfs-progs: add regression tests for sysfs 
contents during btrfs device management
From: Anand Jain <anand.jain@oracle.com>
To: <linux-btrfs@vger.kernel.org>
Date: 2015年02月09日 15:05
> This contains a series of btrfs device operations and at each operation
> the btrfs sysfs contents are logged.  This helps to check if the patch
> is affecting any of the btrfs sysfs contents.
>
> OR This script can be used to test the only the device operations.
>
> as of now there are 32 test cases
>
> Signed-off-by: Anand Jain <anand.jain@oracle.com>
> ---
>   tests/test-btrfs-devmgt.sh | 863 +++++++++++++++++++++++++++++++++++++++++++++
>   1 file changed, 863 insertions(+)
>   create mode 100755 tests/test-btrfs-devmgt.sh
>
> diff --git a/tests/test-btrfs-devmgt.sh b/tests/test-btrfs-devmgt.sh
> new file mode 100755
> index 0000000..2f75200
> --- /dev/null
> +++ b/tests/test-btrfs-devmgt.sh
> @@ -0,0 +1,863 @@
> +# * GNU General Public License v2. Copyright Oracle 2015
> +
> +
> +# Series of btrfs device operation test cases.
> +#
> +
> +# sysfs: test
> +# sysfs contents are taken at reasonable places (but you may disable it).
> +# So to compare with the next iteration with your kernel patch. so
> +# you can check for the sysfs changes by running diff of TMP_FILE(s)
> +
> +# Changelog:
> +# v1.0 init asj
> +
> +
> +		#When you change something related to device
> +		#remember to test on btrfs boot separately
> + #test0: btrfs boot test
> +
> +		#Replace:
> + #test1: raid1, replace normal
> + #test2: raid1, replace missing
> + #test3: NOP
> + #test4: raid1, replace missing, replace normal
> + #test5: raid1, replace dev2, replace dev1
> +
> +		#Add sprout, replace:
> + #test6: add sprout, replace seed
> + #test7: raid1 seed, add sprout, replace seed, replace sprout
> + #test8: 3 level nested seeds, add sprout, replace mid level seed
> + #test9: raid1, degraded seed mount, add sprout, replace missing, replace non missing seed
> + #test10: add sprout, replace sprout
> + #test11: raid1 seed, add sprout, replace sprout, replace sprout again
> + #test12: 3 level nested seeds, add sprout, replace sprout
> + #test13: degraded raid1 seed, add sprout, replace sprout
> +
> +		#Mount sprout, replace:
> + #test14: NOP
> + #test15: mount sprout, replace sprout
> + #test16: mount sprout, replace seed
> + #test17: Raid1, mount sprout, replace sprout
> + #test18: Raid1, mount sprout, replace seed
> + #test19: Raid1 degraded, mount sprout, replace sprout
> + #test20: Raid1 degraded, mount sprout, replace missing
> + #test21: 3 level nested seeds, mount sprout, replace mid level seed
> +
> +		#seed sprout test:
> + #test22: mount sprout, mount seed
> + #test23: clean, mount -o device sprout
> + #test24: raid1, mount sprout
> + #test25: clean, scan, mount sprout
> + #test26: raid1, clean, mount -o device sprout
> + #test26: raid1, clean, scan, mount sprout
> +
> +		#dev add del test:
> + #test27: dev add
> + #test28: dev del
> +
> +		#dev scan test:
> + #test29: scan mount
> + #test30: use -o mount
> +
> +		#subvol mount test:
> + #test31: mount, mount subvol
> +
> +		#remount test:
> + #test32: mount, remount
This tests are not even not bind to btrfs-progs.
They are kernel tests in fact.

So btrfs-progs isn't the best place for it.

Thanks,
Qu
> +
> +
> +
> +
> +# Devices are hard coded. sorry
> +


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/4] Btrfs-progs: add regression tests for sysfs contents during btrfs device management
  2015-02-09  8:24   ` Qu Wenruo
@ 2015-02-11 18:19     ` David Sterba
  2015-02-19  6:33       ` Anand Jain
  0 siblings, 1 reply; 8+ messages in thread
From: David Sterba @ 2015-02-11 18:19 UTC (permalink / raw)
  To: Qu Wenruo; +Cc: Anand Jain, linux-btrfs, dsterba, clm

On Mon, Feb 09, 2015 at 04:24:12PM +0800, Qu Wenruo wrote:
> This tests are not even not bind to btrfs-progs.
> They are kernel tests in fact.
> 
> So btrfs-progs isn't the best place for it.

Well, I agree. Userspace tools mostly exercise the checker, repair or
image, ie. mostly offline actions.  The mount test that now exists is to
really check that the fixed filesystem can be mounted.

The tests Anand proposes perform add, replace, seeding etc. That really
belongs to fstests.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/4] Btrfs-progs: add regression tests for sysfs contents during btrfs device management
  2015-02-11 18:19     ` David Sterba
@ 2015-02-19  6:33       ` Anand Jain
  0 siblings, 0 replies; 8+ messages in thread
From: Anand Jain @ 2015-02-19  6:33 UTC (permalink / raw)
  To: dsterba, Qu Wenruo, linux-btrfs, clm



On 02/12/2015 02:19 AM, David Sterba wrote:
> On Mon, Feb 09, 2015 at 04:24:12PM +0800, Qu Wenruo wrote:
>> This tests are not even not bind to btrfs-progs.
>> They are kernel tests in fact.
>>
>> So btrfs-progs isn't the best place for it.
>
> Well, I agree. Userspace tools mostly exercise the checker, repair or
> image, ie. mostly offline actions.  The mount test that now exists is to
> really check that the fixed filesystem can be mounted.
>
> The tests Anand proposes perform add, replace, seeding etc. That really
> belongs to fstests.

  we could get sysfs data collection in fstests like this..

  _btrfs_progs()
  {
      btrfs $*
      [[ -z TEST_SYSFS ]] && collect_sysfs_data
  }
  and TEST_SYSFS must be set in the config file.

  Similarly for mount, unmount, modload and modunload etc..

  For now my patches are already tested with  test-btrfs-devmgt, which 
is uploaded here git@github.com:asj/test-btrfs-devmgt.git for reference, 
(but I don't intend to maintain it though).

Thanks,  Anand
> --
> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2015-02-19  6:33 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-02-09  7:05 [PATCH 0/4 v2] test-btrfs-devmgt.sh Anand Jain
2015-02-09  7:05 ` [PATCH 1/4] Btrfs-progs: add regression tests for sysfs contents during btrfs device management Anand Jain
2015-02-09  8:24   ` Qu Wenruo
2015-02-11 18:19     ` David Sterba
2015-02-19  6:33       ` Anand Jain
2015-02-09  7:05 ` [PATCH 2/4] Btrfs-progs: adds simple to use seed test for test-btrfs-devmgt.sh Anand Jain
2015-02-09  7:05 ` [PATCH 3/4] Btrfs-progs: test-btrfs-devmgt.sh support if btrfs is root fs Anand Jain
2015-02-09  7:05 ` [PATCH 4/4] Btrfs-progs: test-btrfs-devmgt.sh have a safe defaults Anand Jain

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.