summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAmar Tumballi <amarts@redhat.com>2019-04-12 08:16:56 +0530
committerXavi Hernandez <xhernandez@redhat.com>2019-05-30 07:32:34 +0000
commit71caf1423fe5f0eed652210f8158c95fc8a10219 (patch)
treef4a226040e3105df6c3ecb690244ed3236cd8556
parentbfe58919c03ea746aa6c7800fe698b15ca8c6ecb (diff)
tests: add tests for different signal handling
Also some cleanup: * old-protocol.t was actually added to make sure we have line-coverage * first-test.t should have been removed as per the comment. It doesn't do anything. * add statvfs to rpc-coverage so we can cover statvfs in few xlators. updates: bz#1693692 Change-Id: Ie8651ce007de484c4abced16b4de765aa5e517be Signed-off-by: Amar Tumballi <amarts@redhat.com>
-rw-r--r--glusterfsd/src/glusterfsd.c6
-rw-r--r--libglusterfs/src/monitoring.c2
-rw-r--r--libglusterfs/src/statedump.c2
-rwxr-xr-xtests/basic/first-test.t10
-rwxr-xr-xtests/basic/rpc-coverage.sh6
-rwxr-xr-xtests/line-coverage/old-protocol.t (renamed from tests/basic/old-protocol.t)2
-rw-r--r--tests/line-coverage/some-features-in-libglusterfs.t67
7 files changed, 80 insertions, 15 deletions
diff --git a/glusterfsd/src/glusterfsd.c b/glusterfsd/src/glusterfsd.c
index f1b7d742fbc..8773f2d8536 100644
--- a/glusterfsd/src/glusterfsd.c
+++ b/glusterfsd/src/glusterfsd.c
@@ -1672,14 +1672,12 @@ reincarnate(int signum)
ctx = glusterfsd_ctx;
cmd_args = &ctx->cmd_args;
+ gf_msg_trace("gluster", 0, "received reincarnate request (sig:HUP)");
+
if (cmd_args->volfile_server) {
gf_msg("glusterfsd", GF_LOG_INFO, 0, glusterfsd_msg_11,
"Fetching the volume file from server...");
ret = glusterfs_volfile_fetch(ctx);
- } else {
- gf_msg_debug("glusterfsd", 0,
- "Not reloading volume specification file"
- " on SIGHUP");
}
/* Also, SIGHUP should do logrotate */
diff --git a/libglusterfs/src/monitoring.c b/libglusterfs/src/monitoring.c
index 6d9bfb14937..45e3d776903 100644
--- a/libglusterfs/src/monitoring.c
+++ b/libglusterfs/src/monitoring.c
@@ -230,6 +230,8 @@ gf_monitor_metrics(glusterfs_ctx_t *ctx)
int fd = 0;
char *filepath = NULL, *dumppath = NULL;
+ gf_msg_trace("monitoring", 0, "received monitoring request (sig:USR2)");
+
dumppath = ctx->config.metrics_dumppath;
if (dumppath == NULL) {
dumppath = GLUSTER_METRICS_DIR;
diff --git a/libglusterfs/src/statedump.c b/libglusterfs/src/statedump.c
index 0cf80c0f87c..04a7e18ef3b 100644
--- a/libglusterfs/src/statedump.c
+++ b/libglusterfs/src/statedump.c
@@ -805,6 +805,8 @@ gf_proc_dump_info(int signum, glusterfs_ctx_t *ctx)
int brick_count = 0;
int len = 0;
+ gf_msg_trace("dump", 0, "received statedump request (sig:USR1)");
+
gf_proc_dump_lock();
if (!ctx)
diff --git a/tests/basic/first-test.t b/tests/basic/first-test.t
deleted file mode 100755
index 535b269e6b3..00000000000
--- a/tests/basic/first-test.t
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-
-. $(dirname $0)/../include.rc
-
-cat << EOF
-This test should run first for http://review.gluster.org/#/c/13439/ and should
-be removed once that patch has been merged.
-EOF
-
-TEST true
diff --git a/tests/basic/rpc-coverage.sh b/tests/basic/rpc-coverage.sh
index 4b6759a59eb..ad145559c41 100755
--- a/tests/basic/rpc-coverage.sh
+++ b/tests/basic/rpc-coverage.sh
@@ -419,9 +419,15 @@ function test_rmdir()
rm -rf $PFX || fail "rm -rf"
}
+function test_statvfs()
+{
+ df $DIR 2>&1 || fail "df"
+}
+
function run_tests()
{
+ test_statvfs;
test_mkdir;
test_create;
test_statfs;
diff --git a/tests/basic/old-protocol.t b/tests/line-coverage/old-protocol.t
index 27a688d3538..3664c79d644 100755
--- a/tests/basic/old-protocol.t
+++ b/tests/line-coverage/old-protocol.t
@@ -26,6 +26,6 @@ TEST $GFS -s $H0 --volfile-id $V0 $M1;
## TODO: best way to increase coverage is to have a gfapi program
## which covers maximum fops
-TEST $(dirname $0)/rpc-coverage.sh $M1
+TEST $(dirname $0)/../basic/rpc-coverage.sh $M1
cleanup;
diff --git a/tests/line-coverage/some-features-in-libglusterfs.t b/tests/line-coverage/some-features-in-libglusterfs.t
new file mode 100644
index 00000000000..5719c4e039c
--- /dev/null
+++ b/tests/line-coverage/some-features-in-libglusterfs.t
@@ -0,0 +1,67 @@
+#!/bin/bash
+
+. $(dirname $0)/../include.rc
+. $(dirname $0)/../volume.rc
+
+function grep_string {
+ local f=$1
+ local string=$2
+ # The output of test script also shows up in log. Ignore them.
+ echo $(grep ${string} ${f} | grep -v "++++++" | wc -l)
+}
+
+cleanup;
+
+TEST glusterd
+TEST pidof glusterd
+TEST $CLI volume info;
+
+TEST $CLI volume create $V0 $H0:$B0/${V0}
+TEST $CLI volume set $V0 client-log-level TRACE
+TEST $CLI volume start $V0;
+
+log_file="$(gluster --print-logdir)/gluster.log"
+## Mount FUSE
+TEST $GFS -s $H0 --log-file $log_file --volfile-id $V0 $M1
+
+## Cover 'monitoring.c' here
+pgrep 'glusterfs' | xargs kill -USR2
+
+EXPECT_WITHIN 2 1 grep_string $log_file 'sig:USR2'
+
+## Also cover statedump
+pgrep 'glusterfs' | xargs kill -USR1
+
+EXPECT_WITHIN 2 1 grep_string $log_file 'sig:USR1'
+
+## Also cover SIGHUP
+pgrep 'glusterfs' | xargs kill -HUP
+
+EXPECT_WITHIN 2 1 grep_string $log_file 'sig:HUP'
+
+## Also cover SIGTERM
+pgrep 'glusterfs' | xargs kill -TERM
+
+EXPECT_WITHIN 2 1 grep_string $log_file 'cleanup_and_exit'
+
+# Previous call should make umount of the process.
+# force_umount $M1
+
+# TODO: below section is commented out, mainly as our regression treats the test
+# as failure because sending ABRT signal will cause the process to dump core.
+# Our regression treats the test as failure, if there is a core.
+# FIXME: figure out a way to run this test, because this part of the code gets
+# executed only when there is coredump, and it is critical for debugging, to
+# keep it working always.
+
+# # Restart client
+# TEST $GFS -s $H0 --log-file $log_file --volfile-id $V0 $M1
+#
+# ## Also cover SIGABRT
+# pgrep 'glusterfs ' | xargs kill -ABRT
+#
+# TEST [ 1 -eq $(grep 'pending frames' $log_file | wc -l) ]
+
+TEST rm $log_file
+
+cleanup;