Repository: mesos
Updated Branches:
  refs/heads/master c41f62d7f -> 62086313d


Added 'process::inject::exited()' to simulate exited events in tests.

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


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

Branch: refs/heads/master
Commit: 62086313d49c081afeb89dc3e289317dd9ccc11c
Parents: c41f62d
Author: Vinod Kone <[email protected]>
Authored: Fri Apr 18 15:31:20 2014 -0700
Committer: Vinod Kone <[email protected]>
Committed: Wed Aug 6 18:30:33 2014 -0700

----------------------------------------------------------------------
 3rdparty/libprocess/include/process/process.hpp |  8 +++++++
 3rdparty/libprocess/src/process.cpp             | 14 ++++++++++++
 3rdparty/libprocess/src/tests/process_tests.cpp | 24 ++++++++++++++++++++
 3 files changed, 46 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/62086313/3rdparty/libprocess/include/process/process.hpp
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/include/process/process.hpp 
b/3rdparty/libprocess/include/process/process.hpp
index 3c31dfb..270ca28 100644
--- a/3rdparty/libprocess/include/process/process.hpp
+++ b/3rdparty/libprocess/include/process/process.hpp
@@ -396,6 +396,14 @@ extern ThreadLocal<ProcessBase>* _process_;
 
 #define __process__ (*_process_)
 
+// NOTE: Methods in this namespace should only be used in tests to
+// inject arbitrary events.
+namespace inject {
+// Simulates disconnection of the link between 'from' and 'to' by
+// sending an 'ExitedEvent' to 'to'.
+bool exited(const UPID& from, const UPID& to);
+} // namespace inject {
+
 } // namespace process {
 
 #endif // __PROCESS_PROCESS_HPP__

http://git-wip-us.apache.org/repos/asf/mesos/blob/62086313/3rdparty/libprocess/src/process.cpp
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/src/process.cpp 
b/3rdparty/libprocess/src/process.cpp
index d981551..14cf317 100644
--- a/3rdparty/libprocess/src/process.cpp
+++ b/3rdparty/libprocess/src/process.cpp
@@ -4186,6 +4186,20 @@ Future<Nothing> redirect(int from, Option<int> to, 
size_t chunk)
 
 } // namespace io {
 
+
+namespace inject {
+
+bool exited(const UPID& from, const UPID& to)
+{
+  process::initialize();
+
+  ExitedEvent* event = new ExitedEvent(from);
+  return process_manager->deliver(to, event, __process__);
+}
+
+} // namespace inject {
+
+
 namespace internal {
 
 void dispatch(

http://git-wip-us.apache.org/repos/asf/mesos/blob/62086313/3rdparty/libprocess/src/tests/process_tests.cpp
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/src/tests/process_tests.cpp 
b/3rdparty/libprocess/src/tests/process_tests.cpp
index ebce48c..b985fb7 100644
--- a/3rdparty/libprocess/src/tests/process_tests.cpp
+++ b/3rdparty/libprocess/src/tests/process_tests.cpp
@@ -1052,6 +1052,30 @@ TEST(Process, exited)
 }
 
 
+TEST(Process, injectExited)
+{
+  ASSERT_TRUE(GTEST_IS_THREADSAFE);
+
+  UPID pid = spawn(new ProcessBase(), true);
+
+  ExitedProcess process(pid);
+
+  volatile bool exitedCalled = false;
+
+  EXPECT_CALL(process, exited(pid))
+    .WillOnce(Assign(&exitedCalled, true));
+
+  spawn(process);
+
+  inject::exited(pid, process.self());
+
+  while (!exitedCalled);
+
+  terminate(process);
+  wait(process);
+}
+
+
 TEST(Process, select)
 {
   ASSERT_TRUE(GTEST_IS_THREADSAFE);

Reply via email to