summaryrefslogtreecommitdiffstats
path: root/src/lib/database
diff options
context:
space:
mode:
authorFrancis Dupont <fdupont@isc.org>2019-07-03 09:19:20 +0200
committerFrancis Dupont <fdupont@isc.org>2019-07-04 01:10:51 +0200
commita538049ac3dc96732ee3871eed773faf81b5bc9a (patch)
tree5a604f73b262fb8dc0e9439eab5a152e4ea01ff4 /src/lib/database
parent[709-cb_cmds-add-support-for-commands-to-manage-the-servers] Improved server ... (diff)
downloadkea-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.cc10
-rw-r--r--src/lib/database/server.h8
-rw-r--r--src/lib/database/tests/server_unittest.cc18
-rw-r--r--src/lib/database/testutils/schema.h2
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();
};