Added SecretGenerator injection to the MockSlave.

This patch adds an overload of `Slave::initialize` to the
mock slave for the purpose of injecting a secret generator.

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


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

Branch: refs/heads/master
Commit: ca58a52346c72cbfed703f2809894bf373f963e3
Parents: 8f35d52
Author: Greg Mann <[email protected]>
Authored: Sat Mar 25 12:06:02 2017 -0700
Committer: Anand Mazumdar <[email protected]>
Committed: Sat Mar 25 12:06:02 2017 -0700

----------------------------------------------------------------------
 src/tests/mock_slave.cpp | 20 ++++++++++++++++++--
 src/tests/mock_slave.hpp | 11 ++++++++++-
 2 files changed, 28 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/ca58a523/src/tests/mock_slave.cpp
----------------------------------------------------------------------
diff --git a/src/tests/mock_slave.cpp b/src/tests/mock_slave.cpp
index 50c04bf..f145c5c 100644
--- a/src/tests/mock_slave.cpp
+++ b/src/tests/mock_slave.cpp
@@ -18,6 +18,8 @@
 
 #include <gmock/gmock.h>
 
+#include <mesos/authentication/secret_generator.hpp>
+
 #include <mesos/slave/qos_controller.hpp>
 #include <mesos/slave/resource_estimator.hpp>
 
@@ -104,7 +106,8 @@ MockSlave::MockSlave(
     MasterDetector* detector,
     slave::Containerizer* containerizer,
     const Option<mesos::slave::QoSController*>& _qosController,
-    const Option<mesos::Authorizer*>& authorizer)
+    const Option<mesos::Authorizer*>& authorizer,
+    const Option<mesos::SecretGenerator*>& _mockSecretGenerator)
   : slave::Slave(
         process::ID::generate("slave"),
         flags,
@@ -116,7 +119,8 @@ MockSlave::MockSlave(
         &resourceEstimator,
         _qosController.isSome() ? _qosController.get() : &qosController,
         authorizer),
-    files(slave::READONLY_HTTP_AUTHENTICATION_REALM)
+    files(slave::READONLY_HTTP_AUTHENTICATION_REALM),
+    mockSecretGenerator(_mockSecretGenerator)
 {
   // Set up default behaviors, calling the original methods.
   EXPECT_CALL(*this, runTask(_, _, _, _, _))
@@ -144,6 +148,18 @@ MockSlave::~MockSlave()
 }
 
 
+void MockSlave::initialize()
+{
+  Slave::initialize();
+
+  if (mockSecretGenerator.isSome()) {
+    delete secretGenerator;
+    secretGenerator = mockSecretGenerator.get();
+    mockSecretGenerator = None();
+  }
+}
+
+
 void MockSlave::unmocked_runTask(
     const UPID& from,
     const FrameworkInfo& frameworkInfo,

http://git-wip-us.apache.org/repos/asf/mesos/blob/ca58a523/src/tests/mock_slave.hpp
----------------------------------------------------------------------
diff --git a/src/tests/mock_slave.hpp b/src/tests/mock_slave.hpp
index 1acb961..979ac59 100644
--- a/src/tests/mock_slave.hpp
+++ b/src/tests/mock_slave.hpp
@@ -22,6 +22,8 @@
 
 #include <gmock/gmock.h>
 
+#include <mesos/authentication/secret_generator.hpp>
+
 #include <mesos/master/detector.hpp>
 
 #include <mesos/slave/qos_controller.hpp>
@@ -108,10 +110,13 @@ public:
       mesos::master::detector::MasterDetector* detector,
       slave::Containerizer* containerizer,
       const Option<mesos::slave::QoSController*>& qosController = None(),
-      const Option<mesos::Authorizer*>& authorizer = None());
+      const Option<mesos::Authorizer*>& authorizer = None(),
+      const Option<mesos::SecretGenerator*>& mockSecretGenerator = None());
 
   virtual ~MockSlave();
 
+  void initialize();
+
   MOCK_METHOD5(runTask, void(
       const process::UPID& from,
       const FrameworkInfo& frameworkInfo,
@@ -196,6 +201,10 @@ private:
   MockResourceEstimator resourceEstimator;
   MockQoSController qosController;
   slave::StatusUpdateManager* statusUpdateManager;
+
+  // Set to the base class `secretGenerator` in `initialize()`. After
+  // `initialize()` has executed, this will be `None()`.
+  Option<mesos::SecretGenerator*> mockSecretGenerator;
 };
 
 } // namespace tests {

Reply via email to