]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[3543] Final improvements
authorFrancis Dupont <fdupont@isc.org>
Thu, 28 Jun 2018 08:51:58 +0000 (10:51 +0200)
committerFrancis Dupont <fdupont@isc.org>
Thu, 27 Dec 2018 20:00:18 +0000 (21:00 +0100)
src/bin/d2/d2_controller.h
src/bin/d2/tests/d2_command_unittest.cc

index c9138315e738d46872e5aa869f9f3afa9ef608bb..cdb2e26da6202d9258dd70f64b42e60d2faa76eb 100644 (file)
@@ -62,10 +62,6 @@ protected:
     /// @brief Returns version info specific to D2
     virtual std::string getVersionAddendum();
 
-    /// @brief Constructor is declared protected to maintain the integrity of
-    /// the singleton instance.
-    D2Controller();
-
 private:
     /// @brief Creates an instance of the DHCP-DDNS specific application
     /// process.  This method is invoked during the process initialization
@@ -88,8 +84,15 @@ private:
     /// @throw BadValue if the file is empty
     virtual isc::data::ConstElementPtr parseFile(const std::string& file_name);
 
+    /// @brief Constructor is declared protected to maintain the integrity of
+    /// the singleton instance.
+    D2Controller();
+
     /// @brief Flag set to true when command channel is enabled.
     bool has_command_channel_;
+
+    /// To facilitate unit testing.
+    friend class NakedD2Controller;
 };
 
 }; // namespace isc::d2
index 9f9328819a615a8d88deb82d4bec339395fa9b80..6897c6d13c0f7f31837b6f3dd5d7c3b98496b93f 100644 (file)
@@ -33,6 +33,40 @@ using namespace isc::dhcp::test;
 using namespace isc::process;
 using namespace boost::asio;
 
+namespace isc {
+namespace d2 {
+
+class NakedD2Controller;
+typedef boost::shared_ptr<NakedD2Controller> NakedD2ControllerPtr;
+
+class NakedD2Controller : public D2Controller {
+    // "Naked" D2 controller, exposes internal methods.
+public:
+    static DControllerBasePtr& instance() {
+        if (!getController()) {
+            DControllerBasePtr controller_ptr(new NakedD2Controller());
+            setController(controller_ptr);
+        }
+
+        return (getController());
+    }
+
+    virtual ~NakedD2Controller() { }
+
+    using DControllerBase::getIOService;
+    using DControllerBase::initProcess;
+
+    D2ProcessPtr getProcess() {
+        return (boost::dynamic_pointer_cast<D2Process>(DControllerBase::getProcess()));
+    }
+
+private:
+    NakedD2Controller() { }
+};
+
+}; // namespace isc::d2
+}; // namespace isc
+
 namespace {
 
 /// @brief Simple RAII class which stops IO service upon destruction
@@ -61,31 +95,6 @@ private:
 
 };
 
-class NakedD2Controller;
-typedef boost::shared_ptr<NakedD2Controller> NakedD2ControllerPtr;
-
-class NakedD2Controller : public D2Controller {
-    // "Naked" D2 controller, exposes internal methods.
-public:
-    static DControllerBasePtr& instance() {
-        if (!getController()) {
-            DControllerBasePtr controller_ptr(new NakedD2Controller());
-            setController(controller_ptr);
-        }
-
-        return (getController());
-    }
-
-    virtual ~NakedD2Controller() { }
-
-    using DControllerBase::getIOService;
-    using DControllerBase::initProcess;
-    using DControllerBase::getProcess;
-
-private:
-    NakedD2Controller() { }
-};
-
 /// @brief Fixture class intended for testin control channel in D2.
 class CtrlChannelD2Test : public ::testing::Test {
 public:
@@ -97,7 +106,7 @@ public:
     DControllerBasePtr& server_;
 
     /// @brief Cast controller object.
-    NakedD2Controller* get() {
+    NakedD2Controller* d2Controller() {
         return (dynamic_cast<NakedD2Controller*>(server_.get()));
     }
 
@@ -137,7 +146,7 @@ public:
     /// @return Pointer to the server's IO service or null pointer if the
     /// hasn't been created server.
     IOServicePtr getIOService() {
-        return (server_ ? get()->getIOService() : IOServicePtr());
+        return (server_ ? d2Controller()->getIOService() : IOServicePtr());
     }
 
     /// @brief Runs parser in DHCPDDNS mode
@@ -188,8 +197,8 @@ public:
 
         ConstElementPtr config;
         ASSERT_NO_THROW(config = parseDHCPDDNS(config_txt, true));
-        ASSERT_NO_THROW(get()->initProcess());
-        D2ProcessPtr proc = boost::dynamic_pointer_cast<D2Process>(get()->getProcess());
+        ASSERT_NO_THROW(d2Controller()->initProcess());
+        D2ProcessPtr proc = d2Controller()->getProcess();
         ASSERT_TRUE(proc);
         ConstElementPtr answer = proc->configure(config, false);
         ASSERT_TRUE(answer);
@@ -412,8 +421,8 @@ TEST_F(CtrlChannelD2Test, parser) {
 // Test bad syntax rejected by the process.
 TEST_F(CtrlChannelD2Test, configure) {
     ASSERT_TRUE(server_);
-    ASSERT_NO_THROW(get()->initProcess());
-    D2ProcessPtr proc = boost::dynamic_pointer_cast<D2Process>(get()->getProcess());
+    ASSERT_NO_THROW(d2Controller()->initProcess());
+    D2ProcessPtr proc = d2Controller()->getProcess();
     ASSERT_TRUE(proc);
 
     // no type.
@@ -670,8 +679,8 @@ TEST_F(CtrlChannelD2Test, configTest) {
 
     ConstElementPtr config;
     ASSERT_NO_THROW(config = parseDHCPDDNS(os.str(), true));
-    ASSERT_NO_THROW(get()->initProcess());
-    D2ProcessPtr proc = boost::dynamic_pointer_cast<D2Process>(get()->getProcess());
+    ASSERT_NO_THROW(d2Controller()->initProcess());
+    D2ProcessPtr proc = d2Controller()->getProcess();
     ASSERT_TRUE(proc);
     ConstElementPtr answer = proc->configure(config, false);
     ASSERT_TRUE(answer);