From abc4d4cfa01d922c46ebb1abfa5d801ba8c6b5c8 Mon Sep 17 00:00:00 2001 From: Amar Tumballi Date: Sat, 1 Jun 2019 22:43:03 +0530 Subject: lcov: run more fops on translators Translators covered: * playground/template * debug/delay-gen * debug/error-gen * features/namespace * features/quiesce * meta updates: bz#1693692 Change-Id: Ic8fde8efcb309ea492d8e819241f786f7ff467a1 Signed-off-by: Amar Tumballi --- tests/basic/playground/template-xlator-sanity.t | 14 +++++++- tests/features/delay-gen.t | 12 +++++++ tests/line-coverage/errorgen-coverage.t | 44 +++++++++++++++++++++++++ tests/line-coverage/meta-max-coverage.t | 8 ++++- tests/line-coverage/namespace-linecoverage.t | 39 ++++++++++++++++++++++ tests/line-coverage/quiesce-coverage.t | 44 +++++++++++++++++++++++++ 6 files changed, 159 insertions(+), 2 deletions(-) create mode 100755 tests/line-coverage/errorgen-coverage.t create mode 100644 tests/line-coverage/namespace-linecoverage.t create mode 100755 tests/line-coverage/quiesce-coverage.t diff --git a/tests/basic/playground/template-xlator-sanity.t b/tests/basic/playground/template-xlator-sanity.t index a89a38c51c6..1c665502bfe 100755 --- a/tests/basic/playground/template-xlator-sanity.t +++ b/tests/basic/playground/template-xlator-sanity.t @@ -15,6 +15,7 @@ end-volume volume template type playground/template subvolumes posix + option dummy 13 end-volume EOF @@ -24,8 +25,19 @@ TEST $(dirname $0)/../rpc-coverage.sh --no-locks $M0 # Take statedump to get maximum code coverage pid=$(ps auxww | grep glusterfs | grep -E "template.vol" | awk '{print $2}' | head -1) + TEST generate_statedump $pid -EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" force_umount $M0 +# For monitor output +kill -USR2 $pid + +# Handle SIGHUP and reconfigure +sed -i -e '/s/dummy 13/dummy 42/g' $B0/template.vol +kill -HUP $pid + +# for calling 'fini()' +kill -TERM $pid + +force_umount $M0 cleanup; diff --git a/tests/features/delay-gen.t b/tests/features/delay-gen.t index 712b5b60065..38127317d8a 100755 --- a/tests/features/delay-gen.t +++ b/tests/features/delay-gen.t @@ -36,5 +36,17 @@ create_max_latency=$($CLI volume profile $V0 info | grep CREATE | awk 'BEGIN {ma TEST [ ! -z $write_max_latency ]; TEST [ -z $create_max_latency ]; +# Not providing a particular fop will make it test everything +TEST $CLI volume reset $V0 delay-gen.enable +TEST $CLI volume set $V0 delay-gen.delay-duration 100 + +cp $(dirname ${0})/../../api/examples/glfsxmp.c glfsxmp.c +build_tester ./glfsxmp.c -lgfapi +./glfsxmp $V0 $H0 >/dev/null +cleanup_tester ./glfsxmp +rm ./glfsxmp.c + +$(dirname $0)/../basic/rpc-coverage.sh $M0 >/dev/null + cleanup; #G_TESTDEF_TEST_STATUS_NETBSD7=1501397 diff --git a/tests/line-coverage/errorgen-coverage.t b/tests/line-coverage/errorgen-coverage.t new file mode 100755 index 00000000000..e95c4847b22 --- /dev/null +++ b/tests/line-coverage/errorgen-coverage.t @@ -0,0 +1,44 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc + +# Because I have added 10 iterations of rpc-coverage and glfsxmp for errorgen +SCRIPT_TIMEOUT=600 + +cleanup; + +## Start and create a volume +TEST glusterd; +TEST pidof glusterd; +TEST $CLI volume info; + +TEST $CLI volume create $V0 replica 3 $H0:$B0/${V0}{1,2,3,4,5,6}; + +TEST $CLI volume set $V0 error-gen posix; +TEST $CLI volume set $V0 debug.error-failure 45%; + +## Start volume and verify +TEST $CLI volume start $V0; + +TEST $GFS -s $H0 --volfile-id $V0 $M1; + +cp $(dirname ${0})/../../api/examples/glfsxmp.c glfsxmp.c +build_tester ./glfsxmp.c -lgfapi +for i in $(seq 1 10); do + # as there is error-gen, there can be errors, so no + # need to test for success of below two commands + $(dirname $0)/../basic/rpc-coverage.sh $M1 >/dev/null + ./glfsxmp $V0 $H0 >/dev/null +done + +TEST cleanup_tester ./glfsxmp +TEST rm ./glfsxmp.c + + + +## Finish up +TEST $CLI volume stop $V0; + +TEST $CLI volume delete $V0; + +cleanup; diff --git a/tests/line-coverage/meta-max-coverage.t b/tests/line-coverage/meta-max-coverage.t index 16f65dc8a27..1cc07610aa7 100755 --- a/tests/line-coverage/meta-max-coverage.t +++ b/tests/line-coverage/meta-max-coverage.t @@ -20,7 +20,13 @@ TEST stat $M1/.meta/ # expect failures in rpc-coverage.sh execution. res=$($(dirname $0)/../basic/rpc-coverage.sh $M1/.meta) -res=$(find $M1/.meta -type f -print | xargs cat > /dev/null) + +# Expect errors here, hence no need to 'check for success' +for file in $(find $M1/.meta type f -print); do + cat $file >/dev/null + echo 1>$file + echo hello>$file +done TEST umount $M1 diff --git a/tests/line-coverage/namespace-linecoverage.t b/tests/line-coverage/namespace-linecoverage.t new file mode 100644 index 00000000000..0b7d4fe34f4 --- /dev/null +++ b/tests/line-coverage/namespace-linecoverage.t @@ -0,0 +1,39 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc +. $(dirname $0)/../volume.rc +cleanup; + +TEST glusterd +TEST $CLI volume create $V0 replica 3 $H0:$B0/${V0}{0,1,2,3,4,5,6,7,8} +TEST $CLI volume set $V0 performance.stat-prefetch off +TEST $CLI volume set $V0 cluster.read-subvolume-index 0 +TEST $CLI volume set $V0 features.tag-namespaces on +TEST $CLI volume start $V0 +TEST $CLI volume set $V0 storage.build-pgfid on + +sleep 2 + +## Mount FUSE +TEST $GFS -s $H0 --volfile-id $V0 $M1; + + +mkdir -p $M1/namespace + +# subvol_1 = bar, subvol_2 = foo, subvol_3 = hey +# Test create, write (tagged by loc, fd respectively). +touch $M1/namespace/{bar,foo,hey} + +open $M1/namespace/hey + +## TODO: best way to increase coverage is to have a gfapi program +## which covers maximum fops +TEST $(dirname $0)/../basic/rpc-coverage.sh $M1 + +TEST cp $(dirname ${0})/../../api/examples/glfsxmp.c glfsxmp.c +TEST build_tester ./glfsxmp.c -lgfapi +TEST ./glfsxmp $V0 $H0 +TEST cleanup_tester ./glfsxmp +TEST rm ./glfsxmp.c + +cleanup; diff --git a/tests/line-coverage/quiesce-coverage.t b/tests/line-coverage/quiesce-coverage.t new file mode 100755 index 00000000000..56c96ebef54 --- /dev/null +++ b/tests/line-coverage/quiesce-coverage.t @@ -0,0 +1,44 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc +. $(dirname $0)/../volume.rc + +cleanup; + +TEST glusterd +TEST pidof glusterd +TEST $CLI volume info; + +TEST $CLI volume create $V0 replica 3 $H0:$B0/${V0}{1,2,3,4,5,6}; + +EXPECT "$V0" volinfo_field $V0 'Volume Name'; +EXPECT 'Created' volinfo_field $V0 'Status'; +EXPECT '6' brick_count $V0 + +TEST $CLI volume start $V0; +EXPECT 'Started' volinfo_field $V0 'Status'; + +file="/var/lib/glusterd/vols/$V0/trusted-$V0.tcp-fuse.vol" + +cat >> ${file} <