You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by al...@apache.org on 2017/10/17 00:44:33 UTC

[14/14] mesos git commit: Cleaned up test ordering in "master_tests.cpp".

Cleaned up test ordering in "master_tests.cpp".

Move all tests from the `MasterTest` fixture before tests from the
`MasterTestPrePostReservationRefinement` fixture.

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


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

Branch: refs/heads/master
Commit: 281d4693d8cc8559afb09f03e0c44d31b3dbcaf5
Parents: 1d16643
Author: Alexander Rukletsov <al...@apache.org>
Authored: Sat Oct 14 18:01:43 2017 -0700
Committer: Alexander Rukletsov <al...@apache.org>
Committed: Mon Oct 16 17:42:44 2017 -0700

----------------------------------------------------------------------
 src/tests/master_tests.cpp | 266 ++++++++++++++++++++--------------------
 1 file changed, 133 insertions(+), 133 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/281d4693/src/tests/master_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/master_tests.cpp b/src/tests/master_tests.cpp
index 7c30f23..5d96457 100644
--- a/src/tests/master_tests.cpp
+++ b/src/tests/master_tests.cpp
@@ -8053,6 +8053,139 @@ TEST_F(MasterTest, IgnoreOldAgentReregistration)
 }
 
 
+// This test checks that the master correctly garbage collects
+// information about gone agents from the registry using the
+// count-based GC criterion.
+//
+// TODO(andschwa): Enable this when MESOS-7604 is fixed.
+TEST_F_TEMP_DISABLED_ON_WINDOWS(MasterTest, RegistryGcByCount)
+{
+  // Configure GC to only keep the most recent gone agent in the gone list.
+  master::Flags masterFlags = CreateMasterFlags();
+  masterFlags.registry_max_agent_count = 1;
+
+  Try<Owned<cluster::Master>> master = this->StartMaster(masterFlags);
+  ASSERT_SOME(master);
+
+  Owned<MasterDetector> detector = master.get()->createDetector();
+
+  Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+    FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
+
+  slave::Flags slaveFlags = CreateSlaveFlags();
+
+  Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), slaveFlags);
+  ASSERT_SOME(slave);
+
+  // Ensure that the agent is registered successfully with the master
+  // before marking it as gone.
+  AWAIT_READY(slaveRegisteredMessage);
+
+  ContentType contentType = ContentType::PROTOBUF;
+
+  const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
+  {
+    v1::master::Call v1Call;
+    v1Call.set_type(v1::master::Call::MARK_AGENT_GONE);
+
+    v1::master::Call::MarkAgentGone* markAgentGone =
+      v1Call.mutable_mark_agent_gone();
+
+    markAgentGone->mutable_agent_id()->CopyFrom(evolve(slaveId));
+
+    Future<process::http::Response> response = process::http::post(
+        master.get()->pid,
+        "api/v1",
+        createBasicAuthHeaders(DEFAULT_CREDENTIAL),
+        serialize(contentType, v1Call),
+        stringify(contentType));
+
+    AWAIT_EXPECT_RESPONSE_STATUS_EQ(process::http::OK().status, response);
+  }
+
+  Future<SlaveRegisteredMessage> slaveRegisteredMessage2 =
+    FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
+
+  slave::Flags slaveFlags2 = CreateSlaveFlags();
+
+  Try<Owned<cluster::Slave>> slave2 = StartSlave(detector.get(), slaveFlags2);
+  ASSERT_SOME(slave2);
+
+  AWAIT_READY(slaveRegisteredMessage2);
+
+  const SlaveID& slaveId2 = slaveRegisteredMessage2->slave_id();
+
+  {
+    v1::master::Call v1Call;
+    v1Call.set_type(v1::master::Call::MARK_AGENT_GONE);
+
+    v1::master::Call::MarkAgentGone* markAgentGone =
+      v1Call.mutable_mark_agent_gone();
+
+    markAgentGone->mutable_agent_id()->CopyFrom(evolve(slaveId2));
+
+    Future<process::http::Response> response = process::http::post(
+        master.get()->pid,
+        "api/v1",
+        createBasicAuthHeaders(DEFAULT_CREDENTIAL),
+        serialize(contentType, v1Call),
+        stringify(contentType));
+
+    AWAIT_EXPECT_RESPONSE_STATUS_EQ(process::http::OK().status, response);
+  }
+
+  // Advance the clock to cause GC to be performed.
+  Clock::pause();
+  Clock::advance(masterFlags.registry_gc_interval);
+  Clock::settle();
+
+  // Start a framework and do explicit reconciliation for a random task ID
+  // on `slave1` and `slave2`. Since, `slave1` has been GC'ed from the list
+  // of gone agents, a 'TASK_UNKNOWN' update should be received for it.
+
+  FrameworkInfo frameworkInfo = DEFAULT_FRAMEWORK_INFO;
+  frameworkInfo.add_capabilities()->set_type(
+      FrameworkInfo::Capability::PARTITION_AWARE);
+
+  MockScheduler sched;
+  MesosSchedulerDriver driver(
+      &sched, frameworkInfo, master.get()->pid, DEFAULT_CREDENTIAL);
+
+  Future<Nothing> registered;
+  EXPECT_CALL(sched, registered(&driver, _, _))
+    .WillOnce(FutureSatisfy(&registered));
+
+  driver.start();
+
+  AWAIT_READY(registered);
+
+  TaskStatus status1;
+  status1.mutable_task_id()->set_value(UUID::random().toString());
+  status1.mutable_slave_id()->CopyFrom(slaveId);
+  status1.set_state(TASK_STAGING); // Dummy value.
+
+  TaskStatus status2;
+  status2.mutable_task_id()->set_value(UUID::random().toString());
+  status2.mutable_slave_id()->CopyFrom(slaveId2);
+  status2.set_state(TASK_STAGING); // Dummy value.
+
+  Future<TaskStatus> reconcileUpdate1;
+  Future<TaskStatus> reconcileUpdate2;
+  EXPECT_CALL(sched, statusUpdate(&driver, _))
+    .WillOnce(FutureArg<1>(&reconcileUpdate1))
+    .WillOnce(FutureArg<1>(&reconcileUpdate2));
+
+  driver.reconcileTasks({status1, status2});
+
+  AWAIT_READY(reconcileUpdate1);
+  AWAIT_READY(reconcileUpdate2);
+
+  ASSERT_EQ(TASK_UNKNOWN, reconcileUpdate1->state());
+  ASSERT_EQ(TASK_GONE_BY_OPERATOR, reconcileUpdate2->state());
+}
+
+
 class MasterTestPrePostReservationRefinement
   : public MasterTest,
     public WithParamInterface<bool> {
@@ -8766,139 +8899,6 @@ TEST_P(MasterTestPrePostReservationRefinement, CreateAndDestroyVolumesV1)
   AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, v1DestroyVolumesResponse);
 }
 
