diff options
author | David Teigland <teigland@redhat.com> | 2022-02-03 16:58:12 -0600 |
---|---|---|
committer | David Teigland <teigland@redhat.com> | 2022-02-03 16:58:12 -0600 |
commit | 563105bba92f5a840d7d9f01acbc8be9daf39b32 (patch) | |
tree | 6a03376a89b97ef0229c13e77b975f8fd8554ccd | |
parent | 3fce6a81f82f2b2b1f75e5d49dbffc77bd637b3c (diff) | |
download | lvm2-563105bba92f5a840d7d9f01acbc8be9daf39b32.tar.gz |
tests: devicesfile-edit
test lvmdevices add/del
-rw-r--r-- | test/shell/devicesfile-edit.sh | 224 |
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 |