summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Teigland <teigland@redhat.com>2018-07-10 09:58:22 -0500
committerDavid Teigland <teigland@redhat.com>2018-07-10 10:49:34 -0500
commit06439a256217b5d37ef33833051fc322a58b4859 (patch)
tree5877cb3333c2b872c37354172a35b05eb76c0910
parentdb741e75a21bd9327ed1478e42495f2b0a419be9 (diff)
downloadlvm2-06439a256217b5d37ef33833051fc322a58b4859.tar.gz
tests: autoactivation tests for use without lvmetad
Adjust a few lvmetad pvscan/autoactivation tests to be used without lvmetad, and add a test to cover some cases that have not been tested before.
-rw-r--r--test/shell/pvscan-autoactivate.sh143
-rw-r--r--test/shell/pvscan-autoactivation-polling.sh (renamed from test/shell/lvmetad-pvscan-autoactivation-polling.sh)1
-rw-r--r--test/shell/pvscan-cache.sh (renamed from test/shell/lvmetad-pvscan-cache.sh)1
-rw-r--r--test/shell/pvscan-nomda-bg.sh (renamed from test/shell/lvmetad-pvscan-nomda-bg.sh)32
4 files changed, 150 insertions, 27 deletions
diff --git a/test/shell/pvscan-autoactivate.sh b/test/shell/pvscan-autoactivate.sh
new file mode 100644
index 000000000..af6f2b2d4
--- /dev/null
+++ b/test/shell/pvscan-autoactivate.sh
@@ -0,0 +1,143 @@
+#!/usr/bin/env bash
+
+# Copyright (C) 2012 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
+
+SKIP_WITH_LVMPOLLD=1
+
+. lib/inittest
+
+aux prepare_pvs 2
+
+vgcreate $vg1 "$dev1" "$dev2"
+lvcreate -n $lv1 -l 4 -a n $vg1
+
+# the first pvscan scans all devs
+
+rm /run/lvm/pvs_online/*
+
+pvscan --cache -aay
+check lv_field $vg1/$lv1 lv_active "active"
+lvchange -an $vg1
+
+# the first pvscan scans all devs even when
+# only one device is specified
+
+rm /run/lvm/pvs_online/*
+
+pvscan --cache -aay "$dev1"
+check lv_field $vg1/$lv1 lv_active "active"
+lvchange -an $vg1
+
+# touch foo to disable first-pvscan case,
+# then check pvscan with no args scans all
+
+rm /run/lvm/pvs_online/*
+touch /run/lvm/pvs_online/foo
+
+pvscan --cache -aay
+check lv_field $vg1/$lv1 lv_active "active"
+lvchange -an $vg1
+
+# touch foo to disable first-pvscan case,
+# then check that vg is activated only after
+# both devs appear separately
+
+rm /run/lvm/pvs_online/*
+touch /run/lvm/pvs_online/foo
+
+pvscan --cache -aay "$dev1"
+check lv_field $vg1/$lv1 lv_active ""
+pvscan --cache -aay "$dev2"
+check lv_field $vg1/$lv1 lv_active "active"
+lvchange -an $vg1
+
+# touch foo to disable first-pvscan case,
+# then check that vg is activated when both
+# devs appear together
+
+rm /run/lvm/pvs_online/*
+touch /run/lvm/pvs_online/foo
+
+pvscan --cache -aay "$dev1" "$dev2"
+check lv_field $vg1/$lv1 lv_active "active"
+lvchange -an $vg1
+
+# Set up tests where one dev has no metadata
+
+vgchange -an $vg1
+vgremove -ff $vg1
+pvremove "$dev1"
+pvremove "$dev2"
+pvcreate --metadatacopies 0 "$dev1"
+pvcreate --metadatacopies 1 "$dev2"
+vgcreate $vg1 "$dev1" "$dev2"
+lvcreate -n $lv1 -l 4 -a n $vg1
+
+# touch foo to disable first-pvscan case,
+# test case where dev with metadata appears first
+
+rm /run/lvm/pvs_online/*
+touch /run/lvm/pvs_online/foo
+
+pvscan --cache -aay "$dev2"
+check lv_field $vg1/$lv1 lv_active ""
+pvscan --cache -aay "$dev1"
+check lv_field $vg1/$lv1 lv_active "active"
+lvchange -an $vg1
+
+# touch foo to disable first-pvscan case,
+# test case where dev without metadata
+# appears first which triggers scanning all
+
+rm /run/lvm/pvs_online/*
+touch /run/lvm/pvs_online/foo
+
+pvscan --cache -aay "$dev1"
+check lv_field $vg1/$lv1 lv_active "active"
+pvscan --cache -aay "$dev2"
+check lv_field $vg1/$lv1 lv_active "active"
+lvchange -an $vg1
+
+# dev without metadata is scanned, but
+# first-pvscan case scans all devs
+
+rm /run/lvm/pvs_online/*
+
+pvscan --cache -aay "$dev1"
+check lv_field $vg1/$lv1 lv_active "active"
+lvchange -an $vg1
+
+# use the --cache option to record a dev
+# is online without the -aay option to
+# activate until after they are online
+
+rm /run/lvm/pvs_online/*
+touch /run/lvm/pvs_online/foo
+
+pvscan --cache "$dev1"
+check lv_field $vg1/$lv1 lv_active ""
+pvscan --cache "$dev2"
+check lv_field $vg1/$lv1 lv_active ""
+pvscan --cache -aay
+check lv_field $vg1/$lv1 lv_active "active"
+lvchange -an $vg1
+
+# like previous
+
+rm /run/lvm/pvs_online/*
+touch /run/lvm/pvs_online/foo
+
+pvscan --cache "$dev1"
+check lv_field $vg1/$lv1 lv_active ""
+pvscan --cache -aay "$dev2"
+check lv_field $vg1/$lv1 lv_active "active"
+lvchange -an $vg1
+
diff --git a/test/shell/lvmetad-pvscan-autoactivation-polling.sh b/test/shell/pvscan-autoactivation-polling.sh
index 46c454b7c..53adf5187 100644
--- a/test/shell/lvmetad-pvscan-autoactivation-polling.sh
+++ b/test/shell/pvscan-autoactivation-polling.sh
@@ -11,7 +11,6 @@
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
SKIP_WITH_LVMLOCKD=1
-SKIP_WITHOUT_LVMETAD=1
. lib/inittest
diff --git a/test/shell/lvmetad-pvscan-cache.sh b/test/shell/pvscan-cache.sh
index 367220e77..c272c6cee 100644
--- a/test/shell/lvmetad-pvscan-cache.sh
+++ b/test/shell/pvscan-cache.sh
@@ -11,7 +11,6 @@
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
SKIP_WITH_LVMLOCKD=1
-SKIP_WITHOUT_LVMETAD=1
SKIP_WITH_LVMPOLLD=1
. lib/inittest
diff --git a/test/shell/lvmetad-pvscan-nomda-bg.sh b/test/shell/pvscan-nomda-bg.sh
index 351e44613..f8ecc080a 100644
--- a/test/shell/lvmetad-pvscan-nomda-bg.sh
+++ b/test/shell/pvscan-nomda-bg.sh
@@ -11,14 +11,10 @@
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
SKIP_WITH_LVMLOCKD=1
-SKIP_WITHOUT_LVMETAD=1
SKIP_WITH_LVMPOLLD=1
. lib/inittest
-kill "$(< LOCAL_LVMETAD)"
-rm LOCAL_LVMETAD
-
aux prepare_devs 2
pvcreate --metadatacopies 0 "$dev1"
@@ -26,34 +22,20 @@ pvcreate --metadatacopies 1 "$dev2"
vgcreate $vg1 "$dev1" "$dev2"
lvcreate -n foo -l 1 -an --zero n $vg1
-# start lvmetad but make sure it doesn't know about $dev1 or $dev2
-aux disable_dev "$dev1" "$dev2"
-aux prepare_lvmetad
-lvs
-mv LOCAL_LVMETAD XXX
-aux enable_dev "$dev2" "$dev1"
-mv XXX LOCAL_LVMETAD
-
-aux lvmconf 'global/use_lvmetad = 0'
check inactive $vg1 foo
-aux lvmconf 'global/use_lvmetad = 1'
+
+# create a file in pvs_online to disable the pvscan init
+# case which scans everything when the first dev appears.
+mkdir /run/lvm/pvs_online/
+touch /run/lvm/pvs_online/foo
pvscan --cache --background "$dev2" -aay
-aux lvmconf 'global/use_lvmetad = 0'
-# FIXME: inconclusive. may be a timing issue
check inactive $vg1 foo
-aux lvmconf 'global/use_lvmetad = 1'
pvscan --cache --background "$dev1" -aay
-aux lvmconf 'global/use_lvmetad = 0'
-i=100
-while ! check active $vg1 foo; do
- test $i -lt 0 && fail "Failed to autoactivate"
- sleep .1
- i=$((i-1))
-done
-aux lvmconf 'global/use_lvmetad = 1'
+check active $vg1 foo
+rm /run/lvm/pvs_online/foo
vgremove -ff $vg1