1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-22 17:35:59 +03:00

tests: allow tests to use real devices

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.
This commit is contained in:
David Teigland 2020-11-16 16:05:39 -06:00
parent ea5e2635c5
commit e860cae973
4 changed files with 75 additions and 2 deletions

View 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)."

View 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

View 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

39
test/shell/real_devs.sh Normal file
View File

@ -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