Repository: mesos Updated Branches: refs/heads/master 1c94458e3 -> 7955dc9dc
Allowed multiple master detections in MasterFailover test. After master failover, the scheduler library can fire new master detection more than once. We are not interested in sporadic connected events, but in the end result: the scheduler can resubscribe with the same framework id. Review: https://reviews.apache.org/r/63673 Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/ebd27f8a Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/ebd27f8a Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/ebd27f8a Branch: refs/heads/master Commit: ebd27f8a39177ef26d05bbde5ad0e2e66c8811ff Parents: a6bb16a Author: Alexander Rukletsov <al...@apache.org> Authored: Tue Nov 7 21:24:16 2017 +0100 Committer: Alexander Rukletsov <al...@apache.org> Committed: Mon Nov 13 21:41:47 2017 +0100 ---------------------------------------------------------------------- src/tests/scheduler_tests.cpp | 58 +++++++++++--------------------------- 1 file changed, 16 insertions(+), 42 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/ebd27f8a/src/tests/scheduler_tests.cpp ---------------------------------------------------------------------- diff --git a/src/tests/scheduler_tests.cpp b/src/tests/scheduler_tests.cpp index c3ac706..45fc9c0 100644 --- a/src/tests/scheduler_tests.cpp +++ b/src/tests/scheduler_tests.cpp @@ -264,37 +264,22 @@ TEST_P_TEMP_DISABLED_ON_WINDOWS(SchedulerTest, MasterFailover) auto scheduler = std::make_shared<v1::MockHTTPScheduler>(); auto detector = std::make_shared<StandaloneMasterDetector>(master.get()->pid); - Future<Nothing> connected; EXPECT_CALL(*scheduler, connected(_)) - .WillOnce(FutureSatisfy(&connected)) - .WillRepeatedly(Return()); // Ignore future invocations. - - ContentType contentType = GetParam(); - - v1::scheduler::TestMesos mesos( - master.get()->pid, - contentType, - scheduler, - detector); - - AWAIT_READY(connected); + .WillOnce(v1::scheduler::SendSubscribe(v1::DEFAULT_FRAMEWORK_INFO)) + .WillRepeatedly(Return()); Future<Event::Subscribed> subscribed; EXPECT_CALL(*scheduler, subscribed(_, _)) - .WillOnce(FutureArg<1>(&subscribed)); + .WillOnce(FutureArg<1>(&subscribed)) + .WillRepeatedly(Return()); EXPECT_CALL(*scheduler, heartbeat(_)) .WillRepeatedly(Return()); // Ignore heartbeats. - { - Call call; - call.set_type(Call::SUBSCRIBE); - - Call::Subscribe* subscribe = call.mutable_subscribe(); - subscribe->mutable_framework_info()->CopyFrom(v1::DEFAULT_FRAMEWORK_INFO); + ContentType contentType = GetParam(); - mesos.send(call); - } + v1::scheduler::TestMesos mesos( + master.get()->pid, contentType, scheduler, detector); AWAIT_READY(subscribed); @@ -312,32 +297,21 @@ TEST_P_TEMP_DISABLED_ON_WINDOWS(SchedulerTest, MasterFailover) AWAIT_READY(disconnected); - Future<Nothing> connected2; + // Scheduler library can fire new master detection more than once. EXPECT_CALL(*scheduler, connected(_)) - .WillOnce(FutureSatisfy(&connected2)); - - detector->appoint(master.get()->pid); - - AWAIT_READY(connected2); + .WillRepeatedly( + v1::scheduler::SendSubscribe(v1::DEFAULT_FRAMEWORK_INFO, frameworkId)); + Future<Event::Subscribed> subscribed2; EXPECT_CALL(*scheduler, subscribed(_, _)) - .WillOnce(FutureArg<1>(&subscribed)); - - { - Call call; - call.mutable_framework_id()->CopyFrom(frameworkId); - call.set_type(Call::SUBSCRIBE); - - Call::Subscribe* subscribe = call.mutable_subscribe(); - subscribe->mutable_framework_info()->CopyFrom(v1::DEFAULT_FRAMEWORK_INFO); - subscribe->mutable_framework_info()->mutable_id()->CopyFrom(frameworkId); + .WillOnce(FutureArg<1>(&subscribed2)) + .WillRepeatedly(Return()); - mesos.send(call); - } + detector->appoint(master.get()->pid); - AWAIT_READY(subscribed); + AWAIT_READY(subscribed2); - EXPECT_EQ(frameworkId, subscribed->framework_id()); + EXPECT_EQ(frameworkId, subscribed2->framework_id()); }