From: Francis Dupont Date: Wed, 3 Jul 2019 07:19:20 +0000 (+0200) Subject: [709-cb_cmds-add-support-for-commands-to-manage-the-servers] Added a toElement method... X-Git-Tag: Kea-1.6.0-beta2~134 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a538049ac3dc96732ee3871eed773faf81b5bc9a;p=thirdparty%2Fkea.git [709-cb_cmds-add-support-for-commands-to-manage-the-servers] Added a toElement method to Server --- 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(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 +#include #include #include #include @@ -28,7 +29,7 @@ typedef boost::shared_ptr 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 #include +#include #include #include #include @@ -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(expected1, *server1); + + ServerPtr server2 =Server::create(ServerTag("bar")); + std::string expected2= "{" + "\"server-tag\": \"bar\"," + "\"description\": \"\"" + " }"; + isc::test::runToElementTest(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(); };