You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by ya...@apache.org on 2014/08/01 20:46:57 UTC

git commit: Fixed a flaky test: ZooKeeperTest.LeaderDetectorTimeoutHandling

Repository: mesos
Updated Branches:
  refs/heads/master c5a68be12 -> 8952b5950


Fixed a flaky test: ZooKeeperTest.LeaderDetectorTimeoutHandling

- The original ZK session timeout was the same as AWAIT_READY timeout so it's possible that AWAIT_READY timed out in a race.
- Split the the test into two because to test detector we don't really need to wait several seconds for ZooKeeperTestServer to expire the session, which slows down the test.

Review: https://reviews.apache.org/r/24123


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/8952b595
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/8952b595
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/8952b595

Branch: refs/heads/master
Commit: 8952b5950be7aacd65c05b5d2b3a93b7603d9aef
Parents: c5a68be
Author: Jiang Yan Xu <ya...@jxu.me>
Authored: Wed Jul 30 15:41:03 2014 -0700
Committer: Jiang Yan Xu <ya...@jxu.me>
Committed: Fri Aug 1 11:46:17 2014 -0700

----------------------------------------------------------------------
 src/tests/zookeeper_tests.cpp | 37 +++++++++++++------------------------
 1 file changed, 13 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/8952b595/src/tests/zookeeper_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/zookeeper_tests.cpp b/src/tests/zookeeper_tests.cpp
index be9fa06..8588619 100644
--- a/src/tests/zookeeper_tests.cpp
+++ b/src/tests/zookeeper_tests.cpp
@@ -199,12 +199,12 @@ TEST_F(ZooKeeperTest, LeaderDetector)
 
 TEST_F(ZooKeeperTest, LeaderDetectorTimeoutHandling)
 {
-  Seconds timeout(10);
+  Duration timeout = Seconds(10);
+
   Group group(server->connectString(), timeout, "/test/");
   LeaderDetector detector(&group);
 
-  Future<Group::Membership> membership1 = group.join("member 1");
-  AWAIT_READY(membership1);
+  AWAIT_READY(group.join("member 1"));
 
   Future<Option<Group::Membership> > leader = detector.detect();
 
@@ -228,35 +228,23 @@ TEST_F(ZooKeeperTest, LeaderDetectorTimeoutHandling)
   Clock::settle();
   Clock::advance(timeout);
 
-  AWAIT_READY(leader);
-
-  Clock::resume();
-
   // The detect operation times out.
+  AWAIT_READY(leader);
   EXPECT_NONE(leader.get());
+}
 
-  // Re-detect.
-  leader = detector.detect(leader.get());
 
-  Future<Nothing> connected = FUTURE_DISPATCH(
-      group.process->self(),
-      &GroupProcess::connected);
-  server->startNetwork();
-
-  AWAIT_READY(connected);
-  AWAIT_READY(leader);
-  EXPECT_SOME(leader.get());
+TEST_F(ZooKeeperTest, LeaderDetectorCancellationHandling)
+{
+  Duration timeout = Seconds(10);
 
-  // Wait until the old membership expires on ZK and re-detect.
-  // (Restarting network doesn't delete old ZNode automatically).
-  AWAIT_READY(leader.get().get().cancelled());
-  leader = detector.detect(leader.get());
-  AWAIT_READY(leader);
-  EXPECT_NONE(leader.get());
+  Group group(server->connectString(), timeout, "/test/");
+  LeaderDetector detector(&group);
 
   AWAIT_READY(group.join("member 1"));
 
-  leader = detector.detect(leader.get());
+  Future<Option<Group::Membership> > leader = detector.detect();
+
   AWAIT_READY(leader);
   EXPECT_SOME(leader.get());
 
@@ -264,6 +252,7 @@ TEST_F(ZooKeeperTest, LeaderDetectorTimeoutHandling)
   Future<bool> cancelled = group.cancel(leader.get().get());
   AWAIT_READY(cancelled);
   EXPECT_TRUE(cancelled.get());
+
   leader = detector.detect(leader.get());
   AWAIT_READY(leader);
   EXPECT_NONE(leader.get());