From 78a457e633efd7bec8132ccda245365280c2c9f3 Mon Sep 17 00:00:00 2001 From: Marcin Siodelski Date: Tue, 16 Oct 2018 16:39:50 +0200 Subject: [PATCH] [#93,!63] Implemented getHost() and getPort() MySQL backend functions. --- src/hooks/dhcp/mysql_cb/mysql_cb_dhcp4.cc | 6 ++-- src/hooks/dhcp/mysql_cb/mysql_cb_impl.cc | 29 ++++++++++++++++ src/hooks/dhcp/mysql_cb/mysql_cb_impl.h | 21 ++++++++++++ .../mysql_cb/tests/mysql_cb_dhcp4_unittest.cc | 33 +++++++++++++++++++ 4 files changed, 86 insertions(+), 3 deletions(-) diff --git a/src/hooks/dhcp/mysql_cb/mysql_cb_dhcp4.cc b/src/hooks/dhcp/mysql_cb/mysql_cb_dhcp4.cc index eae9f42c85..6e6d4e05c2 100644 --- a/src/hooks/dhcp/mysql_cb/mysql_cb_dhcp4.cc +++ b/src/hooks/dhcp/mysql_cb/mysql_cb_dhcp4.cc @@ -2468,17 +2468,17 @@ MySqlConfigBackendDHCPv4::deleteAllGlobalParameters4(const ServerSelector& serve std::string MySqlConfigBackendDHCPv4::getType() const { - return ("mysql"); + return (impl_->getType()); } std::string MySqlConfigBackendDHCPv4::getHost() const { - return (""); + return (impl_->getHost()); } uint16_t MySqlConfigBackendDHCPv4::getPort() const { - return (0); + return (impl_->getPort()); } bool diff --git a/src/hooks/dhcp/mysql_cb/mysql_cb_impl.cc b/src/hooks/dhcp/mysql_cb/mysql_cb_impl.cc index b7a4681823..6c446fd25e 100644 --- a/src/hooks/dhcp/mysql_cb/mysql_cb_impl.cc +++ b/src/hooks/dhcp/mysql_cb/mysql_cb_impl.cc @@ -341,6 +341,35 @@ MySqlConfigBackendImpl::createOptionValueBinding(const OptionDescriptorPtr& opti return (MySqlBinding::createNull()); } +std::string +MySqlConfigBackendImpl::getType() const { + return ("mysql"); +} + +std::string +MySqlConfigBackendImpl::getHost() const { + std::string host = "localhost"; + try { + host = conn_.getParameter("host"); + } catch (...) { + // No host parameter. Return localhost as a default. + } + return (host); +} + +uint16_t +MySqlConfigBackendImpl::getPort() const { + try { + std::string sport = conn_.getParameter("port"); + return (boost::lexical_cast(sport)); + + } catch (...) { + // No port parameter or parameter invalid. + } + return (0); +} + + } // end of namespace isc::dhcp } // end of namespace isc diff --git a/src/hooks/dhcp/mysql_cb/mysql_cb_impl.h b/src/hooks/dhcp/mysql_cb/mysql_cb_impl.h index b7b0fe85b4..235e6b18c9 100644 --- a/src/hooks/dhcp/mysql_cb/mysql_cb_impl.h +++ b/src/hooks/dhcp/mysql_cb/mysql_cb_impl.h @@ -248,6 +248,27 @@ public: db::MySqlBinding::createNull()); } + /// @brief Returns backend type in the textual format. + /// + /// @return "mysql". + std::string getType() const; + + /// @brief Returns backend host. + /// + /// This is used by the @c BaseConfigBackendPool to select backend + /// when @c BackendSelector is specified. + /// + /// @return host on which the database is located. + std::string getHost() const; + + /// @brief Returns backend port number. + /// + /// This is used by the @c BaseConfigBackendPool to select backend + /// when @c BackendSelector is specified. + /// + /// @return Port number on which database service is available. + uint16_t getPort() const; + /// @brief Creates input binding for option value parameter. /// /// @param option Option descriptor holding option for which binding is to diff --git a/src/hooks/dhcp/mysql_cb/tests/mysql_cb_dhcp4_unittest.cc b/src/hooks/dhcp/mysql_cb/tests/mysql_cb_dhcp4_unittest.cc index 86e8c3bfc3..2ba27b0da9 100644 --- a/src/hooks/dhcp/mysql_cb/tests/mysql_cb_dhcp4_unittest.cc +++ b/src/hooks/dhcp/mysql_cb/tests/mysql_cb_dhcp4_unittest.cc @@ -6,6 +6,7 @@ #include #include +#include #include #include #include @@ -302,6 +303,38 @@ public: boost::shared_ptr cbptr_; }; +// This test verifies that the expected backend type is returned. +TEST_F(MySqlConfigBackendDHCPv4Test, getType) { + DatabaseConnection::ParameterMap params; + params["name"] = "keatest"; + params["password"] = "keatest"; + params["user"] = "keatest"; + ASSERT_NO_THROW(cbptr_.reset(new MySqlConfigBackendDHCPv4(params))); + EXPECT_EQ("mysql", cbptr_->getType()); +} + +// This test verifies that by default localhost is returned as MySQL connection +// host. +TEST_F(MySqlConfigBackendDHCPv4Test, getHost) { + DatabaseConnection::ParameterMap params; + params["name"] = "keatest"; + params["password"] = "keatest"; + params["user"] = "keatest"; + ASSERT_NO_THROW(cbptr_.reset(new MySqlConfigBackendDHCPv4(params))); + EXPECT_EQ("localhost", cbptr_->getHost()); +} + +// This test verifies that by default port of 0 is returned as MySQL connection +// port. +TEST_F(MySqlConfigBackendDHCPv4Test, getPort) { + DatabaseConnection::ParameterMap params; + params["name"] = "keatest"; + params["password"] = "keatest"; + params["user"] = "keatest"; + ASSERT_NO_THROW(cbptr_.reset(new MySqlConfigBackendDHCPv4(params))); + EXPECT_EQ(0, cbptr_->getPort()); +} + // This test verifies that the global parameter can be added, updated and // deleted. TEST_F(MySqlConfigBackendDHCPv4Test, createUpdateDeleteGlobalParameter4) { -- 2.47.2