You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by ab...@apache.org on 2019/09/24 12:26:39 UTC
[mesos] 01/02: Added `futureTracker` to the `SlaveOptions` in tests.
This is an automated email from the ASF dual-hosted git repository.
abudnik pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mesos.git
commit dee4b849c8179ea46947c8ea4dd031f6eb37b659
Author: Andrei Budnik <ab...@apache.org>
AuthorDate: Fri Sep 6 17:01:56 2019 +0200
Added `futureTracker` to the `SlaveOptions` in tests.
`PendingFutureTracker` is shared across both Mesos containerizer and
the agent, so we need to add an option to be able to start a slave in
tests with an instance of the `futureTrack` as a parameter.
Review: https://reviews.apache.org/r/71454
---
src/tests/cluster.cpp | 20 +++++++++++++-------
src/tests/cluster.hpp | 5 +++++
src/tests/mesos.cpp | 1 +
src/tests/mesos.hpp | 8 ++++++++
4 files changed, 27 insertions(+), 7 deletions(-)
diff --git a/src/tests/cluster.cpp b/src/tests/cluster.cpp
index 1646516..f7bc882 100644
--- a/src/tests/cluster.cpp
+++ b/src/tests/cluster.cpp
@@ -416,6 +416,7 @@ Try<process::Owned<Slave>> Slave::create(
const Option<mesos::slave::QoSController*>& qosController,
const Option<mesos::SecretGenerator*>& secretGenerator,
const Option<Authorizer*>& providedAuthorizer,
+ const Option<PendingFutureTracker*>& futureTracker,
bool mock)
{
process::Owned<Slave> slave(new Slave());
@@ -447,10 +448,15 @@ Try<process::Owned<Slave>> Slave::create(
}
#endif // __WINDOWS__
- Try<PendingFutureTracker*> futureTracker = PendingFutureTracker::create();
- if (futureTracker.isError()) {
- return Error(
- "Failed to create pending future tracker: " + futureTracker.error());
+ // If the future tracker is not provided, create a default one.
+ if (futureTracker.isNone()) {
+ Try<PendingFutureTracker*> _futureTracker = PendingFutureTracker::create();
+ if (_futureTracker.isError()) {
+ return Error(
+ "Failed to create pending future tracker: " + _futureTracker.error());
+ }
+
+ slave->futureTracker.reset(_futureTracker.get());
}
// If the containerizer is not provided, create a default one.
@@ -468,7 +474,7 @@ Try<process::Owned<Slave>> Slave::create(
gc.getOrElse(slave->gc.get()),
nullptr,
volumeGidManager,
- futureTracker.get());
+ futureTracker.getOrElse(slave->futureTracker.get()));
if (_containerizer.isError()) {
return Error("Failed to create containerizer: " + _containerizer.error());
@@ -621,7 +627,7 @@ Try<process::Owned<Slave>> Slave::create(
qosController.getOrElse(slave->qosController.get()),
secretGenerator.getOrElse(slave->secretGenerator.get()),
volumeGidManager,
- futureTracker.get(),
+ futureTracker.getOrElse(slave->futureTracker.get()),
authorizer));
} else {
slave->slave.reset(new slave::Slave(
@@ -636,7 +642,7 @@ Try<process::Owned<Slave>> Slave::create(
qosController.getOrElse(slave->qosController.get()),
secretGenerator.getOrElse(slave->secretGenerator.get()),
volumeGidManager,
- futureTracker.get(),
+ futureTracker.getOrElse(slave->futureTracker.get()),
authorizer));
}
diff --git a/src/tests/cluster.hpp b/src/tests/cluster.hpp
index c04ee14..415a60f 100644
--- a/src/tests/cluster.hpp
+++ b/src/tests/cluster.hpp
@@ -170,6 +170,7 @@ public:
const Option<mesos::slave::QoSController*>& qosController = None(),
const Option<mesos::SecretGenerator*>& secretGenerator = None(),
const Option<Authorizer*>& authorizer = None(),
+ const Option<PendingFutureTracker*>& futureTracker = None(),
bool mock = false);
~Slave();
@@ -227,6 +228,10 @@ private:
// of who created it).
slave::Containerizer* containerizer = nullptr;
+ // Pending future tracker must be destroyed last since there may be
+ // pending requests related to the dependant objects declared below.
+ process::Owned<PendingFutureTracker> futureTracker;
+
// Dependencies that are created by the factory method.
process::Owned<Authorizer> authorizer;
process::Owned<slave::Containerizer> ownedContainerizer;
diff --git a/src/tests/mesos.cpp b/src/tests/mesos.cpp
index e77db22..664c302 100644
--- a/src/tests/mesos.cpp
+++ b/src/tests/mesos.cpp
@@ -347,6 +347,7 @@ Try<Owned<cluster::Slave>> MesosTest::StartSlave(const SlaveOptions& options)
options.qosController,
options.secretGenerator,
options.authorizer,
+ options.futureTracker,
options.mock);
if (slave.isSome() && !options.mock) {
diff --git a/src/tests/mesos.hpp b/src/tests/mesos.hpp
index ecde518..73b1866 100644
--- a/src/tests/mesos.hpp
+++ b/src/tests/mesos.hpp
@@ -186,6 +186,13 @@ struct SlaveOptions
return *this;
}
+ SlaveOptions& withFutureTracker(
+ const Option<PendingFutureTracker*>& futureTracker)
+ {
+ this->futureTracker = futureTracker;
+ return *this;
+ }
+
mesos::master::detector::MasterDetector* detector;
bool mock;
Option<slave::Flags> flags;
@@ -197,6 +204,7 @@ struct SlaveOptions
Option<mesos::slave::QoSController*> qosController;
Option<mesos::SecretGenerator*> secretGenerator;
Option<Authorizer*> authorizer;
+ Option<PendingFutureTracker*> futureTracker;
};