diff options
author | Francis Dupont <fdupont@isc.org> | 2019-07-03 09:19:20 +0200 |
---|---|---|
committer | Francis Dupont <fdupont@isc.org> | 2019-07-04 01:10:51 +0200 |
commit | a538049ac3dc96732ee3871eed773faf81b5bc9a (patch) | |
tree | 5a604f73b262fb8dc0e9439eab5a152e4ea01ff4 /src/lib/database | |
parent | [709-cb_cmds-add-support-for-commands-to-manage-the-servers] Improved server ... (diff) | |
download | kea-a538049ac3dc96732ee3871eed773faf81b5bc9a.tar.xz kea-a538049ac3dc96732ee3871eed773faf81b5bc9a.zip |
[709-cb_cmds-add-support-for-commands-to-manage-the-servers] Added a toElement method to Server
Diffstat (limited to 'src/lib/database')
-rw-r--r-- | src/lib/database/server.cc | 10 | ||||
-rw-r--r-- | src/lib/database/server.h | 8 | ||||
-rw-r--r-- | src/lib/database/tests/server_unittest.cc | 18 | ||||
-rw-r--r-- | src/lib/database/testutils/schema.h | 2 |
4 files changed, 36 insertions, 2 deletions
diff --git a/src/lib/database/server.cc b/src/lib/database/server.cc index 48cba31359..e023563529 100644 --- a/src/lib/database/server.cc +++ b/src/lib/database/server.cc @@ -28,5 +28,15 @@ Server::create(const ServerTag& tag, const std::string& description) { return (boost::make_shared<Server>(tag, description)); } +ElementPtr +Server::toElement() const { + ElementPtr result = Element::createMap(); + + result->set("server-tag", Element::create(getServerTagAsText())); + result->set("description", Element::create(getDescription())); + + return (result); +} + } // end of namespace isc::db } // end of namespace isc diff --git a/src/lib/database/server.h b/src/lib/database/server.h index e971ba3780..8ca8a436fc 100644 --- a/src/lib/database/server.h +++ b/src/lib/database/server.h @@ -8,6 +8,7 @@ #define DB_SERVER_H #include <cc/base_stamped_element.h> +#include <cc/cfg_to_element.h> #include <cc/server_tag.h> #include <boost/shared_ptr.hpp> #include <string> @@ -28,7 +29,7 @@ typedef boost::shared_ptr<Server> ServerPtr; /// provided by the administrator and the metadata. /// /// This class extends the base class with the server description field. -class Server : public data::BaseStampedElement { +class Server : public data::BaseStampedElement, public data::CfgToElement { public: /// @brief Constructor. @@ -69,6 +70,11 @@ public: return (description_); } + /// @brief Unparses server object. + /// + /// @return A pointer to unparsed server configuration. + virtual data::ElementPtr toElement() const; + private: /// @brief Server tag. diff --git a/src/lib/database/tests/server_unittest.cc b/src/lib/database/tests/server_unittest.cc index 4a650f81d8..8cc0ceb5a7 100644 --- a/src/lib/database/tests/server_unittest.cc +++ b/src/lib/database/tests/server_unittest.cc @@ -6,6 +6,7 @@ #include <config.h> #include <database/server_collection.h> +#include <testutils/test_to_element.h> #include <exceptions/exceptions.h> #include <gtest/gtest.h> #include <string> @@ -34,6 +35,23 @@ TEST(ServerTest, tooLongDescription) { BadValue); } +// Tests that toElement method works well. +TEST(ServerTest, toEDlement) { + ServerPtr server1 = Server::create(ServerTag("foo"), "a server"); + std::string expected1 = "{" + "\"server-tag\": \"foo\"," + "\"description\": \"a server\"" + " }"; + isc::test::runToElementTest<Server>(expected1, *server1); + + ServerPtr server2 =Server::create(ServerTag("bar")); + std::string expected2= "{" + "\"server-tag\": \"bar\"," + "\"description\": \"\"" + " }"; + isc::test::runToElementTest<Server>(expected2, *server2); +} + // Tests that it is possible to fetch server by tag fromn the collection. TEST(ServerFetcherTest, getByTag) { ServerCollection servers; diff --git a/src/lib/database/testutils/schema.h b/src/lib/database/testutils/schema.h index df95792ab2..1b34f38255 100644 --- a/src/lib/database/testutils/schema.h +++ b/src/lib/database/testutils/schema.h @@ -49,7 +49,7 @@ std::string connectionString(const char* type, const char* name = NULL, /// @brief Determines if wiping only the data between tests is enabled /// /// @return true if the environment variable, KEA_TEST_DB_WIPE_DATA_ONLY is -/// defined as "true" or if it is not present. +/// defined as "true" or if it is not present. bool softWipeEnabled(); }; |