[lvm-devel] master - tests: fix working with devs in array

Zdenek Kabelac zkabelac at sourceware.org
Mon Jul 10 12:28:30 UTC 2017


Gitweb:        https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=bc10d0373ad7c2e9997896c72e0740bd71bc8e46
Commit:        bc10d0373ad7c2e9997896c72e0740bd71bc8e46
Parent:        fdbb680531b08e03dba2dc3d2f22381bf55abbb0
Author:        Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate:    Sat Jul 8 18:23:47 2017 +0200
Committer:     Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Mon Jul 10 14:23:53 2017 +0200

tests: fix working with devs in array

Also fixes one instance of invalid  'mirror_image_on' test
and places there correct indexed set of PVs.
---
 test/shell/mirror-vgreduce-removemissing.sh |   82 +++++++++++++++-----------
 1 files changed, 47 insertions(+), 35 deletions(-)

diff --git a/test/shell/mirror-vgreduce-removemissing.sh b/test/shell/mirror-vgreduce-removemissing.sh
index 7f0c190..2707059 100644
--- a/test/shell/mirror-vgreduce-removemissing.sh
+++ b/test/shell/mirror-vgreduce-removemissing.sh
@@ -1,6 +1,6 @@
 #!/usr/bin/env bash
 
-# Copyright (C) 2008-2012 Red Hat, Inc. All rights reserved.
+# Copyright (C) 2008-2017 Red Hat, Inc. All rights reserved.
 # Copyright (C) 2007 NEC Corporation
 #
 # This copyrighted material is made available to anyone wishing to use,
@@ -20,18 +20,20 @@ export LVM_TEST_LVMETAD_DEBUG_OPTS=${LVM_TEST_LVMETAD_DEBUG_OPTS-}
 
 . lib/inittest
 
+list_pvs=()
+
 lv_is_on_ ()
 {
 	local lv=$vg/$1
 	shift
-	local pvs=$@
+	local list_pvs=( "$@" )
 
-	echo "Check if $lv is exactly on PVs $pvs"
+	echo "Check if $lv is exactly on PVs" "${list_pvs[@]}"
 	rm -f out1 out2
-	echo $pvs | sed 's/ /\n/g' | sort | uniq > out1
+	printf "%s\n" "${list_pvs[@]}" | sort | uniq > out1
 
 	lvs -a -o+devices $lv
-	get lv_devices $lv | sed 's/ /\n/g' | sort | uniq > out2 || true
+	get lv_devices "$lv" | sort | uniq > out2
 
 	diff --ignore-blank-lines out1 out2
 }
@@ -40,24 +42,25 @@ mimages_are_on_ ()
 {
 	local lv=$1
 	shift
-	local pvs=$@
-	local mimages
+	local list_pvs=( "$@" )
+	local mimages=()
 	local i
 
-	echo "Check if mirror images of $lv are on PVs $pvs"
-	rm -f out1 out2
-	echo $pvs | sed 's/ /\n/g' | sort | uniq > out1
-	lvs --noheadings -a -o lv_name $vg | tee lvs_log
-	mimages=$(grep "${lv}_mimage_" lvs_log | \
-		sed 's/\[//g; s/\]//g' || true)
+	echo "Check if mirror images of $lv are on PVs" "${list_pvs[@]}"
+	printf "%s\n" "${list_pvs[@]}" | sort | uniq > out1
 
-	for i in $mimages; do
+	get lv_field_lv_ "$vg" lv_name -a | grep "${lv}_mimage_" | tr -d [] | tee lvs_log
+	readarray -t mimages < lvs_log
+
+	for i in "${mimages[@]}"; do
 		echo "Checking $vg/$i"
-		lvs -a -o+devices $vg/$i
-		lvs -a -odevices --noheadings $vg/$i | tee lvs_log
-		sed 's/([^)]*)//g; s/ //g; s/,/ /g' lvs_log | sort | uniq >> out2 || true
+		lvs -a -o+devices "$vg/$i"
 	done
 
+	for i in "${mimages[@]}"; do
+		get lv_devices "$vg/$i"
+	done | sort | uniq > out2
+
 	diff --ignore-blank-lines out1 out2
 }
 
@@ -79,16 +82,16 @@ rest_pvs_()
 {
 	local index=$1
 	local num=$2
-	local rem=
+	local rem=()
 	local n
 	local dev
 
 	for n in $(seq 1 $(( index - 1 )) ) $(seq $(( index + 1 )) $num); do
-		eval dev=$\dev$n
-		rem="$rem $dev"
+		eval "dev=\$dev$n"
+		rem+=( "$dev" )
 	done
 
-	echo "$rem"
+	printf "%s\n" "${rem[@]}"
 }
 
 # ---------------------------------------------------------------------
@@ -156,9 +159,10 @@ test_3way_mirror_fail_1_()
 	lvcreate -an -Zn -l2 --type mirror -m2 --nosync -n $lv1 $vg "$dev1" "$dev2" "$dev3" "$dev4":$BLOCKS
 	mimages_are_on_ $lv1 "$dev1" "$dev2" "$dev3"
 	mirrorlog_is_on_ $lv1 "$dev4"
-	eval aux disable_dev \$dev$index
+	eval aux disable_dev "\$dev$index"
 	vgreduce --removemissing --force $vg
-	mimages_are_on_ $lv1 $(rest_pvs_ $index 3)
+	readarray -t list_pvs <<< "$(rest_pvs_ "$index" 3)"
+	mimages_are_on_ "$lv1" "${list_pvs[@]}"
 	mirrorlog_is_on_ $lv1 "$dev4"
 }
 
