You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by vi...@apache.org on 2016/06/17 17:41:58 UTC

[6/9] mesos git commit: Added test case `MasterAPITest.GetMaintenanceStatus`.

Added test case `MasterAPITest.GetMaintenanceStatus`.

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


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

Branch: refs/heads/master
Commit: 0102f6ef9e6be52cbb061e0ff671fd2e8be1de0d
Parents: 87c079e
Author: haosdent huang <ha...@gmail.com>
Authored: Fri Jun 17 10:40:50 2016 -0700
Committer: Vinod Kone <vi...@gmail.com>
Committed: Fri Jun 17 10:40:50 2016 -0700

----------------------------------------------------------------------
 src/tests/api_tests.cpp | 65 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 65 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/0102f6ef/src/tests/api_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/api_tests.cpp b/src/tests/api_tests.cpp
index de7d1cf..2f269ec 100644
--- a/src/tests/api_tests.cpp
+++ b/src/tests/api_tests.cpp
@@ -389,6 +389,71 @@ TEST_P(MasterAPITest, UpdateAndGetMaintenanceSchedule)
 }
 
 
+// Test queries for machine maintenance status.
+TEST_P(MasterAPITest, GetMaintenanceStatus)
+{
+  // Set up a master.
+  Try<Owned<cluster::Master>> master = this->StartMaster();
+  ASSERT_SOME(master);
+
+  ContentType contentType = GetParam();
+  process::http::Headers headers = createBasicAuthHeaders(DEFAULT_CREDENTIAL);
+  headers["Accept"] = stringify(contentType);
+
+  // Generate `MachineID`s that can be used in this test.
+  MachineID machine1;
+  MachineID machine2;
+  machine1.set_hostname("Machine1");
+  machine2.set_ip("0.0.0.2");
+
+  // Try to schedule maintenance on an unscheduled machine.
+  maintenance::Schedule schedule = createSchedule(
+      {createWindow({machine1, machine2}, createUnavailability(Clock::now()))});
+  v1::maintenance::Schedule v1Schedule =
+    evolve<v1::maintenance::Schedule>(schedule);
+
+  v1::master::Call v1UpdateScheduleCall;
+  v1UpdateScheduleCall.set_type(v1::master::Call::UPDATE_MAINTENANCE_SCHEDULE);
+  v1::master::Call_UpdateMaintenanceSchedule* maintenanceSchedule =
+    v1UpdateScheduleCall.mutable_update_maintenance_schedule();
+  maintenanceSchedule->mutable_schedule()->CopyFrom(v1Schedule);
+
+  Future<Nothing> v1UpdateScheduleResponse = process::http::post(
+      master.get()->pid,
+      "api/v1",
+      headers,
+      serialize(contentType, v1UpdateScheduleCall),
+      stringify(contentType))
+    .then([contentType](const Response& response) -> Future<Nothing> {
+      if (response.status != OK().status) {
+        return Failure("Unexpected response status " + response.status);
+      }
+      return Nothing();
+    });
+
+  AWAIT_READY(v1UpdateScheduleResponse);
+
+  // Query maintenance status.
+  v1::master::Call v1GetStatusCall;
+  v1GetStatusCall.set_type(v1::master::Call::GET_MAINTENANCE_STATUS);
+
+  Future<v1::master::Response> v1GetStatusResponse =
+    post(master.get()->pid, v1GetStatusCall, contentType);
+
+  AWAIT_READY(v1GetStatusResponse);
+  ASSERT_TRUE(v1GetStatusResponse.get().IsInitialized());
+  ASSERT_EQ(
+      v1::master::Response::GET_MAINTENANCE_STATUS,
+      v1GetStatusResponse.get().type());
+
+  // Verify maintenance status matches the expectation.
+  v1::maintenance::ClusterStatus status =
+    v1GetStatusResponse.get().get_maintenance_status().status();
+  ASSERT_EQ(2, status.draining_machines().size());
+  ASSERT_EQ(0, status.down_machines().size());
+}
+
+
 class AgentAPITest
   : public MesosTest,
     public WithParamInterface<ContentType>