[lvm-devel] master - tests: update test

Zdenek Kabelac zkabelac at fedoraproject.org
Fri Feb 12 09:22:52 UTC 2016


Gitweb:        http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=a077a649837b6d60d892516e32be8854bfb57ee7
Commit:        a077a649837b6d60d892516e32be8854bfb57ee7
Parent:        befe0078ad15563967d8b8321638c75a4f25f438
Author:        Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate:    Fri Feb 12 10:21:07 2016 +0100
Committer:     Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Fri Feb 12 10:21:07 2016 +0100

tests: update test

Upgrade test to count with much faster dmeventd work thanks
to low_watter_mark support.

Fix some wrong tests.
---
 test/shell/thin-autoumount-dmeventd.sh |   47 +++++++++++++++++++++-----------
 1 files changed, 31 insertions(+), 16 deletions(-)

diff --git a/test/shell/thin-autoumount-dmeventd.sh b/test/shell/thin-autoumount-dmeventd.sh
index 781a27e..6b7c7c1 100644
--- a/test/shell/thin-autoumount-dmeventd.sh
+++ b/test/shell/thin-autoumount-dmeventd.sh
@@ -1,5 +1,5 @@
 #!/bin/bash
-# Copyright (C) 2012 Red Hat, Inc. All rights reserved.
+# Copyright (C) 2012-2016 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
@@ -15,9 +15,9 @@ SKIP_WITH_LVMPOLLD=1
 
 export LVM_TEST_THIN_REPAIR_CMD=${LVM_TEST_THIN_REPAIR_CMD-/bin/false}
 
-is_dir_mounted_()
+is_lv_opened_()
 {
-	cat /proc/mounts | sed 's:\\040: :g' | grep "$1"
+	test $(get lv_field "$1" lv_device_open --binary) = "1"
 }
 
 . lib/inittest
@@ -31,6 +31,7 @@ aux have_thin 1 0 0 || skip
 
 aux prepare_dmeventd
 
+# Use autoextend percent 0 - so extension fails and triggers umount...
 aux lvmconf "activation/thin_pool_autoextend_percent = 0" \
             "activation/thin_pool_autoextend_threshold = 70"
 
@@ -51,24 +52,38 @@ mkdir "$mntdir" "$mntusedir"
 mount "$DM_DEV_DIR/mapper/$vg-$lv1" "$mntdir"
 mount "$DM_DEV_DIR/mapper/$vg-$lv2" "$mntusedir"
 
-is_dir_mounted_ "$mntdir"
+# Check both LVs are opened (~mounted)
+is_lv_opened_ "$vg/$lv1"
+is_lv_opened_ "$vg/$lv2"
 
-# fill above 70%
-dd if=/dev/zero of="$mntdir/file$$" bs=1M count=6
 touch "$mntusedir/file$$"
-tail -f "$mntusedir/file$$" &
-PID_TAIL=$!
 sync
-lvs -a $vg
-sleep 12 # dmeventd only checks every 10 seconds :(
 
-lvs -a $vg
-# both dirs should be unmounted
-not is_dir_mounted "$mntdir"
-not is_dir_mounted "$mntusedir"
+# Running 'keeper' process sleep holds the block device still in use
+sleep 60 < "$mntusedir/file$$" &
+PID_SLEEP=$!
 
-# running tail keeps the block device still in use
-kill $PID_TAIL
+# Fill pool above 70%
+dd if=/dev/zero of="$mntdir/file$$" bs=1M count=6 conv=fdatasync
 lvs -a $vg
 
+# Could loop here for a few secs so dmeventd can do some work
+# In the worst case check only happens every 10 seconds :(
+# With low water mark it should react way faster
+for i in $(seq 1 12) ; do
+	is_lv_opened_ "$vg/$lv1" || break
+	test $i -lt 12 || die "$mntdir should have been unmounted by dmeventd!"
+        sleep 1
+done
+
+is_lv_opened_ "$vg/$lv2" || \
+	die "$mntusedir is not mounted here (sleep already expired??) "
+
+# Kill device holding process
+kill $PID_SLEEP
+wait
+
+is_lv_opened_ "$vg/$lv2" && \
+	{ mount; die "$mntusedir should have been unmounted by dmeventd!" }
+
 vgremove -f $vg




More information about the lvm-devel mailing list