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());