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

Reply via email to