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);
