diff options
author | Mohammed Rafi KC <rkavunga@redhat.com> | 2019-03-13 12:56:58 +0530 |
---|---|---|
committer | Ravishankar N <ravishankar@redhat.com> | 2020-06-16 12:30:45 +0000 |
commit | 739e20dfa4bf116bc715eb55c33c86613e84b9ce (patch) | |
tree | 2bbb184c2b9bb5fe061b77e550df0d34d560864a /tests | |
parent | b04de77523dbd156d440a2f42e99bb0e8cc68d0f (diff) |
tests/bug-844688.t: test bug-844688.t is failing on master
Test case bug-844688.t is failing quite frequently on master.
This test check for the existence of call_stack, frame creation
time.
But there is a chance that at a point in time, the stack count
might become zero. So doing the check in EXPECT_WITHIN make
more sense.
Change-Id: Id2ede7f6fdcb5f016f52c5c0557ce6ac510d4e96
Fixes: #1307
Signed-off-by: Mohammed Rafi KC <rkavunga@redhat.com>
(cherry picked from commit 08a9f198d576bbae3596536bbd2c4d34dadd1a93)
Diffstat (limited to 'tests')
-rwxr-xr-x | tests/bugs/glusterfs/bug-844688.t | 43 |
1 files changed, 32 insertions, 11 deletions
diff --git a/tests/bugs/glusterfs/bug-844688.t b/tests/bugs/glusterfs/bug-844688.t index 39f04092cf7..65f41b342a5 100755 --- a/tests/bugs/glusterfs/bug-844688.t +++ b/tests/bugs/glusterfs/bug-844688.t @@ -3,6 +3,17 @@ . $(dirname $0)/../../include.rc . $(dirname $0)/../../volume.rc +function check_callstack_log { + local text=$1 + statedump_file=$(generate_mount_statedump $V0); + grep $text $statedump_file 2>/dev/null 1>/dev/null; + if [ $? -eq 0 ]; then + echo "1"; + else + echo "0"; + fi; +} + cleanup; TEST glusterd @@ -15,19 +26,29 @@ mount_pid=$(get_mount_process_pid $V0); # enable dumping of call stack creation and frame creation times in statedump # monitoring is enabled by default -TEST touch $M0/touchfile; -(dd if=/dev/urandom of=$M0/file bs=5k 2>/dev/null 1>/dev/null)& -back_pid=$!; -statedump_file=$(generate_mount_statedump $V0); -grep "callstack-creation-time" $statedump_file 2>/dev/null 1>/dev/null; -TEST [ $? -eq 0 ]; -grep "frame-creation-time" $statedump_file 2>/dev/null 1>/dev/null; -TEST [ $? -eq 0 ]; +# We want to make sure that there is a pending frame in gluster stack. +# For that we are creating a blocking lock scenario. + +TEST touch $M0/lockfile; +# Open two fd's on the same file +exec 8>$M0/lockfile; +exec 9>$M0/lockfile; + +# First flock will succeed and the second one will block, hence the background run. +flock -x 8 ; +flock -x 9 & + +EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" check_callstack_log "callstack-creation-time"; +EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" check_callstack_log "frame-creation-time"; + +flock -u 8 +flock -u 9; -kill -SIGTERM $back_pid; -wait >/dev/null 2>&1; +# Closing the fd's +exec 8>&- +exec 9>&- -TEST rm -f $M0/touchfile $M0/file; +TEST rm -f $M0/lockfile; EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" force_umount $M0 rm -f $statedumpdir/glusterdump.$mount_pid.*; |