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 <[email protected]> Authored: Wed Jul 30 15:41:03 2014 -0700 Committer: Jiang Yan Xu <[email protected]> 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());
