[lvm-devel] master - tests: add select-tools.sh to test selection support in toollib

Peter Rajnoha prajnoha at fedoraproject.org
Wed Feb 11 17:41:01 UTC 2015


Gitweb:        http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=54c2e9859fee17596f23451f6d36142a1fce06ce
Commit:        54c2e9859fee17596f23451f6d36142a1fce06ce
Parent:        599cb41f99170cc3baf9be8b5cfda5d2a2227ba0
Author:        Peter Rajnoha <prajnoha at redhat.com>
AuthorDate:    Wed Feb 11 16:16:50 2015 +0100
Committer:     Peter Rajnoha <prajnoha at redhat.com>
CommitterDate: Wed Feb 11 18:39:47 2015 +0100

tests: add select-tools.sh to test selection support in toollib

Tests for selection within non-reporting tools while using process_each_* fns.
---
 test/shell/select-tools.sh |  279 ++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 279 insertions(+), 0 deletions(-)

diff --git a/test/shell/select-tools.sh b/test/shell/select-tools.sh
new file mode 100644
index 0000000..1cbbf87
--- /dev/null
+++ b/test/shell/select-tools.sh
@@ -0,0 +1,279 @@
+#!/bin/sh
+# Copyright (C) 2015 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
+
+. lib/inittest
+
+aux prepare_pvs 4 12
+
+vgcreate -s 4m $vg1 "$dev1" "$dev2"
+vgcreate -s 4m $vg2 "$dev3" "$dev4"
+
+# vg1/lv1 mapped onto dev1
+lvcreate -l1 -n "lv1" $vg1 "$dev1"
+
+# vg1/lv2 mapped onto dev1 and dev2 (2 segments)
+lvcreate -l3 -n "lv2" $vg1 "$dev1" "$dev2"
+
+# vg2/lv3 mapped onto dev3
+lvcreate -l1 -n "lv3" $vg2 "$dev3"
+
+# vg2/lv4 mapped onto dev3
+lvcreate -l1 -n "lv4" $vg2 "$dev3" "$dev4"
+
+# vg2/lv1 mapped onto $dev4 (same LV name as vg1/lv1)
+lvcreate -l1 -n "lv1" $vg2 "$dev4"
+
+###########################################
+# exercise process_each_vg with selection #
+###########################################
+
+# select contains VGS field
+# direct vg name match
+vgchange --addtag 101 -S "vg_name=$vg1"
+check vg_field $vg1 vg_tags 101
+not check vg_field $vg2 vg_tags 101
+vgchange --deltag 101
+
+# select contains LVS fiels
+vgchange --addtag 102 -S "lv_name=lv2"
+check vg_field $vg1 vg_tags 102
+not check vg_field $vg2 vg_tags 102
+vgchange --deltag 102
+vgchange --addtag 103 -S "lv_name=lv1"
+check vg_field $vg1 vg_tags 103
+check vg_field $vg2 vg_tags 103
+vgchange --deltag 103
+
+# select contains SEGS field
+vgchange --addtag 104 -S 'seg_start=8m'
+check vg_field $vg1 vg_tags 104
+not check vg_field $vg2 vg_tags 104
+vgchange --deltag 104
+vgchange --addtag 105 -S "seg_start=0m"
+check vg_field $vg1 vg_tags 105
+check vg_field $vg2 vg_tags 105
+vgchange --deltag 105
+
+# select contains PVS field
+vgchange --addtag 106 -S "pv_name=$dev1"
+check vg_field $vg1 vg_tags 106
+not check vg_field $vg2 vg_tags 106
+vgchange --deltag 106
+vgchange --addtag 107 -S "pv_size>0m"
+check vg_field $vg1 vg_tags 107
+check vg_field $vg2 vg_tags 107
+vgchange --deltag 107
+
+# select contains PVSEGS field
+vgchange --addtag 108 -S "pvseg_size=2"
+check vg_field $vg1 vg_tags 108
+not check vg_field $vg2 vg_tags 108
+vgchange --deltag 108
+vgchange --addtag 109 -S "pvseg_size=1"
+check vg_field $vg1 vg_tags 109
+check vg_field $vg2 vg_tags 109
+vgchange --deltag 109
+
+# if VG name or tag is supplied together with the
+# selection, the result is an intersection of both
+vgchange --addtag 110 -S "vg_name=$vg1" $vg2
+not check vg_field $vg1 vg_tags 110
+not check vg_field $vg2 vg_tags 110
+vgchange --deltag 110
+vgchange --addtag 111 -S "vg_name=$vg1" $vg1
+check vg_field $vg1 vg_tags 111
+not check vg_field $vg2 vg_tags 111
+vgchange --deltag 111
+vgchange --addtag "tag" $vg1
+vgchange --addtag 112 -S "vg_name=$vg2" @tag
+not check vg_field $vg1 vg_tags "tag,112"
+not check vg_field $vg2 vg_tags "tag,112"
+vgchange --deltag 112
+vgchange --addtag 113 -S "vg_name=$vg1" @tag
+check vg_field $vg1 vg_tags "113,tag"
+not check vg_field $vg2 vg_tags "113,tag"
+vgchange --deltag 113 --deltag tag
+
+###########################################
+# exercise process_each_lv with selection #
+###########################################
+
+# select contains VGS field
+lvchange --addtag 201 -S "vg_name=$vg1"
+check lv_field $vg1/lv1 lv_tags 201
+check lv_field $vg1/lv2 lv_tags 201
+not check lv_field $vg2/lv3 lv_tags 201
+not check lv_field $vg2/lv4 lv_tags 201
+not check lv_field $vg2/lv1 lv_tags 201
+lvchange --deltag 201 $vg1 $vg2
+
+# select contains LVS fiels
+lvchange --addtag 202 -S "lv_name=lv2"
+not check lv_field $vg1/lv1 lv_tags 202
+check lv_field $vg1/lv2 lv_tags 202
+not check lv_field $vg2/lv3 lv_tags 202
+not check lv_field $vg2/lv4 lv_tags 202
+not check lv_field $vg2/lv1 lv_tags 202
+lvchange --deltag 202 $vg1 $vg2
+lvchange --addtag 203 -S "lv_name=lv1"
+check lv_field $vg1/lv1 lv_tags 203
+not check lv_field $vg1/lv2 lv_tags 203
+not check lv_field $vg2/lv3 lv_tags 203
+not check lv_field $vg2/lv4 lv_tags 203
+check lv_field $vg2/lv1 lv_tags 203
+lvchange --deltag 203 $vg1 $vg2
+
+# select contains SEGS field
+lvchange --addtag 204 -S "seg_start=8m"
+not check lv_field $vg1/lv1 lv_tags 204
+check lv_field $vg1/lv2 lv_tags 204
+not check lv_field $vg2/lv3 lv_tags 204
+not check lv_field $vg2/lv4 lv_tags 204
+not check lv_field $vg2/lv1 lv_tags 204
+lvchange --deltag 204 $vg1 $vg2
+
+# select contains PVS field - COMBINATION NOT ALLOWED!
+lvchange --addtag 205 -S "pv_name=$dev1" 2>err
+grep "Can't report LV and PV fields at the same time" err
+grep "Selection failed for LV" err
+not check lv_field $vg1/lv1 lv_tags 205
+not check lv_field $vg1/lv2 lv_tags 205
+not check lv_field $vg2/lv3 lv_tags 205
+not check lv_field $vg2/lv4 lv_tags 205
+not check lv_field $vg2/lv1 lv_tags 205
+
+# select contains PVSEGS field - COMBINATION NOT ALLOWED!
+lvchange --addtag 206 -S "pvseg_start>=0" 2>err
+grep "Can't report LV and PV fields at the same time" err
+grep "Selection failed for LV" err
+not check lv_field $vg1/lv1 lv_tags 206
+not check lv_field $vg1/lv2 lv_tags 206
+not check lv_field $vg2/lv3 lv_tags 206
+not check lv_field $vg2/lv4 lv_tags 206
+not check lv_field $vg2/lv1 lv_tags 206
+
+# if LV name or tag is supplied together with the
+# selection, the result is an intersection of both
+lvchange --addtag 207 -S "lv_name=lv2" $vg1/lv1
+not check lv_field $vg1/lv1 lv_tags 207
+not check lv_field $vg1/lv2 lv_tags 207
+not check lv_field $vg2/lv3 lv_tags 207
+not check lv_field $vg2/lv4 lv_tags 207
+not check lv_field $vg2/lv1 lv_tags 207
+lvchange --deltag 207 $vg1 $vg2
+lvchange --addtag 208 -S "lv_name=lv2" $vg1/lv2
+not check lv_field $vg1/lv1 lv_tags 208
+check lv_field $vg1/lv2 lv_tags 208
+not check lv_field $vg2/lv3 lv_tags 208
+not check lv_field $vg2/lv4 lv_tags 208
+not check lv_field $vg2/lv1 lv_tags 208
+lvchange --deltag 208 $vg1 $vg2
+lvchange --addtag "tag" $vg1/lv2
+lvchange --addtag 209 -S "lv_name=lv3" @tag
+not check lv_field $vg1/lv1 lv_tags "209,tag"
+not check lv_field $vg1/lv2 lv_tags "209,tag"
+not check lv_field $vg2/lv3 lv_tags "209,tag"
+not check lv_field $vg2/lv4 lv_tags "209,tag"
+not check lv_field $vg2/lv1 lv_tags "209,tag"
+lvchange --deltag 209 $vg1 $vg2
+lvchange --addtag 210 -S "lv_name=lv2" @tag
+not check lv_field $vg1/lv1 lv_tags "210,tag"
+check lv_field $vg1/lv2 lv_tags "210,tag"
+not check lv_field $vg2/lv3 lv_tags "210,tag"
+not check lv_field $vg2/lv4 lv_tags "210,tag"
+not check lv_field $vg2/lv1 lv_tags "210,tag"
+lvchange --deltag 210 --deltag tag $vg1 $vg2
+
+###########################################
+# exercise process_each_pv with selection #
+###########################################
+
+# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+# WARNING: pvchange doesn't use process_each_pv yet
+#          but add the tests anyway as this transition
+#          will happen soon - all these tests should
+#          just work (for now, there's a workaround done
+#          in pvchange code to work with the selection).
+#          Let's use {vg,lv,pv}change to exercise all this
+#          selection support so the tests remain readable
+#          and consistent.
+# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+# select contains VGS field
+pvchange --addtag 301 -S "vg_name=$vg1"
+check pv_field $dev1 pv_tags 301
+check pv_field $dev2 pv_tags 301
+not check pv_field $dev3 pv_tags 301
+not check pv_field $dev4 pv_tags 301
+pvchange -a --deltag 301
+
+# select contains LVS field
+pvchange --addtag 302 -S "lv_name=lv2"
+check pv_field $dev1 pv_tags 302
+check pv_field $dev2 pv_tags 302
+not check pv_field $dev3 pv_tags 302
+not check pv_field $dev4 pv_tags 302
+pvchange -a --deltag 302
+
+# select contains SEGS field
+pvchange --addtag 303 -S "seg_start=8m"
+check pv_field $dev1 pv_tags 303
+not check pv_field $dev2 pv_tags 303
+not check pv_field $dev3 pv_tags 303
+not check pv_field $dev4 pv_tags 303
+pvchange -a --deltag 303
+
+# select contains PVS field
+pvchange --addtag 304 -S "pv_name=$dev1"
+check pv_field $dev1 pv_tags 304
+not check pv_field $dev2 pv_tags 304
+not check pv_field $dev3 pv_tags 304
+not check pv_field $dev4 pv_tags 304
+pvchange -a --deltag 304
+
+# select contains PVSEGS field
+pvchange --addtag 305 -S "pvseg_size=2"
+not check pv_field $dev1 pv_tags 305
+check pv_field $dev2 pv_tags 305
+not check pv_field $dev3 pv_tags 305
+not check pv_field $dev4 pv_tags 305
+pvchange -a --deltag 305
+
+# intersection between selection
+# result and supplied VG name/tag
+
+# ENABLE TESTS BELOW ONCE process_each_pv is used for pvchange
+
+#pvchange --addtag 306 -S "pv_name=$dev1" $dev2
+#not check pv_field $dev1 pv_tags 306
+#not check pv_field $dev2 pv_tags 306
+#not check pv_field $dev3 pv_tags 306
+#not check pv_field $dev4 pv_tags 306
+#pvchange -a --deltag 306
+#pvchange --addtag 307 -S "pv_name=$dev1" $dev1
+#check pv_field $dev1 pv_tags 307
+#not check pv_field $dev2 pv_tags 307
+#not check pv_field $dev3 pv_tags 307
+#not check pv_field $dev4 pv_tags 307
+#pvchange -a --deltag 307
+#pvchange --addtag "tag" $dev1
+#pvchange --addtag 308 -S "pv_name=$dev2" @tag
+#not check pv_field $dev1 pv_tags "308,tag"
+#not check pv_field $dev2 pv_tags "308,tag"
+#not check pv_field $dev3 pv_tags "308,tag"
+#not check pv_field $dev4 pv_tags "308,tag"
+#pvchange --deltag 308 $dev1
+#pvchange --addtag 309 -S "pv_name=$dev1" @tag
+#check pv_field $dev1 pv_tags "309,tag"
+#not check pv_field $dev2 pv_tags "309,tag"
+#not check pv_field $dev3 pv_tags "309,tag"
+#not check pv_field $dev4 pv_tags "309,tag"
+#pvchange -a --deltag 210 --deltag tag




More information about the lvm-devel mailing list