Whamcloud - gitweb
LU-8248 tests: fix sanity test_248 VM checks 98/20698/4
authorAndreas Dilger <andreas.dilger@intel.com>
Wed, 8 Jun 2016 23:33:31 +0000 (17:33 -0600)
committerOleg Drokin <oleg.drokin@intel.com>
Thu, 11 Aug 2016 05:49:53 +0000 (05:49 +0000)
Skip test on clients that do not have fast_read support.
If running in any VM, not just kvm, ignore perf test failures.

Test-Parameters: trivial
Signed-off-by: Andreas Dilger <andreas.dilger@intel.com>
Change-Id: I09fbdb58e71d042c57b6bac1f6f1ef82243ebbe5
Reviewed-on: http://review.whamcloud.com/20698
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Jinshan Xiong <jinshan.xiong@intel.com>
Reviewed-by: James Nunez <james.a.nunez@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/tests/sanity.sh
lustre/tests/test-framework.sh

index 4fec6de..dab737d 100755 (executable)
@@ -13769,33 +13769,34 @@ run_test 247e "mount .. as fileset"
 test_248() {
        local my_error=error
 
 test_248() {
        local my_error=error
 
-       # This test case is time sensitive and maloo uses kvm to run auto test.
+       local fast_read_sav=$($LCTL get_param -n llite.*.fast_read 2>/dev/null)
+       [ -z "$fast_read_sav" ] && skip "no fast read support" && return
+
+       # This test case is time sensitive and Maloo uses KVM to run autotest.
        # Therefore the complete time of I/O task is unreliable and depends on
        # Therefore the complete time of I/O task is unreliable and depends on
-       # the work load on the host machine when the task is running.
-       which virt-what 2> /dev/null && [ "$(virt-what)" != "kvm" ] ||
-               { echo "no virt-what installed or running in kvm; ignore error";
-                 my_error="error_ignore env=kvm"; }
+       # the workload on the host machine when the task is running.
+       local virt=$(running_in_vm)
+       [ -n "$virt" ] && echo "running in VM '$virt', ignore error" &&
+                 my_error="error_ignore env=$virt"
 
        # create a large file for fast read verification
 
        # create a large file for fast read verification
-       dd if=/dev/zero of=$DIR/$tfile bs=128M count=1 > /dev/null 2>&1
+       dd if=/dev/zero of=$DIR/$tfile bs=1M count=128 > /dev/null 2>&1
 
        # make sure the file is created correctly
        $CHECKSTAT -s $((128*1024*1024)) $DIR/$tfile ||
                { rm -f $DIR/$tfile; skip "file creation error" && return; }
 
 
        # make sure the file is created correctly
        $CHECKSTAT -s $((128*1024*1024)) $DIR/$tfile ||
                { rm -f $DIR/$tfile; skip "file creation error" && return; }
 
-       local saved_fast_read=$($LCTL get_param -n llite.*.fast_read)
-
        echo "Test 1: verify that fast read is 4 times faster on cache read"
 
        # small read with fast read enabled
        $LCTL set_param -n llite.*.fast_read=1
        echo "Test 1: verify that fast read is 4 times faster on cache read"
 
        # small read with fast read enabled
        $LCTL set_param -n llite.*.fast_read=1
-       local t_fast=$(eval time -p dd if=$DIR/$tfile of=/dev/null bs=4k 2>&1 |
-                  awk '/real/ { print $2 }')
+       local t_fast=$(dd if=$DIR/$tfile of=/dev/null bs=4k 2>&1 |
+               awk '/copied/ { print $6 }')
 
        # small read with fast read disabled
        $LCTL set_param -n llite.*.fast_read=0
 
        # small read with fast read disabled
        $LCTL set_param -n llite.*.fast_read=0
-       local t_slow=$(eval time -p dd if=$DIR/$tfile of=/dev/null bs=4k 2>&1 |
-                  awk '/real/ { print $2 }')
+       local t_slow=$(dd if=$DIR/$tfile of=/dev/null bs=4k 2>&1 |
+               awk '/copied/ { print $6 }')
 
        # verify that fast read is 4 times faster for cache read
        [ $(bc <<< "4 * $t_fast < $t_slow") -eq 1 ] ||
 
        # verify that fast read is 4 times faster for cache read
        [ $(bc <<< "4 * $t_fast < $t_slow") -eq 1 ] ||
@@ -13806,19 +13807,19 @@ test_248() {
 
        # 1k non-cache read
        cancel_lru_locks osc
 
        # 1k non-cache read
        cancel_lru_locks osc
-       local t_1k=$(eval time -p dd if=$DIR/$tfile of=/dev/null bs=1k 2>&1 |
-            awk '/real/ { print $2 }')
+       local t_1k=$(dd if=$DIR/$tfile of=/dev/null bs=1k 2>&1 |
+               awk '/copied/ { print $6 }')
 
        # 1M non-cache read
        cancel_lru_locks osc
 
        # 1M non-cache read
        cancel_lru_locks osc
-       local t_1m=$(eval time -p dd if=$DIR/$tfile of=/dev/null bs=1M 2>&1 |
-            awk '/real/ { print $2 }')
+       local t_1m=$(dd if=$DIR/$tfile of=/dev/null bs=1k 2>&1 |
+               awk '/copied/ { print $6 }')
 
        # verify that big IO is not 4 times faster than small IO
        [ $(bc <<< "4 * $t_1k >= $t_1m") -eq 1 ] ||
                $my_error "bigger IO is way too fast: $t_1k vs $t_1m"
 
 
        # verify that big IO is not 4 times faster than small IO
        [ $(bc <<< "4 * $t_1k >= $t_1m") -eq 1 ] ||
                $my_error "bigger IO is way too fast: $t_1k vs $t_1m"
 
-       $LCTL set_param -n llite.*.fast_read=$saved_fast_read
+       $LCTL set_param -n llite.*.fast_read=$fast_read_sav
        rm -f $DIR/$tfile
 }
 run_test 248 "fast read verification"
        rm -f $DIR/$tfile
 }
 run_test 248 "fast read verification"
index 08d19ec..fed6964 100755 (executable)
@@ -978,6 +978,19 @@ facet_vdevice() {
        echo -n $device
 }
 
        echo -n $device
 }
 
+running_in_vm() {
+       local virt=$(virt-what 2> /dev/null)
+
+       [ $? -eq 0 ] && [ -n "$virt" ] && { echo $virt; return; }
+
+       virt=$(dmidecode -s system-product-name | awk '{print $1}')
+
+       case $virt in
+               VMware|KVM|VirtualBox|Parallels) echo ${virt,,} ;;
+               *) ;;
+       esac
+}
+
 #
 # Re-read the partition table on failover partner host.
 # After a ZFS storage pool is created on a shared device, the partition table
 #
 # Re-read the partition table on failover partner host.
 # After a ZFS storage pool is created on a shared device, the partition table