summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Teigland <teigland@redhat.com>2022-02-03 16:58:12 -0600
committerDavid Teigland <teigland@redhat.com>2022-02-03 16:58:12 -0600
commit563105bba92f5a840d7d9f01acbc8be9daf39b32 (patch)
tree6a03376a89b97ef0229c13e77b975f8fd8554ccd
parent3fce6a81f82f2b2b1f75e5d49dbffc77bd637b3c (diff)
downloadlvm2-563105bba92f5a840d7d9f01acbc8be9daf39b32.tar.gz
tests: devicesfile-edit
test lvmdevices add/del
-rw-r--r--test/shell/devicesfile-edit.sh224
1 files changed, 224 insertions, 0 deletions
diff --git a/test/shell/devicesfile-edit.sh b/test/shell/devicesfile-edit.sh
new file mode 100644
index 000000000..1675cb732
--- /dev/null
+++ b/test/shell/devicesfile-edit.sh
@@ -0,0 +1,224 @@
+#!/usr/bin/env bash
+
+# Copyright (C) 2020 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+test_description='devices file editing with lvmdevices'
+
+. lib/inittest
+
+aux lvmconf 'devices/scan = "/dev"'
+
+aux prepare_devs 1
+
+# The tests run with system dir of "/etc" but lvm when running
+# normally has cmd->system_dir set to "/etc/lvm".
+DFDIR="$LVM_SYSTEM_DIR/devices"
+mkdir -p "$DFDIR" || true
+DF="$DFDIR/system.devices"
+
+aux lvmconf 'devices/use_devicesfile = 1'
+
+losetup -h | grep sector-size || skip
+which fallocate || skip
+
+fallocate -l 2M loopa
+fallocate -l 2M loopb
+
+setup_loop_devs() {
+ for i in {1..5} ; do
+ LOOP1=$(losetup -f loopa --show || true)
+ test -n "$LOOP1" && break
+ done
+ for i in {1..5} ; do
+ LOOP2=$(losetup -f loopb --show || true)
+ test -n "$LOOP2" && break
+ done
+}
+
+setup_loop_devs
+
+# Tests of devices without PV on them.
+
+# add/del with default idtype loop_file
+lvmdevices --adddev "$LOOP1"
+grep "$LOOP1" $DF
+lvmdevices --adddev "$LOOP2"
+grep "$LOOP2" $DF
+grep "IDTYPE=loop_file" $DF
+not grep "IDTYPE=devname" $DF
+lvmdevices --deldev "$LOOP1"
+not grep "$LOOP1" $DF
+lvmdevices --deldev "$LOOP2"
+not grep "$LOOP2" $DF
+
+# add/del with non-default idtype devname
+lvmdevices --adddev "$LOOP1" --deviceidtype devname
+grep "$LOOP1" $DF
+lvmdevices --adddev "$LOOP2" --deviceidtype devname
+grep "$LOOP2" $DF
+grep "IDTYPE=devname" $DF
+not grep "IDTYPE=loop_file" $DF
+lvmdevices --deldev "$LOOP1"
+not grep "$LOOP1" $DF
+lvmdevices --deldev "$LOOP2"
+not grep "$LOOP2" $DF
+
+# add/del when dev is missing, using default idtype
+lvmdevices --adddev "$LOOP1"
+grep "$LOOP1" $DF
+lvmdevices --adddev "$LOOP2"
+grep "$LOOP2" $DF
+losetup -D
+grep "$LOOP1" $DF
+grep "$LOOP2" $DF
+lvmdevices --deldev "$LOOP1"
+not grep "$LOOP1" $DF
+lvmdevices --deldev "$LOOP2"
+not grep "$LOOP2" $DF
+not lvmdevices --adddev "$LOOP1"
+not lvmdevices --adddev "$LOOP2"
+not grep "$LOOP1" $DF
+not grep "$LOOP2" $DF
+setup_loop_devs
+rm $DF
+
+# add/del when dev is missing, using devname idtype
+lvmdevices --adddev "$LOOP1" --deviceidtype devname
+grep "$LOOP1" $DF
+lvmdevices --adddev "$LOOP2" --deviceidtype devname
+grep "$LOOP2" $DF
+losetup -D
+grep "$LOOP1" $DF
+grep "$LOOP2" $DF
+lvmdevices --deldev "$LOOP1"
+not grep "$LOOP1" $DF
+lvmdevices --deldev "$LOOP2"
+not grep "$LOOP2" $DF
+setup_loop_devs
+rm $DF
+
+# Tests of devices with PV on them.
+
+touch $DF
+pvcreate "$LOOP1"
+pvcreate "$LOOP2"
+# PVID without dashes for matching devices file fields
+PVID1=`pvs "$LOOP1" --noheading -o uuid | tr -d - | awk '{print $1}'`
+PVID2=`pvs "$LOOP2" --noheading -o uuid | tr -d - | awk '{print $1}'`
+# PVID with dashes for matching pvs -o+uuid output
+OPVID1=`pvs "$LOOP1" --noheading -o uuid | awk '{print $1}'`
+OPVID2=`pvs "$LOOP2" --noheading -o uuid | awk '{print $1}'`
+grep "$LOOP1" $DF
+grep "$LOOP2" $DF
+grep "$PVID1" $DF
+grep "$PVID2" $DF
+rm $DF
+
+# add/deldev with default idtype loop_file
+lvmdevices --adddev "$LOOP1"
+grep "$LOOP1" $DF
+grep "$PVID1" $DF
+lvmdevices --adddev "$LOOP2"
+grep "$LOOP2" $DF
+grep "$PVID2" $DF
+grep "IDTYPE=loop_file" $DF
+not grep "IDTYPE=devname" $DF
+lvmdevices --deldev "$LOOP1"
+not grep "$LOOP1" $DF
+lvmdevices --deldev "$LOOP2"
+not grep "$LOOP2" $DF
+
+# add/delpvid with default idtype loop_file
+lvmdevices --addpvid "$PVID1"
+grep "$LOOP1" $DF
+grep "$PVID1" $DF
+lvmdevices --addpvid "$PVID2"
+grep "$LOOP2" $DF
+grep "$PVID2" $DF
+grep "IDTYPE=loop_file" $DF
+not grep "IDTYPE=devname" $DF
+lvmdevices --delpvid "$PVID1"
+not grep "$LOOP1" $DF
+not grep "$PVID1" $DF
+lvmdevices --delpvid "$PVID2"
+not grep "$LOOP2" $DF
+not grep "$PVID2" $DF
+
+# add/deldev with non-default idtype devname
+lvmdevices --adddev "$LOOP1" --deviceidtype devname
+grep "$LOOP1" $DF
+grep "$PVID1" $DF
+lvmdevices --adddev "$LOOP2" --deviceidtype devname
+grep "$LOOP2" $DF
+grep "$PVID2" $DF
+grep "IDTYPE=devname" $DF
+not grep "IDTYPE=loop_file" $DF
+lvmdevices --deldev "$LOOP1"
+not grep "$LOOP1" $DF
+lvmdevices --deldev "$LOOP2"
+not grep "$LOOP2" $DF
+
+# add/delpvid with non-default idtype devname
+lvmdevices --addpvid "$PVID1" --deviceidtype devname
+grep "$LOOP1" $DF
+grep "$PVID1" $DF
+lvmdevices --addpvid "$PVID2" --deviceidtype devname
+grep "$LOOP2" $DF
+grep "$PVID2" $DF
+grep "IDTYPE=devname" $DF
+not grep "IDTYPE=loop_file" $DF
+lvmdevices --deldev "$LOOP1"
+not grep "$LOOP1" $DF
+lvmdevices --deldev "$LOOP2"
+not grep "$LOOP2" $DF
+
+# add/deldev when dev is missing, using default idtype
+lvmdevices --adddev "$LOOP1"
+grep "$LOOP1" $DF
+grep "$PVID1" $DF
+lvmdevices --adddev "$LOOP2"
+grep "$LOOP2" $DF
+grep "$PVID2" $DF
+losetup -D
+grep "$LOOP1" $DF
+grep "$LOOP2" $DF
+lvmdevices --deldev "$LOOP1"
+not grep "$LOOP1" $DF
+not grep "$PVID1" $DF
+lvmdevices --deldev "$LOOP2"
+not grep "$LOOP2" $DF
+not grep "$PVID2" $DF
+setup_loop_devs
+rm $DF
+
+# add/delpvid when dev is missing, using devname idtype
+lvmdevices --addpvid "$PVID1" --deviceidtype devname
+grep "$LOOP1" $DF
+grep "$PVID1" $DF
+lvmdevices --addpvid "$PVID2" --deviceidtype devname
+grep "$LOOP2" $DF
+grep "$PVID2" $DF
+losetup -D
+grep "$LOOP1" $DF
+grep "$LOOP2" $DF
+lvmdevices --delpvid "$PVID1"
+not grep "$LOOP1" $DF
+not grep "$PVID1" $DF
+lvmdevices --delpvid "$PVID2"
+not grep "$LOOP2" $DF
+not grep "$PVID2" $DF
+setup_loop_devs
+rm $DF
+
+# TODO: add/rem of partitions of same device
+
+losetup -D
+rm loopa loopb