]> sourceware.org Git - lvm2.git/commitdiff
tests: allow tests to use real devices
authorDavid Teigland <teigland@redhat.com>
Mon, 16 Nov 2020 22:05:39 +0000 (16:05 -0600)
committerDavid Teigland <teigland@redhat.com>
Tue, 23 Feb 2021 22:43:37 +0000 (16:43 -0600)
user creates a file listing real devices they want
lvm tests to use, and sets LVM_TEST_DEVICE_LIST.
lvm tests can use these with prepare_real_devs
and get_real_devs.
Other aux functions do not work with these devs.

test/Makefile.in
test/lib/aux.sh
test/lib/utils.sh
test/shell/real_devs.sh [new file with mode: 0644]

index bbdde7196ac700a053fef1d21ceb3eed18d7180f..882620362244d520261f5f4e9e9edbf61625f7b2 100644 (file)
@@ -109,6 +109,7 @@ help:
        @echo "  LVM_TEST_CACHE_REPAIR_CMD  Command for cache_repair  [$(LVM_TEST_CACHE_REPAIR_CMD)]."
        @echo "  LVM_TEST_CACHE_RESTORE_CMD Command for cache_restore [$(LVM_TEST_CACHE_RESTORE_CMD)]."
        @echo "  LVM_TEST_UNLIMITED     Set to get unlimited test log (>32MB)"
+       @echo "  LVM_TEST_DEVICE_LIST   File path listing real devs that tests can use."
        @echo "  LVM_VALGRIND           Enable valgrind testing, execs $$"VALGRIND.
        @echo "  LVM_VALGRIND_DMEVENTD  Enable valgrind testing of dmeventd (1)."
        @echo "  LVM_VALGRIND_LVMPOLLD  Enable valgrind testing of lvmpolld (1)."
index 31741ac7417808ade82cfc7edea51c42b01d5028..72837de225e695ccbb770ffb4e67865db86aed82 100644 (file)
@@ -657,6 +657,24 @@ prepare_ramdisk() {
        touch RAMDISK
 }
 
+prepare_real_devs() {
+       aux lvmconf 'devices/scan = "/dev"'
+
+       touch REAL_DEVICES
+
+       if test -n "$LVM_TEST_DEVICE_LIST"; then
+               local count=0
+               while read path; do
+                       REAL_DEVICES[$count]=$path
+                       count=$((  count + 1 ))
+                       aux extend_filter "a|$path|"
+                       dd if=/dev/zero of="$path" bs=32k count=1
+                       wipefs -a "$path" 2>/dev/null || true
+               done < $LVM_TEST_DEVICE_LIST
+       fi
+       printf "%s\\n" "${REAL_DEVICES[@]}" > REAL_DEVICES
+}
+
 # A drop-in replacement for prepare_loop() that uses scsi_debug to create
 # a ramdisk-based SCSI device upon which all LVM devices will be created
 # - scripts must take care not to use a DEV_SIZE that will enduce OOM-killer
@@ -909,7 +927,6 @@ prepare_devs() {
        echo "ok"
 }
 
-
 common_dev_() {
        local tgtype=$1
        local dev=$2
index 88de1a0e26ece35b48264a3f635c42cc44571c0e..175d1564a948d462bde689027d6d9ad31f2b7241 100644 (file)
@@ -252,6 +252,11 @@ skip() {
        exit 200
 }
 
+get_real_devs() {
+       REAL_DEVICES=( $(<REAL_DEVICES) )
+       export REAL_DEVICES
+}
+
 get_devs() {
        local IFS=$IFS_NL
        DEVICES=( $(<DEVICES) )
@@ -265,10 +270,21 @@ prepare_test_vars() {
        lv=LV
 
        for i in {1..16}; do
-               eval "dev$i=\"$DM_DEV_DIR/mapper/${PREFIX}pv$i\""
                eval "lv$i=\"LV$i\""
                eval "vg$i=\"${PREFIX}vg$i\""
        done
+
+       if test -n "$LVM_TEST_DEVICE_LIST"; then
+               local count=0
+               while read path; do
+                       count=$((  count + 1 ))
+                       eval "dev$count=\"$path\""
+               done < $LVM_TEST_DEVICE_LIST
+       else
+               for i in {1..16}; do
+                       eval "dev$i=\"$DM_DEV_DIR/mapper/${PREFIX}pv$i\""
+               done
+       fi
 }
 
 if test -z "${abs_top_builddir+varset}" && test -z "${installed_testsuite+varset}"; then
diff --git a/test/shell/real_devs.sh b/test/shell/real_devs.sh
new file mode 100644 (file)
index 0000000..a1a49c8
--- /dev/null
@@ -0,0 +1,39 @@
+#!/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='hello world for user-defined device list'
+
+. lib/inittest
+
+aux prepare_real_devs
+
+echo "$dev1"
+
+pvcreate "$dev1"
+
+pvs "$dev1"
+
+pvremove "$dev1"
+
+vgcreate $vg "$dev1"
+
+lvcreate -l1 $vg
+
+vgchange -an $vg
+
+vgremove -ff $vg
+
+get_real_devs
+for d in "${REAL_DEVICES[@]}"; do
+       echo $d
+done
+
This page took 0.04333 seconds and 5 git commands to generate.