[lvm-devel] LVM2/test lvm-utils.sh t-lvextend-percent-exte ...

wysochanski at sourceware.org wysochanski at sourceware.org
Fri Sep 21 21:14:25 UTC 2007


CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	wysochanski at sourceware.org	2007-09-21 21:14:25

Modified files:
	test           : lvm-utils.sh 
Added files:
	test           : t-lvextend-percent-extents.sh 

Log message:
	add tests to validate lvextend %PVS

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/t-lvextend-percent-extents.sh.diff?cvsroot=lvm2&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/lvm-utils.sh.diff?cvsroot=lvm2&r1=1.2&r2=1.3

/cvs/lvm2/LVM2/test/t-lvextend-percent-extents.sh,v  -->  standard output
revision 1.1
--- LVM2/test/t-lvextend-percent-extents.sh
+++ -	2007-09-21 21:14:25.676249000 +0000
@@ -0,0 +1,104 @@
+#!/bin/sh
+# Copyright (C) 2007 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_description='Check extents percentage arguments'
+privileges_required_=1
+
+. ./test-lib.sh
+
+cleanup_()
+{
+  test -n "$vg" && {
+    vgchange -an "$vg"
+    lvremove -ff "$vg"
+    vgremove -f "$vg"
+  } > "$test_dir_/cleanup.log"
+  test -n "$d1" && losetup -d "$d1"
+  test -n "$d2" && losetup -d "$d2"
+  rm -f "$f1" "$f2"
+}
+
+test_expect_success \
+  'set up temp files, loopback devices, PVs, and a VG' \
+  'f1="$(pwd)/1" && d1=$(loop_setup_ "$f1") &&
+   f2="$(pwd)/2" && d2=$(loop_setup_ "$f2") &&
+   pvcreate $d1 $d2      &&
+   vg=$(this_test_)-test-vg-$$  &&
+   vgcreate $vg $d1 $d2 &&
+   lv=$(this_test_)-test-lv-$$ &&
+   lvcreate -L 64M -n $lv $vg'
+
+test_expect_success \
+  'lvextend rejects both size and extents without PVs' \
+  'lvextend -l 10 -L 64M $vg/$lv 2>err; test $? = 3 &&
+   grep "^  Please specify either size or extents but not both.\$" err'
+
+test_expect_success \
+  'lvextend rejects both size and extents with PVs' \
+  'lvextend -l 10 -L 64M $vg/$lv $d1 2>err; test $? = 3 &&
+   grep "^  Please specify either size or extents but not both.\$" err'
+
+test_expect_success \
+  'lvextend accepts no size or extents but one PV - bz154691' \
+  'lvextend $vg/$lv $d1 >out; test $? = 0 &&
+  grep "^  Logical volume $lv successfully resized\$" out &&
+  check_pv_size_ $d1 "0"'
+
+test_expect_success \
+  'Reset LV to original size' \
+  'lvremove -f $vg/$lv; test $? = 0 &&
+   lvcreate -L 64M -n $lv $vg; test $? = 0'
+
+test_expect_success \
+  'lvextend accepts no size but extents 100%PVS and two PVs - bz154691' \
+  'lvextend -l +100%PVS $vg/$lv $d1 $d2 >out; test $? = 0 &&
+  grep "^  Logical volume $lv successfully resized\$" out &&
+  check_pv_size_ $d1 "0" &&
+  check_pv_size_ $d2 "0"'
+
+# Exercise the range overlap code.  Allocate every 2 extents.
+# 
+#      Physical Extents
+#           1         2
+#012345678901234567890123
+#
+#aaXXaaXXaaXXaaXXaaXXaaXX - (a)llocated
+#rrrXXXrrrXXXrrrXXXrrrXXX - (r)ange on cmdline
+#ooXXXXXXoXXXooXXXXXXoXXX - (o)verlap of range and allocated
+#
+# Key: a - allocated
+#      F - free
+#      r - part of a range on the cmdline
+#      N - not on cmdline
+#
+# Create the LV with 12 extents, allocated every other 2 extents.
+# Then extend it, with a range of PVs on the cmdline of every other 3 extents.
+# Total number of extents should be 12 + overlap = 12 + 6 = 18.
+# Thus, total size for the LV should be 18 * 4M = 72M
+#
+test_expect_success \
+  'Reset LV to 12 extents, allocate every other 2 extents' \
+  'create_pvs=`for i in $(seq 0 4 20); do echo -n "\$d1:$i-$(($i + 1)) "; done` &&
+   lvremove -f $vg/$lv; test $? = 0 &&
+   lvcreate -l 12 -n $lv $vg $create_pvs; test $? = 0'
+
+test_expect_success \
+  'lvextend with partially allocated PVs and extents 100%PVS with PE ranges' \
+  'extend_pvs=`for i in $(seq 0 6 18); do echo -n "\$d1:$i-$(($i + 2)) "; done` &&
+  lvextend -l +100%PVS $vg/$lv $extend_pvs >out; test $? = 0 &&
+  grep "^  Logical volume $lv successfully resized\$" out &&
+  check_lv_size_ $vg/$lv "72.00M"'
+
+
+test_done
+# Local Variables:
+# indent-tabs-mode: nil
+# End:
--- LVM2/test/lvm-utils.sh	2007/09/18 14:02:22	1.2
+++ LVM2/test/lvm-utils.sh	2007/09/21 21:14:25	1.3
@@ -54,3 +54,14 @@
   echo "$dev"
   return 0;
 }
+
+
+check_pv_size_()
+{
+  return $(test $(pvs --noheadings -o pv_free $1) == $2)
+}
+
+check_lv_size_()
+{
+  return $(test $(lvs --noheadings -o lv_size $1) == $2)
+}




More information about the lvm-devel mailing list