]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[65-libyang-control-socket_rebased] Fixed rebase conflicts
authorFrancis Dupont <fdupont@isc.org>
Tue, 25 Sep 2018 15:17:26 +0000 (17:17 +0200)
committerFrancis Dupont <fdupont@isc.org>
Tue, 25 Sep 2018 15:17:26 +0000 (17:17 +0200)
1  2 
src/lib/yang/Makefile.am
src/lib/yang/tests/Makefile.am
src/lib/yang/tests/translator_control_socket_unittests.cc

index 4761a7127d49bbb666a321eba6f92a21981fab43,f29158cc9dcf766cee2a265f17feda5a0a8ee6db..c6e463102de4dac1b36de4f5671e588ae26f58dd
@@@ -5,11 -5,10 +5,13 @@@ AM_CPPFLAGS += $(BOOST_INCLUDES) $(SYSR
  AM_CXXFLAGS = $(KEA_CXXFLAGS)
  
  lib_LTLIBRARIES = libkea-yang.la
 -libkea_yang_la_SOURCES = sysrepo_error.h
 +libkea_yang_la_SOURCES  = adaptor.cc adaptor.h
 +libkea_yang_la_SOURCES += sysrepo_error.h
  libkea_yang_la_SOURCES += translator.cc translator.h
+ libkea_yang_la_SOURCES += translator_control_socket.cc
+ libkea_yang_la_SOURCES += translator_control_socket.h
 +libkea_yang_la_SOURCES += translator_option_data.cc
 +libkea_yang_la_SOURCES += translator_option_data.h
  
  libkea_yang_la_LIBADD =  $(top_builddir)/src/lib/asiolink/libkea-asiolink.la
  libkea_yang_la_LIBADD += $(top_builddir)/src/lib/cc/libkea-cc.la
@@@ -24,26 -23,10 +26,27 @@@ libkea_yang_la_LDFLAGS = -no-undefined 
  # Specify the headers for copying into the installation directory tree.
  libkea_yang_includedir = $(pkgincludedir)/yang
  libkea_yang_include_HEADERS = \
 +      adaptor.h \
        sysrepo_error.h \
        translator.h \
 -      translator_control_socket.h
++      translator_control_socket.h \
 +      translator_option_data.h
  
  EXTRA_DIST = yang.dox
 +# Distribute yang models.
 +EXTRA_DIST += models/ietf-dhcpv6-client.yang
 +EXTRA_DIST += models/ietf-dhcpv6-options.yang
 +EXTRA_DIST += models/ietf-dhcpv6-relay.yang
 +EXTRA_DIST += models/ietf-dhcpv6-server.yang
 +EXTRA_DIST += models/ietf-dhcpv6-types.yang
 +EXTRA_DIST += models/ietf-inet-types.yang
 +EXTRA_DIST += models/ietf-yang-types.yang
 +EXTRA_DIST += models/kea-ctrl-agent.yang
 +EXTRA_DIST += models/kea-dhcp-ddns.yang
 +EXTRA_DIST += models/kea-dhcp-types.yang
 +EXTRA_DIST += models/kea-dhcp4-server.yang
 +EXTRA_DIST += models/kea-dhcp6-server.yang
 +EXTRA_DIST += models/kea-logging.yang
 +EXTRA_DIST += models/kea-types.yang
  
  CLEANFILES = *.gcno *.gcda
index 5e593f1d191f119c3a178e5367ded58d427e43e4,b9585f0512f8d01f231f375b0220c3f25df3941e..a3cd3eaf86fc6658b86e7de85d5af058851c8058
@@@ -17,10 -17,8 +17,11 @@@ EXTRA_DIST = keatest-module.yan
  TESTS =
  if HAVE_GTEST
  TESTS += run_unittests
 -run_unittests_SOURCES  = translator_unittests.cc
 +run_unittests_SOURCES  = adaptor_unittests.cc
 +run_unittests_SOURCES += sysrepo_setup.h
 +run_unittests_SOURCES += translator_unittests.cc
+ run_unittests_SOURCES += translator_control_socket_unittests.cc
 +run_unittests_SOURCES += translator_option_data_unittests.cc
  run_unittests_SOURCES += run_unittests.cc
  run_unittests_CPPFLAGS = $(AM_CPPFLAGS) $(GTEST_INCLUDES)
  run_unittests_LDFLAGS = $(AM_LDFLAGS) $(GTEST_LDFLAGS)
index 0000000000000000000000000000000000000000,8e3da5dd6ce7a2f36c3c3618cbe3e5324fcb9778..24fad8bff57e375d8c33dd4ef5dda7299b54c41a
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,157 +1,152 @@@
 -#include <boost/scoped_ptr.hpp>
+ // Copyright (C) 2018 Internet Systems Consortium, Inc. ("ISC")
+ //
+ // This Source Code Form is subject to the terms of the Mozilla Public
+ // License, v. 2.0. If a copy of the MPL was not distributed with this
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ #include <config.h>
+ #include <yang/translator_control_socket.h>
++#include <yang/tests/sysrepo_setup.h>
 -// Test get empty control socket using the Kea ad hoc model.
 -TEST(TranslatorControlSocketTest, getEmpty) {
 -    // Get a translator control socket object to play with.
 -    S_Connection conn(new Connection("translator control socket unittests"));
 -    S_Session sess(new Session(conn, SR_DS_CANDIDATE));
 -    boost::scoped_ptr<TranslatorControlSocket> tcs_obj;
+ #include <gtest/gtest.h>
+ using namespace std;
+ using namespace isc;
+ using namespace isc::data;
+ using namespace isc::yang;
++using namespace isc::yang::test;
+ namespace {
 -    // Use the ad hoc model.
 -    const string& model = "kea-dhcp4-server";
 -    EXPECT_NO_THROW(tcs_obj.reset(new TranslatorControlSocket(sess, model)));
++/// @brief Translator name.
++extern char const control_socket[] = "control socket";
 -    EXPECT_NO_THROW(sock = tcs_obj->getControlSocket(xpath));
++/// @brief Test fixture class for @ref TranslatorControlSocket.
++class TranslatorControlSocketTest :
++    public GenericTranslatorTest<control_socket, TranslatorControlSocket> {
++public:
++
++    /// Constructor.
++    TranslatorControlSocketTest() { }
++
++    /// Destructor (does nothing).
++    virtual ~TranslatorControlSocketTest() { }
++};
++
++// This test verifies that an empty control socket can be properly
++// translated from YANG to JSON.
++TEST_F(TranslatorControlSocketTest, getEmpty) {
++    useModel("kea-dhcp4-server");
+     // Get empty.
+     const string& xpath = "/kea-dhcp4-server:config/control-socket";
+     ConstElementPtr sock;
 -// Test get not empty control socket using the Kea ad hoc model.
 -TEST(TranslatorControlSocketTest, get) {
 -    // Get a translator control socket object to play with.
 -    S_Connection conn(new Connection("translator control socket unittests"));
 -    S_Session sess(new Session(conn, SR_DS_CANDIDATE));
 -    boost::scoped_ptr<TranslatorControlSocket> tcs_obj;
 -
 -    // Use the ad hoc model.
 -    const string& model = "kea-dhcp6-server";
 -    EXPECT_NO_THROW(tcs_obj.reset(new TranslatorControlSocket(sess, model)));
++    EXPECT_NO_THROW(sock = t_obj_->getControlSocket(xpath));
+     EXPECT_FALSE(sock);
+ }
+     
 -    EXPECT_NO_THROW(sess->set_item(xname.c_str(), s_name));
++// This test verifies that a not empty control socket can be properly
++// translated from YANG to JSON.
++TEST_F(TranslatorControlSocketTest, get) {
++    useModel("kea-dhcp6-server");
+     // Set a value.
+     const string& xpath = "/kea-dhcp6-server:config/control-socket";
+     const string& xname = xpath + "/socket-name";
+     const string& xtype = xpath + "/socket-type";
+     const string& xcontext = xpath + "/user-context";
+     S_Val s_name(new Val("/tmp/kea.sock"));
 -    EXPECT_NO_THROW(sess->set_item(xtype.c_str(), s_type));
++    EXPECT_NO_THROW(sess_->set_item(xname.c_str(), s_name));
+     S_Val s_type(new Val("unix", SR_ENUM_T));
 -    EXPECT_NO_THROW(sess->set_item(xcontext.c_str(), s_context));
++    EXPECT_NO_THROW(sess_->set_item(xtype.c_str(), s_type));
+     S_Val s_context(new Val("{ \"foo\": 1 }"));
 -    EXPECT_NO_THROW(sock = tcs_obj->getControlSocket(xpath));
++    EXPECT_NO_THROW(sess_->set_item(xcontext.c_str(), s_context));
+     // Get it.
+     ConstElementPtr sock;
 -// Test set not empty control socket using the Kea ad hoc model.
 -TEST(TranslatorControlSocketTest, set) {
 -    // Get a translator control socket object to play with.
 -    S_Connection conn(new Connection("translator control socket unittests"));
 -    S_Session sess(new Session(conn, SR_DS_CANDIDATE));
 -    boost::scoped_ptr<TranslatorControlSocket> tcs_obj;
 -
 -    // Use the ad hoc model.
 -    const string& model = "kea-ctrl-agent";
 -    EXPECT_NO_THROW(tcs_obj.reset(new TranslatorControlSocket(sess, model)));
++    EXPECT_NO_THROW(sock = t_obj_->getControlSocket(xpath));
+     ASSERT_TRUE(sock);
+     ASSERT_EQ(Element::map, sock->getType());
+     EXPECT_EQ(3, sock->size());
+     ConstElementPtr type = sock->get("socket-type");
+     ASSERT_TRUE(type);
+     ASSERT_EQ(Element::string, type->getType());
+     EXPECT_EQ("unix", type->stringValue());
+     ConstElementPtr name = sock->get("socket-name");
+     ASSERT_TRUE(name);
+     ASSERT_EQ(Element::string, name->getType());
+     EXPECT_EQ("/tmp/kea.sock", name->stringValue());
+     ConstElementPtr context = sock->get("user-context");
+     ASSERT_TRUE(context);
+     EXPECT_EQ("{ \"foo\": 1 }", context->str());
+ }
 -        tcs_obj->setControlSocket(xpath, sock);
++// This test verifies that a not empty control socket can be properly
++// translated from JSON to YANG.
++TEST_F(TranslatorControlSocketTest, set) {
++    useModel("kea-ctrl-agent");
+     // Set a value.
+     const string& xpath =
+         "/kea-ctrl-agent:config/control-sockets/socket[server-type='dhcp4']/control-socket";
+     ElementPtr sock = Element::createMap();
+     sock->set("socket-name", Element::create(string("/tmp/kea.sock")));
+     sock->set("socket-type", Element::create(string("unix")));
+     sock->set("comment", Element::create(string("a comment")));
+     try {
 -    ASSERT_NO_THROW(tcs_obj->setControlSocket(xpath, sock));
++        t_obj_->setControlSocket(xpath, sock);
+     } catch (const std::exception& ex) {
+         cerr << "setControlSocket fail with " << ex.what() << endl;
+     }
 -    EXPECT_NO_THROW(got = tcs_obj->getControlSocket(xpath));
++    ASSERT_NO_THROW(t_obj_->setControlSocket(xpath, sock));
+     // Get it back.
+     ConstElementPtr got;
 -}
++    EXPECT_NO_THROW(got = t_obj_->getControlSocket(xpath));
+     ASSERT_TRUE(got);
+     ASSERT_EQ(Element::map, got->getType());
+     EXPECT_EQ(3, got->size());
+     ConstElementPtr name = got->get("socket-name");
+     ASSERT_TRUE(name);
+     ASSERT_EQ(Element::string, name->getType());
+     EXPECT_EQ("/tmp/kea.sock", name->stringValue());
+     ConstElementPtr type = got->get("socket-type");
+     ASSERT_TRUE(type);
+     ASSERT_EQ(Element::string, type->getType());
+     EXPECT_EQ("unix", type->stringValue());
+     ConstElementPtr context = got->get("user-context");
+     ASSERT_TRUE(context);
+     EXPECT_EQ("{ \"comment\": \"a comment\" }", context->str());
 -// Test set empty control socket using the Kea ad hoc model.
 -TEST(TranslatorControlSocketTest, setEmpty) {
 -    // Get a translator control socket object to play with.
 -    S_Connection conn(new Connection("translator control socket unittests"));
 -    S_Session sess(new Session(conn, SR_DS_CANDIDATE));
 -    boost::scoped_ptr<TranslatorControlSocket> tcs_obj;
 -    // Use the ad hoc model.
 -    const string& model = "kea-dhcp4-server";
 -    EXPECT_NO_THROW(tcs_obj.reset(new TranslatorControlSocket(sess, model)));
++    // Check it validates.
++    EXPECT_NO_THROW(sess_->validate());
++}
 -    EXPECT_NO_THROW(sess->set_item(xname.c_str(), s_name));
++// This test verifies that an empty control socket can be properly
++// translated from JSON to YANG.
++TEST_F(TranslatorControlSocketTest, setEmpty) {
++    useModel("kea-dhcp4-server");
+     // Set a value.
+     const string& xpath = "/kea-dhcp4-server:config/control-socket";
+     const string& xname = xpath + "/socket-name";
+     const string& xtype = xpath + "/socket-type";
+     const string& xcontext = xpath + "/user-context";
+     S_Val s_name(new Val("/tmp/kea.sock"));
 -    EXPECT_NO_THROW(sess->set_item(xtype.c_str(), s_type));
++    EXPECT_NO_THROW(sess_->set_item(xname.c_str(), s_name));
+     S_Val s_type(new Val("unix", SR_ENUM_T));
 -    EXPECT_NO_THROW(sess->set_item(xcontext.c_str(), s_context));
++    EXPECT_NO_THROW(sess_->set_item(xtype.c_str(), s_type));
+     S_Val s_context(new Val("{ \"foo\": 1 }"));
 -    ASSERT_NO_THROW(tcs_obj->setControlSocket(xpath, ConstElementPtr()));
++    EXPECT_NO_THROW(sess_->set_item(xcontext.c_str(), s_context));
+     // Reset to empty.
 -    EXPECT_NO_THROW(sock = tcs_obj->getControlSocket(xpath));
++    ASSERT_NO_THROW(t_obj_->setControlSocket(xpath, ConstElementPtr()));
+     // Get it back.
+     ConstElementPtr sock;
++    EXPECT_NO_THROW(sock = t_obj_->getControlSocket(xpath));
+     EXPECT_FALSE(sock);
+ }
+ }; // end of anonymous namespace