You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by bm...@apache.org on 2015/07/17 01:30:50 UTC

[6/6] mesos git commit: Implemented the MESSAGE Event handler in the scheduler driver.

Implemented the MESSAGE Event handler in the scheduler driver.

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


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

Branch: refs/heads/master
Commit: ae6ccdfeb0175391c55e63152438e630f50b22a2
Parents: 0e745fe
Author: Benjamin Mahler <be...@gmail.com>
Authored: Tue Jun 23 17:00:36 2015 -0700
Committer: Benjamin Mahler <be...@gmail.com>
Committed: Thu Jul 16 16:11:44 2015 -0700

----------------------------------------------------------------------
 src/sched/sched.cpp                      | 16 +++++++----
 src/tests/scheduler_event_call_tests.cpp | 40 +++++++++++++++++++++++++++
 2 files changed, 50 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/ae6ccdfe/src/sched/sched.cpp
----------------------------------------------------------------------
diff --git a/src/sched/sched.cpp b/src/sched/sched.cpp
index 3dc8a58..c2dbd7f 100644
--- a/src/sched/sched.cpp
+++ b/src/sched/sched.cpp
@@ -205,7 +205,6 @@ protected:
     install<ExecutorToFrameworkMessage>(
         &SchedulerProcess::frameworkMessage,
         &ExecutorToFrameworkMessage::slave_id,
-        &ExecutorToFrameworkMessage::framework_id,
         &ExecutorToFrameworkMessage::executor_id,
         &ExecutorToFrameworkMessage::data);
 
@@ -487,7 +486,12 @@ protected:
           break;
         }
 
-        drop(event, "Unimplemented");
+        // TODO(bmahler): Rename 'frameworkMessage' to 'message'
+        // to match the Event naming scheme.
+        frameworkMessage(
+            event.message().slave_id(),
+            event.message().executor_id(),
+            event.message().data());
         break;
       }
 
@@ -884,10 +888,10 @@ protected:
     VLOG(1) << "Scheduler::slaveLost took " << stopwatch.elapsed();
   }
 
-  void frameworkMessage(const SlaveID& slaveId,
-                        const FrameworkID& frameworkId,
-                        const ExecutorID& executorId,
-                        const string& data)
+  void frameworkMessage(
+      const SlaveID& slaveId,
+      const ExecutorID& executorId,
+      const string& data)
   {
     if (!running) {
       VLOG(1)

http://git-wip-us.apache.org/repos/asf/mesos/blob/ae6ccdfe/src/tests/scheduler_event_call_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/scheduler_event_call_tests.cpp b/src/tests/scheduler_event_call_tests.cpp
index d352fb4..33e8f0e 100644
--- a/src/tests/scheduler_event_call_tests.cpp
+++ b/src/tests/scheduler_event_call_tests.cpp
@@ -56,6 +56,46 @@ namespace tests {
 class SchedulerDriverEventTest : public MesosTest {};
 
 
+// Ensures that the driver can handle the MESSAGE event.
+TEST_F(SchedulerDriverEventTest, Message)
+{
+  Try<PID<Master>> master = StartMaster();
+  ASSERT_SOME(master);
+
+  MockScheduler sched;
+  MesosSchedulerDriver driver(
+      &sched, DEFAULT_FRAMEWORK_INFO, master.get(), DEFAULT_CREDENTIAL);
+
+  EXPECT_CALL(sched, registered(&driver, _, _));
+
+  Future<Message> frameworkRegisteredMessage =
+    FUTURE_MESSAGE(Eq(FrameworkRegisteredMessage().GetTypeName()), _, _);
+
+  driver.start();
+
+  AWAIT_READY(frameworkRegisteredMessage);
+  UPID frameworkPid = frameworkRegisteredMessage.get().to;
+
+  Event event;
+  event.set_type(Event::MESSAGE);
+  event.mutable_message()->mutable_slave_id()->set_value("S");
+  event.mutable_message()->mutable_executor_id()->set_value("E");
+  event.mutable_message()->set_data("data");
+
+  Future<Nothing> frameworkMessage;
+  EXPECT_CALL(sched, frameworkMessage(
+      &driver,
+      event.message().executor_id(),
+      event.message().slave_id(),
+      event.message().data()))
+    .WillOnce(FutureSatisfy(&frameworkMessage));
+
+  process::post(master.get(), frameworkPid, event);
+
+  AWAIT_READY(frameworkMessage);
+}
+
+
 // Ensures that the driver can handle the ERROR event.
 TEST_F(SchedulerDriverEventTest, Error)
 {