@@ -166,7 +170,7 @@ for n in $(seq 1 3); do
 	#COMM fail mirror image $(($n - 1)) of 3-way mirrored LV"
 	prepare_lvs_
 	test_3way_mirror_fail_1_ $n
-	eval recover_vg_ \$dev$n
+	eval recover_vg_ "\$dev$n"
 done
 
 # ---------------------------------------------------------------------
@@ -181,18 +185,20 @@ test_3way_mirror_fail_2_()
 	lvcreate -an -Zn -l2 --type mirror -m2 --nosync -n $lv1 $vg "$dev1" "$dev2" "$dev3" "$dev4":$BLOCKS
 	mimages_are_on_ $lv1 "$dev1" "$dev2" "$dev3"
 	mirrorlog_is_on_ $lv1 "$dev4"
-	rest_pvs_ $index 3
-	aux disable_dev $(rest_pvs_ $index 3)
+
+	readarray -t list_pvs <<< "$(rest_pvs_ "$index" 3)"
+	aux disable_dev "${list_pvs[@]}"
 	vgreduce --force --removemissing $vg
 	lv_is_linear_ $lv1
-	eval lv_is_on_ $lv1 \$dev$n
+	eval lv_is_on_ $lv1 "\$dev$n"
 }
 
 for n in $(seq 1 3); do
 	#COMM fail mirror images other than mirror image $(($n - 1)) of 3-way mirrored LV
 	prepare_lvs_
 	test_3way_mirror_fail_2_ $n
-	recover_vg_ $(rest_pvs_ $n 3)
+	readarray -t list_pvs <<< "$(rest_pvs_ "$n" 3)"
+	recover_vg_ "${list_pvs[@]}"
 done
 
 # ---------------------------------------------------------------------
@@ -212,7 +218,8 @@ test_3way_mirror_plus_1_fail_1_()
         lvs -a -o +devices
 	vgreduce --removemissing --force $vg
 	lvs -a -o+devices # $vg
-	check mirror_images_on $vg $lv1 "$dev5" # $(rest_pvs_ $index 4)
+	readarray -t list_pvs <<< "$(rest_pvs_ "$index" 4)"
+	check mirror_images_on $vg $lv1 "${list_pvs[@]}"
 	check mirror_log_on $vg $lv1 "$dev5"
 }
 
@@ -238,7 +245,8 @@ test_3way_mirror_plus_1_fail_3_()
 	check mirror_images_on $vg $lv1 "$dev1" "$dev2" "$dev3" "$dev4"
 	check mirror_log_on $vg $lv1 "$dev5"
 	lvs -a -o+devices $vg
-	aux disable_dev $(rest_pvs_ $index 4)
+	readarray -t list_pvs <<< "$(rest_pvs_ "$index" 4)"
+	aux disable_dev "${list_pvs[@]}"
 	vgreduce --removemissing --force $vg
 	lvs -a -o+devices $vg
 	eval dev=\$dev$n
@@ -250,7 +258,8 @@ for n in $(seq 1 4); do
 	#COMM "fail mirror images other than mirror image $(($n - 1)) of 4-way (1 converting) mirrored LV"
 	prepare_lvs_
 	test_3way_mirror_plus_1_fail_3_ $n
-	recover_vg_ $(rest_pvs_ $n 4)
+	readarray -t list_pvs <<< "$(rest_pvs_ "$n" 4)"
+	recover_vg_ "${list_pvs[@]}"
 done
 
 # ---------------------------------------------------------------------
@@ -268,7 +277,8 @@ test_2way_mirror_plus_2_fail_1_()
 	mirrorlog_is_on_ $lv1 "$dev5"
 	eval aux disable_dev \$dev$n
 	vgreduce --removemissing --force $vg
-	mimages_are_on_ $lv1 $(rest_pvs_ $index 4)
+	readarray -t list_pvs <<< "$(rest_pvs_ "$index" 4)"
+	mimages_are_on_ "$lv1" "${list_pvs[@]}"
 	mirrorlog_is_on_ $lv1 "$dev5"
 }
 
@@ -276,7 +286,7 @@ for n in $(seq 1 4); do
 	#COMM "fail mirror image $(($n - 1)) of 4-way (2 converting) mirrored LV"
 	prepare_lvs_
 	test_2way_mirror_plus_2_fail_1_ $n
-	eval recover_vg_ \$dev$n
+	eval recover_vg_ "\$dev$n"
 done
 
 # ---------------------------------------------------------------------
@@ -293,7 +303,8 @@ test_2way_mirror_plus_2_fail_3_()
 	lvconvert -m+2 $vg/$lv1 "$dev3" "$dev4"
 	mimages_are_on_ $lv1 "$dev1" "$dev2" "$dev3" "$dev4"
 	mirrorlog_is_on_ $lv1 "$dev5"
-	aux disable_dev $(rest_pvs_ $index 4)
+	readarray -t list_pvs <<< "$(rest_pvs_ "$index" 4)"
+	aux disable_dev "${list_pvs[@]}"
 	vgreduce --removemissing --force $vg
 	lvs -a -o+devices $vg
 	eval dev=\$dev$n
@@ -305,7 +316,8 @@ for n in $(seq 1 4); do
 	#COMM "fail mirror images other than mirror image $(($n - 1)) of 4-way (2 converting) mirrored LV"
 	prepare_lvs_
 	test_2way_mirror_plus_2_fail_3_ $n
-	recover_vg_ $(rest_pvs_ $n 4)
+	readarray -t list_pvs <<< "$(rest_pvs_ "$n" 4)"
+	recover_vg_ "${list_pvs[@]}"
 done
 
 # ---------------------------------------------------------------------




More information about the lvm-devel mailing list