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/02/28 18:55:27 UTC
[09/10] mesos git commit: Added support for specifying detector to
the callback interface.
Added support for specifying detector to the callback interface.
This change adds support for passing in a master detector object to the callback
interface. This can be used for testing master failover scenarios similar to how
the driver already does it.
Review: https://reviews.apache.org/r/43846/
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/820a54b8
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/820a54b8
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/820a54b8
Branch: refs/heads/master
Commit: 820a54b8f5fb970463acd34062744a12037eb5bd
Parents: 306cbf5
Author: Anand Mazumdar <ma...@gmail.com>
Authored: Sun Feb 28 09:53:18 2016 -0800
Committer: Vinod Kone <vi...@gmail.com>
Committed: Sun Feb 28 09:53:18 2016 -0800
----------------------------------------------------------------------
include/mesos/v1/scheduler.hpp | 17 +++++++++++++++++
src/scheduler/scheduler.cpp | 35 +++++++++++++++++++++++++----------
src/tests/mesos.hpp | 6 ++++--
3 files changed, 46 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/820a54b8/include/mesos/v1/scheduler.hpp
----------------------------------------------------------------------
diff --git a/include/mesos/v1/scheduler.hpp b/include/mesos/v1/scheduler.hpp
index 5e462c1..a0fb73b 100644
--- a/include/mesos/v1/scheduler.hpp
+++ b/include/mesos/v1/scheduler.hpp
@@ -18,6 +18,7 @@
#define __MESOS_V1_SCHEDULER_HPP__
#include <functional>
+#include <memory>
#include <queue>
#include <string>
@@ -28,6 +29,12 @@
#include <mesos/v1/scheduler/scheduler.hpp>
namespace mesos {
+
+// Forward declaration.
+namespace internal {
+class MasterDetector;
+} // namespace internal {
+
namespace v1 {
namespace scheduler {
@@ -66,6 +73,16 @@ public:
// disconnected).
virtual void send(const Call& call);
+protected:
+ // NOTE: This constructor is used for testing.
+ Mesos(
+ const std::string& master,
+ ContentType contentType,
+ const std::function<void()>& connected,
+ const std::function<void()>& disconnected,
+ const std::function<void(const std::queue<Event>&)>& received,
+ const Option<std::shared_ptr<mesos::internal::MasterDetector>>& detector);
+
private:
MesosProcess* process;
};
http://git-wip-us.apache.org/repos/asf/mesos/blob/820a54b8/src/scheduler/scheduler.cpp
----------------------------------------------------------------------
diff --git a/src/scheduler/scheduler.cpp b/src/scheduler/scheduler.cpp
index 83531c3..7ea1c25 100644
--- a/src/scheduler/scheduler.cpp
+++ b/src/scheduler/scheduler.cpp
@@ -126,7 +126,8 @@ public:
ContentType _contentType,
const lambda::function<void()>& connected,
const lambda::function<void()>& disconnected,
- const lambda::function<void(const queue<Event>&)>& received)
+ const lambda::function<void(const queue<Event>&)>& received,
+ const Option<shared_ptr<MasterDetector>>& _detector)
: ProcessBase(ID::generate("scheduler")),
state(DISCONNECTED),
contentType(_contentType),
@@ -177,15 +178,18 @@ public:
local = true;
}
- Try<MasterDetector*> create =
- MasterDetector::create(pid.isSome() ? string(pid.get()) : master);
+ if (_detector.isNone()) {
+ Try<MasterDetector*> create =
+ MasterDetector::create(pid.isSome() ? string(pid.get()) : master);
- if (create.isError()) {
- EXIT(1) << "Failed to create a master detector: " << create.error();
- }
+ if (create.isError()) {
+ EXIT(1) << "Failed to create a master detector: " << create.error();
+ }
- // Save the detector.
- detector.reset(create.get());
+ detector.reset(create.get());
+ } else {
+ detector = _detector.get();
+ }
}
virtual ~MesosProcess()
@@ -673,19 +677,30 @@ Mesos::Mesos(
ContentType contentType,
const lambda::function<void()>& connected,
const lambda::function<void()>& disconnected,
- const lambda::function<void(const queue<Event>&)>& received)
+ const lambda::function<void(const queue<Event>&)>& received,
+ const Option<shared_ptr<MasterDetector>>& detector)
{
process = new MesosProcess(
master,
contentType,
connected,
disconnected,
- received);
+ received,
+ detector);
spawn(process);
}
+Mesos::Mesos(
+ const string& master,
+ ContentType contentType,
+ const lambda::function<void()>& connected,
+ const lambda::function<void()>& disconnected,
+ const lambda::function<void(const queue<Event>&)>& received)
+ : Mesos(master, contentType, connected, disconnected, received, None()) {}
+
+
Mesos::~Mesos()
{
terminate(process);
http://git-wip-us.apache.org/repos/asf/mesos/blob/820a54b8/src/tests/mesos.hpp
----------------------------------------------------------------------
diff --git a/src/tests/mesos.hpp b/src/tests/mesos.hpp
index e6bd50e..0c55d59 100644
--- a/src/tests/mesos.hpp
+++ b/src/tests/mesos.hpp
@@ -950,7 +950,8 @@ public:
TestMesos(
const std::string& master,
ContentType contentType,
- const std::shared_ptr<MockHTTPScheduler<Mesos, Event>>& _scheduler)
+ const std::shared_ptr<MockHTTPScheduler<Mesos, Event>>& _scheduler,
+ const Option<std::shared_ptr<MasterDetector>>& detector = None())
: Mesos(
master,
contentType,
@@ -962,7 +963,8 @@ public:
this),
lambda::bind(&TestMesos<Mesos, Event>::events,
this,
- lambda::_1)),
+ lambda::_1),
+ detector),
scheduler(_scheduler) {}
protected: