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

mesos git commit: Fixed JSON output error TaskInfo executor_id in slave/http.cpp.

Repository: mesos
Updated Branches:
  refs/heads/master 8976e834e -> 89dbd3d22


Fixed JSON output error TaskInfo executor_id in slave/http.cpp.

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


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

Branch: refs/heads/master
Commit: 89dbd3d226bfacbbc54d440176b23662e1970e05
Parents: 8976e83
Author: Brendan Chang <bs...@mesosphere.io>
Authored: Sat Jun 20 08:48:18 2015 -0700
Committer: Benjamin Hindman <be...@gmail.com>
Committed: Sat Jun 20 08:48:59 2015 -0700

----------------------------------------------------------------------
 src/slave/http.cpp        |  2 +-
 src/tests/slave_tests.cpp | 73 +++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 73 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/89dbd3d2/src/slave/http.cpp
----------------------------------------------------------------------
diff --git a/src/slave/http.cpp b/src/slave/http.cpp
index 6245710..b0fe5f5 100644
--- a/src/slave/http.cpp
+++ b/src/slave/http.cpp
@@ -91,7 +91,7 @@ JSON::Object model(const TaskInfo& task)
     object.values["command"] = model(task.command());
   }
   if (task.has_executor()) {
-    object.values["executor_id"] = model(task.executor());
+    object.values["executor_id"] = task.executor().executor_id().value();
   }
 
   return object;

http://git-wip-us.apache.org/repos/asf/mesos/blob/89dbd3d2/src/tests/slave_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/slave_tests.cpp b/src/tests/slave_tests.cpp
index 8709874..5030198 100644
--- a/src/tests/slave_tests.cpp
+++ b/src/tests/slave_tests.cpp
@@ -938,10 +938,14 @@ TEST_F(SlaveTest, StateEndpoint)
   flags.resources = "cpus:4;mem:2048;disk:512;ports:[33000-34000]";
   flags.attributes = "rack:abc;host:myhost";
 
+  MockExecutor exec(DEFAULT_EXECUTOR_ID);
+
+  TestContainerizer containerizer(&exec);
+
   // Capture the start time deterministically.
   Clock::pause();
 
-  Try<PID<Slave>> slave = StartSlave(flags);
+  Try<PID<Slave>> slave = StartSlave(&containerizer, flags);
   ASSERT_SOME(slave);
 
   Future<process::http::Response> response =
@@ -1015,6 +1019,73 @@ TEST_F(SlaveTest, StateEndpoint)
   ASSERT_TRUE(state.values["flags"].is<JSON::Object>());
   EXPECT_FALSE(state.values["flags"].as<JSON::Object>().values.empty());
 
+  MockScheduler sched;
+  MesosSchedulerDriver driver(
+      &sched, DEFAULT_FRAMEWORK_INFO, master.get(), DEFAULT_CREDENTIAL);
+
+  EXPECT_CALL(sched, registered(&driver, _, _))
+    .Times(1);
+
+  Future<vector<Offer>> offers;
+  EXPECT_CALL(sched, resourceOffers(&driver, _))
+    .WillOnce(FutureArg<1>(&offers))
+    .WillRepeatedly(Return()); // Ignore subsequent offers.
+
+  driver.start();
+
+  AWAIT_READY(offers);
+  EXPECT_NE(0u, offers.get().size());
+
+  TaskID taskId;
+  taskId.set_value("1");
+
+  TaskInfo task;
+  task.set_name("");
+  task.mutable_task_id()->MergeFrom(taskId);
+  task.mutable_slave_id()->MergeFrom(offers.get()[0].slave_id());
+  task.mutable_resources()->MergeFrom(offers.get()[0].resources());
+  task.mutable_executor()->MergeFrom(DEFAULT_EXECUTOR_INFO);
+
+  const vector<TaskInfo> tasks = {task};
+
+  EXPECT_CALL(exec, registered(_, _, _, _))
+    .Times(1);
+
+  EXPECT_CALL(exec, launchTask(_, _))
+    .WillOnce(SendStatusUpdateFromTask(TASK_RUNNING));
+
+  Future<TaskStatus> status;
+  EXPECT_CALL(sched, statusUpdate(&driver, _))
+    .WillOnce(FutureArg<1>(&status));
+
+  driver.launchTasks(offers.get()[0].id(), tasks);
+
+  AWAIT_READY(status);
+  EXPECT_EQ(TASK_RUNNING, status.get().state());
+
+  response = http::get(slave.get(), "state.json");
+
+  AWAIT_EXPECT_RESPONSE_STATUS_EQ(http::OK().status, response);
+
+  EXPECT_SOME_EQ(
+      "application/json",
+      response.get().headers.get("Content-Type"));
+
+  parse = JSON::parse<JSON::Object>(response.get().body);
+  ASSERT_SOME(parse);
+
+  // Check that executor_id is in the right format.
+  ASSERT_SOME_EQ(
+      "default",
+      parse.get().find<JSON::String>(
+          "frameworks[0].executors[0].tasks[0].executor_id"));
+
+  EXPECT_CALL(exec, shutdown(_))
+    .Times(AtMost(1));
+
+  driver.stop();
+  driver.join();
+
   Shutdown();
 }