From: Francis Dupont Date: Thu, 28 Jun 2018 08:51:58 +0000 (+0200) Subject: [3543] Final improvements X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=33a2094eb2f45f36e5aa71255f37b16d2730d65b;p=thirdparty%2Fkea.git [3543] Final improvements --- diff --git a/src/bin/d2/d2_controller.h b/src/bin/d2/d2_controller.h index c9138315e7..cdb2e26da6 100644 --- a/src/bin/d2/d2_controller.h +++ b/src/bin/d2/d2_controller.h @@ -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 diff --git a/src/bin/d2/tests/d2_command_unittest.cc b/src/bin/d2/tests/d2_command_unittest.cc index 9f9328819a..6897c6d13c 100644 --- a/src/bin/d2/tests/d2_command_unittest.cc +++ b/src/bin/d2/tests/d2_command_unittest.cc @@ -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 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(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 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(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(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(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(get()->getProcess()); + ASSERT_NO_THROW(d2Controller()->initProcess()); + D2ProcessPtr proc = d2Controller()->getProcess(); ASSERT_TRUE(proc); ConstElementPtr answer = proc->configure(config, false); ASSERT_TRUE(answer);