-
-// This test checks that the master correctly garbage collects
-// information about gone agents from the registry using the
-// count-based GC criterion.
-//
-// TODO(andschwa): Enable this when MESOS-7604 is fixed.
-TEST_F_TEMP_DISABLED_ON_WINDOWS(MasterTest, RegistryGcByCount)
-{
-  // Configure GC to only keep the most recent gone agent in the gone list.
-  master::Flags masterFlags = CreateMasterFlags();
-  masterFlags.registry_max_agent_count = 1;
-
-  Try<Owned<cluster::Master>> master = this->StartMaster(masterFlags);
-  ASSERT_SOME(master);
-
-  Owned<MasterDetector> detector = master.get()->createDetector();
-
-  Future<SlaveRegisteredMessage> slaveRegisteredMessage =
-    FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
-
-  slave::Flags slaveFlags = CreateSlaveFlags();
-
-  Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), slaveFlags);
-  ASSERT_SOME(slave);
-
-  // Ensure that the agent is registered successfully with the master
-  // before marking it as gone.
-  AWAIT_READY(slaveRegisteredMessage);
-
-  ContentType contentType = ContentType::PROTOBUF;
-
-  const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
-
-  {
-    v1::master::Call v1Call;
-    v1Call.set_type(v1::master::Call::MARK_AGENT_GONE);
-
-    v1::master::Call::MarkAgentGone* markAgentGone =
-      v1Call.mutable_mark_agent_gone();
-
-    markAgentGone->mutable_agent_id()->CopyFrom(evolve(slaveId));
-
-    Future<process::http::Response> response = process::http::post(
-        master.get()->pid,
-        "api/v1",
-        createBasicAuthHeaders(DEFAULT_CREDENTIAL),
-        serialize(contentType, v1Call),
-        stringify(contentType));
-
-    AWAIT_EXPECT_RESPONSE_STATUS_EQ(process::http::OK().status, response);
-  }
-
-  Future<SlaveRegisteredMessage> slaveRegisteredMessage2 =
-    FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
-
-  slave::Flags slaveFlags2 = CreateSlaveFlags();
-
-  Try<Owned<cluster::Slave>> slave2 = StartSlave(detector.get(), slaveFlags2);
-  ASSERT_SOME(slave2);
-
-  AWAIT_READY(slaveRegisteredMessage2);
-
-  const SlaveID& slaveId2 = slaveRegisteredMessage2->slave_id();
-
-  {
-    v1::master::Call v1Call;
-    v1Call.set_type(v1::master::Call::MARK_AGENT_GONE);
-
-    v1::master::Call::MarkAgentGone* markAgentGone =
-      v1Call.mutable_mark_agent_gone();
-
-    markAgentGone->mutable_agent_id()->CopyFrom(evolve(slaveId2));
-
-    Future<process::http::Response> response = process::http::post(
-        master.get()->pid,
-        "api/v1",
-        createBasicAuthHeaders(DEFAULT_CREDENTIAL),
-        serialize(contentType, v1Call),
-        stringify(contentType));
-
-    AWAIT_EXPECT_RESPONSE_STATUS_EQ(process::http::OK().status, response);
-  }
-
-  // Advance the clock to cause GC to be performed.
-  Clock::pause();
-  Clock::advance(masterFlags.registry_gc_interval);
-  Clock::settle();
-
-  // Start a framework and do explicit reconciliation for a random task ID
-  // on `slave1` and `slave2`. Since, `slave1` has been GC'ed from the list
-  // of gone agents, a 'TASK_UNKNOWN' update should be received for it.
-
-  FrameworkInfo frameworkInfo = DEFAULT_FRAMEWORK_INFO;
-  frameworkInfo.add_capabilities()->set_type(
-      FrameworkInfo::Capability::PARTITION_AWARE);
-
-  MockScheduler sched;
-  MesosSchedulerDriver driver(
-      &sched, frameworkInfo, master.get()->pid, DEFAULT_CREDENTIAL);
-
-  Future<Nothing> registered;
-  EXPECT_CALL(sched, registered(&driver, _, _))
-    .WillOnce(FutureSatisfy(&registered));
-
-  driver.start();
-
-  AWAIT_READY(registered);
-
-  TaskStatus status1;
-  status1.mutable_task_id()->set_value(UUID::random().toString());
-  status1.mutable_slave_id()->CopyFrom(slaveId);
-  status1.set_state(TASK_STAGING); // Dummy value.
-
-  TaskStatus status2;
-  status2.mutable_task_id()->set_value(UUID::random().toString());
-  status2.mutable_slave_id()->CopyFrom(slaveId2);
-  status2.set_state(TASK_STAGING); // Dummy value.
-
-  Future<TaskStatus> reconcileUpdate1;
-  Future<TaskStatus> reconcileUpdate2;
-  EXPECT_CALL(sched, statusUpdate(&driver, _))
-    .WillOnce(FutureArg<1>(&reconcileUpdate1))
-    .WillOnce(FutureArg<1>(&reconcileUpdate2));
-
-  driver.reconcileTasks({status1, status2});
-
-  AWAIT_READY(reconcileUpdate1);
-  AWAIT_READY(reconcileUpdate2);
-
-  ASSERT_EQ(TASK_UNKNOWN, reconcileUpdate1->state());
-  ASSERT_EQ(TASK_GONE_BY_OPERATOR, reconcileUpdate2->state());
-}
-
 } // namespace tests {
 } // namespace internal {
 } // namespace mesos {