From 9e096b42d9e6448175eecf0e9b979a644c6104b0 Mon Sep 17 00:00:00 2001 From: Niels de Vos Date: Thu, 19 Nov 2015 15:57:54 +0100 Subject: tests: fix timeout in mount-nfs-auth.t The mount timeout was too short. The normal configuration-change path (construct graph, call reconfigure) and the auth-refresh path might in effect run serially. Therefore we have to wait for the *sum* of those two intervals. As with all too-short-timeout problems, the result was that the test would run fine most of the time. However, it has caused spurious failures on my own patches a half dozen times, and I have a half dozen other emails about it nuking other people's as well (most often but not always on NetBSD). The fix, obviously, is to calculate and use the right timeout value for NFS mount actions. Other actions and timeouts have been left alone. Cherry picked from commit ad876d7a127cf56a3cca11c24ad2b20e1955f82b: > Change-Id: Ic8f013c8c830e33c48bcc6d1b603d6d22a8ba3c5 > Signed-off-by: Jeff Darcy > Reviewed-on: http://review.gluster.org/12396 > Tested-by: NetBSD Build System > Tested-by: Gluster Build System > Reviewed-by: Kaleb KEITHLEY Change-Id: Ic8f013c8c830e33c48bcc6d1b603d6d22a8ba3c5 BUG: 1283679 Signed-off-by: Niels de Vos Reviewed-on: http://review.gluster.org/12663 Tested-by: NetBSD Build System Tested-by: Gluster Build System Reviewed-by: jiffin tony Thottan --- tests/basic/mount-nfs-auth.t | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) (limited to 'tests') diff --git a/tests/basic/mount-nfs-auth.t b/tests/basic/mount-nfs-auth.t index eb373731adb..e6376bbfa89 100755 --- a/tests/basic/mount-nfs-auth.t +++ b/tests/basic/mount-nfs-auth.t @@ -3,6 +3,12 @@ . $(dirname $0)/../include.rc . $(dirname $0)/../nfs.rc +# Our mount timeout must be as long as the time for a regular configuration +# change to be acted upon *plus* AUTH_REFRESH_TIMEOUT, not one replacing the +# other. Otherwise this process races vs. the one making the change we're +# trying to test, which leads to spurious failures. +MY_MOUNT_TIMEOUT=$((CONFIG_UPDATE_TIMEOUT+AUTH_REFRESH_INTERVAL)) + cleanup; ## Check whether glusterd is running TEST glusterd @@ -168,7 +174,7 @@ TEST netgroup_deny_this_host ## Technically deauthorized this host, but since auth is disabled we should be ## able to do mounts, writes, etc. -EXPECT_WITHIN $AUTH_REFRESH_INTERVAL "Y" check_mount_success $V0 +EXPECT_WITHIN $MY_MOUNT_TIMEOUT "Y" check_mount_success $V0 EXPECT "Y" small_write EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" umount_nfs $N0 @@ -202,14 +208,16 @@ EXPECT "Y" check_mount_failure $V0 TEST export_allow_this_host TEST netgroup_allow_this_host -EXPECT_WITHIN $AUTH_REFRESH_INTERVAL "Y" check_mount_success $V0 +EXPECT_WITHIN $MY_MOUNT_TIMEOUT "Y" check_mount_success $V0 EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" umount_nfs $N0 ## Allow host in netgroups but not in exports, host should be allowed TEST export_deny_this_host TEST netgroup_allow_this_host -EXPECT_WITHIN $AUTH_REFRESH_INTERVAL "Y" check_mount_success $V0 +# wait for the mount authentication to rebuild + +EXPECT_WITHIN $MY_MOUNT_TIMEOUT "Y" check_mount_success $V0 EXPECT "Y" small_write TEST big_write EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" umount_nfs $N0 @@ -218,14 +226,14 @@ EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" umount_nfs $N0 TEST export_allow_this_host TEST netgroup_deny_this_host -EXPECT_WITHIN $AUTH_REFRESH_INTERVAL "Y" check_mount_success $V0 +EXPECT_WITHIN $MY_MOUNT_TIMEOUT "Y" check_mount_success $V0 EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" umount_nfs $N0 ## Finally, reauth the host in export and netgroup, test mount & write TEST export_allow_this_host_l1 TEST netgroup_allow_this_host -EXPECT_WITHIN $AUTH_REFRESH_INTERVAL "Y" check_mount_success $V0L1 +EXPECT_WITHIN $MY_MOUNT_TIMEOUT "Y" check_mount_success $V0L1 EXPECT "Y" small_write ## Failover test: Restarting NFS and then doing a write should pass @@ -249,7 +257,7 @@ TEST netgroup_deny_this_host $CLI vol stop $V0 $CLI vol start $V0 -EXPECT_WITHIN $AUTH_REFRESH_INTERVAL "Y" check_mount_success $V0 +EXPECT_WITHIN $MY_MOUNT_TIMEOUT "Y" check_mount_success $V0 EXPECT "N" small_write # Writes should not be allowed TEST ! create # Create should not be allowed TEST stat_nfs # Stat should be allowed @@ -259,14 +267,14 @@ TEST export_deny_this_host TEST netgroup_deny_this_host TEST export_allow_this_host_l1 # Allow this host at L1 -EXPECT_WITHIN $AUTH_REFRESH_INTERVAL "Y" check_mount_failure $V0 #V0 shouldnt be allowed +EXPECT_WITHIN $MY_MOUNT_TIMEOUT "Y" check_mount_failure $V0 #V0 shouldnt be allowed EXPECT "Y" check_mount_success $V0L1 #V0L1 should be EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" umount_nfs $N0 ## Test wildcard hosts TEST export_allow_wildcard -EXPECT_WITHIN $AUTH_REFRESH_INTERVAL "Y" check_mount_success $V0 +EXPECT_WITHIN $MY_MOUNT_TIMEOUT "Y" check_mount_success $V0 EXPECT_WITHIN $AUTH_REFRESH_INTERVAL "Y" small_write EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" umount_nfs $N0 @@ -278,7 +286,7 @@ EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" umount_nfs $N0 TEST export_allow_this_host_with_slash -EXPECT_WITHIN $AUTH_REFRESH_INTERVAL "Y" check_mount_success $V0 +EXPECT_WITHIN $MY_MOUNT_TIMEOUT "Y" check_mount_success $V0 EXPECT "Y" small_write EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" umount_nfs $N0 @@ -296,7 +304,7 @@ EXPECT_WITHIN $NFS_EXPORT_TIMEOUT "1" is_nfs_export_available TEST export_deny_this_host # Deny the host TEST netgroup_deny_this_host -EXPECT_WITHIN $AUTH_REFRESH_INTERVAL "Y" check_mount_success $V0 # Do a mount & test +EXPECT_WITHIN $MY_MOUNT_TIMEOUT "Y" check_mount_success $V0 # Do a mount & test EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" umount_nfs $N0 ## Turn back on the exports authentication -- cgit