summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPoornima G <pgurusid@redhat.com>2016-07-25 10:26:58 +0530
committerJeff Darcy <jdarcy@redhat.com>2016-07-27 09:29:29 -0700
commit4e1ad2c96ea692e49fb82ce533cdc26818277e8d (patch)
treece03c12f473cc26aa76a4d42a314c504d5496a59
parent6e78a0dda9343d75674a12b7e1a1e8e59e17c78c (diff)
tests: Fix the spurious failure in libgfapi-fini-hang.t
RCA: After running libgfapi-fini-hang, there is a EXPECT_WITHIN which waits for PROCESS_UP_TIMEOUT(20s), for the process libgfapi-fini-hang to die. Currently EXPECT_WITHIN is returning success even if the process libgfapi-fini-hang is alive. This is because "pgrep libgfapi-fini-hang" in check_process() is returning 1(no process alive) even if the process is alive. Man page of pgrep says "The process name used for matching is limited to the 15 characters". Hence changing the name of executable from libgfapi-fini-hang to gfapi-hang, so that it falls within the limit. As explained the failure is not because there was a hang(logs show that glfs_set_volfile_server was still executing), but because EXPECT_WITHIN was not really waiting. And hence there was a race between the execution of the process libgfapi-fini-hang and the kill. Change-Id: I257715865e0d3e5a14f83d1e235c01899e1cae68 BUG: 1358594 Signed-off-by: Poornima G <pgurusid@redhat.com> Reviewed-on: http://review.gluster.org/14997 Smoke: Gluster Build System <jenkins@build.gluster.org> CentOS-regression: Gluster Build System <jenkins@build.gluster.org> Reviewed-by: Raghavendra Talur <rtalur@redhat.com> Reviewed-by: Niels de Vos <ndevos@redhat.com> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org> Tested-by: Gluster Build System <jenkins@build.gluster.org>
-rw-r--r--tests/basic/gfapi/libgfapi-fini-hang.c7
-rwxr-xr-xtests/basic/gfapi/libgfapi-fini-hang.t12
2 files changed, 11 insertions, 8 deletions
diff --git a/tests/basic/gfapi/libgfapi-fini-hang.c b/tests/basic/gfapi/libgfapi-fini-hang.c
index 81b065ca924..e192751f295 100644
--- a/tests/basic/gfapi/libgfapi-fini-hang.c
+++ b/tests/basic/gfapi/libgfapi-fini-hang.c
@@ -24,19 +24,20 @@ main (int argc, char *argv[])
int ret = 0, i;
glfs_fd_t *fd = NULL;
char readbuf[32];
- char *filename = "a1";
+ char *logname = NULL;
char *hostname = NULL;
char *volname = NULL;
fprintf (stderr, "Starting libgfapi_fini\n");
- if (argc < 3) {
+ if (argc < 4) {
fprintf (stderr, "Invalid argument\n");
exit(1);
}
hostname = argv[1];
volname = argv[2];
+ logname = argv[3];
fs = glfs_new (volname);
if (!fs) {
@@ -47,7 +48,7 @@ main (int argc, char *argv[])
ret = glfs_set_volfile_server (fs, "tcp", hostname, 0);
LOG_ERR("glfs_set_volfile_server", ret);
- ret = glfs_set_logging (fs, "/dev/stderr", 7);
+ ret = glfs_set_logging (fs, logname, 7);
LOG_ERR("glfs_set_logging", ret);
/* Do not call glfs_init.
diff --git a/tests/basic/gfapi/libgfapi-fini-hang.t b/tests/basic/gfapi/libgfapi-fini-hang.t
index 8bbeb848122..7c939872574 100755
--- a/tests/basic/gfapi/libgfapi-fini-hang.t
+++ b/tests/basic/gfapi/libgfapi-fini-hang.t
@@ -3,7 +3,7 @@
. $(dirname $0)/../../include.rc
function check_process () {
- pgrep libgfapi-fini-hang
+ ps -p $1
if [ $? -eq 1 ] ; then
echo "Y"
else
@@ -21,16 +21,18 @@ EXPECT 'Created' volinfo_field $V0 'Status';
TEST $CLI volume start $V0;
EXPECT 'Started' volinfo_field $V0 'Status';
+logdir=`gluster --print-logdir`
+
TEST build_tester -lgfapi $(dirname $0)/libgfapi-fini-hang.c -o $M0/libgfapi-fini-hang
TEST cd $M0
- ./libgfapi-fini-hang $H0 $V0 &
-lpid=$!
+ ./libgfapi-fini-hang $H0 $V0 $logdir/libgfapi-fini-hang.log &
+PID=$!
# check if the process "libgfapi-fini-hang" exits with in $PROCESS_UP_TIMEOUT
-EXPECT_WITHIN $PROCESS_UP_TIMEOUT 'Y' check_process
+EXPECT_WITHIN $PROCESS_UP_TIMEOUT 'Y' check_process $PID
# Kill the process if present
-TEST ! kill -9 $lpid
+TEST ! kill -9 $PID
TEST rm -f $M0/libgfapi-fini-hang