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

index 4761a7127d49bbb666a321eba6f92a21981fab43,5f48238e617bb0764e6b050eb02c58f875fadb66..9df3306b8b898c9465f09bd7d9aff17fe22ff3c5
@@@ -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_option_data.cc
 +libkea_yang_la_SOURCES += translator_option_data.h
+ libkea_yang_la_SOURCES += translator_option_def.cc
+ libkea_yang_la_SOURCES += translator_option_def.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_option_data.h
++      translator_option_data.h \
+       translator_option_def.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,bae9a7a33f04206b5987e51048a0f078ef240b55..ec2f7ede94181ca8655ab6da5fe7a070d4485cad
@@@ -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_option_data_unittests.cc
+ run_unittests_SOURCES += translator_option_def_unittests.cc
  run_unittests_SOURCES += run_unittests.cc
  run_unittests_CPPFLAGS = $(AM_CPPFLAGS) $(GTEST_INCLUDES)
  run_unittests_LDFLAGS = $(AM_LDFLAGS) $(GTEST_LDFLAGS)
index 0000000000000000000000000000000000000000,2dfa434fc9de497f7f63a2718fd18e68d5e782af..255a56e77b4fe8652cf367488951456bab50fdd0
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,158 +1,158 @@@
 -#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_option_def.h>
++#include <yang/tests/sysrepo_setup.h>
 -// Test get empty option definition list.
 -TEST(TranslatorOptionDefListTest, getEmpty) {
 -    // Get a translator option definition list object to play with.
 -    S_Connection conn(new Connection("translator option definition list unittests"));
 -    S_Session sess(new Session(conn, SR_DS_CANDIDATE));
 -    boost::scoped_ptr<TranslatorOptionDefList> todl_obj;
+ #include <gtest/gtest.h>
+ #include <sstream>
+ 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(todl_obj.reset(new TranslatorOptionDefList(sess, model)));
++/// @brief Translator name.
++extern char const option_definition_list[] = "option definition list";
 -    EXPECT_NO_THROW(options = todl_obj->getOptionDefList(xpath));
++/// @brief Test fixture class for @ref TranslatorOptionDefList.
++class TranslatorOptionDefListTest :
++    public GenericTranslatorTest<option_definition_list, TranslatorOptionDefList> {
++public:
++
++    /// Constructor.
++    TranslatorOptionDefListTest() { }
++
++    /// Destructor (does nothing).
++    virtual ~TranslatorOptionDefListTest() { }
++};
++
++// This test verifies that an empty option definition list can be properly
++// translated from YANG to JSON.
++TEST_F(TranslatorOptionDefListTest, getEmpty) {
++    useModel("kea-dhcp4-server");
+     // Get the option definition list and checks it is empty.
+     const string& xpath = "/kea-dhcp4-server:config/option-def-list";
+     ConstElementPtr options;
 -// Test get one option def.
 -TEST(TranslatorOptionDefListTest, get) {
 -    // Get a translator option definition list object to play with.
 -    S_Connection conn(new Connection("translator option definition list unittests"));
 -    S_Session sess(new Session(conn, SR_DS_CANDIDATE));
 -    boost::scoped_ptr<TranslatorOptionDefList> todl_obj;
 -
 -    // Use the ad hoc model.
 -    const string& model = "kea-dhcp6-server";
 -    EXPECT_NO_THROW(todl_obj.reset(new TranslatorOptionDefList(sess, model)));
++    EXPECT_NO_THROW(options = t_obj_->getOptionDefList(xpath));
+     ASSERT_TRUE(options);
+     ASSERT_EQ(Element::list, options->getType());
+     EXPECT_EQ(0, options->size());
+ }
 -    ASSERT_NO_THROW(sess->set_item(xname.c_str(), s_name));
++// This test verifies that one option definition can be properly
++// translated from YANG to JSON.
++TEST_F(TranslatorOptionDefListTest, get) {
++    useModel("kea-dhcp6-server");
+     // Create the option code 100.
+     const string& xpath = "/kea-dhcp6-server:config/option-def-list";
+     const string& xdef = xpath + "/option-def[code='100'][space='isc']";
+     const string& xname = xdef + "/name";
+     const string& xtype = xdef + "/type";
+     const string& xarray = xdef + "/array";
+     S_Val s_name(new Val("foo"));
 -    ASSERT_NO_THROW(sess->set_item(xtype.c_str(), s_type));
++    ASSERT_NO_THROW(sess_->set_item(xname.c_str(), s_name));
+     S_Val s_type(new Val("string"));
 -    ASSERT_NO_THROW(sess->set_item(xarray.c_str(), s_array));
++    ASSERT_NO_THROW(sess_->set_item(xtype.c_str(), s_type));
+     S_Val s_array(new Val(false));
 -    EXPECT_NO_THROW(def = todl_obj->getOptionDef(xdef));
++    ASSERT_NO_THROW(sess_->set_item(xarray.c_str(), s_array));
+     
+     // Get the option def.
+     ConstElementPtr def;
 -    EXPECT_NO_THROW(defs = todl_obj->getOptionDefList(xpath));
++    EXPECT_NO_THROW(def = t_obj_->getOptionDef(xdef));
+     ASSERT_TRUE(def);
+     EXPECT_EQ("{ \"array\": false, \"code\": 100, \"name\": \"foo\", \"space\": \"isc\", \"type\": \"string\" }",
+               def->str());
+     // Get the option definition list.
+     ConstElementPtr defs;
 -// Test set empty option definition list.
 -TEST(TranslatorOptionDefListTest, setEmpty) {
 -    // Get a translator option definition list object to play with.
 -    S_Connection conn(new Connection("translator option definition list unittests"));
 -    S_Session sess(new Session(conn, SR_DS_CANDIDATE));
 -    boost::scoped_ptr<TranslatorOptionDefList> todl_obj;
 -
 -    // Use the ad hoc model.
 -    const string& model = "kea-dhcp4-server";
 -    EXPECT_NO_THROW(todl_obj.reset(new TranslatorOptionDefList(sess, model)));
++    EXPECT_NO_THROW(defs = t_obj_->getOptionDefList(xpath));
+     ASSERT_TRUE(defs);
+     ASSERT_EQ(Element::list, defs->getType());
+     EXPECT_EQ(1, defs->size());
+     EXPECT_TRUE(def->equals(*defs->get(0)));
+ }
 -    EXPECT_NO_THROW(todl_obj->setOptionDefList(xpath, defs));
++// This test verifies that an empty option definition list can be properly
++// translated from JSON to YANG.
++TEST_F(TranslatorOptionDefListTest, setEmpty) {
++    useModel("kea-dhcp4-server");
+     // Set empty list.
+     const string& xpath = "/kea-dhcp4-server:config/option-def-list";
+     ConstElementPtr defs = Element::createList();
 -    EXPECT_NO_THROW(defs = todl_obj->getOptionDefList(xpath));
++    EXPECT_NO_THROW(t_obj_->setOptionDefList(xpath, defs));
+     // Get it back.
+     defs.reset();
 -}
++    EXPECT_NO_THROW(defs = t_obj_->getOptionDefList(xpath));
+     ASSERT_TRUE(defs);
+     EXPECT_EQ(0, defs->size());
 -// Test set an option definition.
 -TEST(TranslatorOptionDefListTest, set) {
 -    // Get a translator option definition list object to play with.
 -    S_Connection conn(new Connection("translator option definition list unittests"));
 -    S_Session sess(new Session(conn, SR_DS_CANDIDATE));
 -    boost::scoped_ptr<TranslatorOptionDefList> todl_obj;
 -    // Use the ad hoc model.
 -    const string& model = "kea-dhcp6-server";
 -    EXPECT_NO_THROW(todl_obj.reset(new TranslatorOptionDefList(sess, model)));
++    // Check that the tree representation is empty.
++    S_Tree tree;
++    EXPECT_NO_THROW(tree = sess_->get_subtree("/kea-dhcp4-server:config"));
++    EXPECT_FALSE(tree);
++}
 -    EXPECT_NO_THROW(todl_obj->setOptionDefList(xpath, defs));
++// This test verifies that one option definition can be properly
++// translated from JSON to YANG.
++TEST_F(TranslatorOptionDefListTest, set) {
++    useModel("kea-dhcp6-server");
+     // Set one option def.
+     const string& xpath = "/kea-dhcp6-server:config/option-def-list";
+     ElementPtr defs = Element::createList();
+     ElementPtr def = Element::createMap();
+     def->set("code", Element::create(100));
+     def->set("name", Element::create(string("foo")));
+     def->set("space", Element::create(string("isc")));
+     def->set("type", Element::create(string("string")));
+     def->set("array", Element::create(false));
+     defs->add(def);
 -    EXPECT_NO_THROW(got = todl_obj->getOptionDefList(xpath));
++    EXPECT_NO_THROW(t_obj_->setOptionDefList(xpath, defs));
+     // Get it back.
+     ConstElementPtr got;
 -    EXPECT_NO_THROW(tree = sess->get_subtree("/kea-dhcp6-server:config"));
++    EXPECT_NO_THROW(got = t_obj_->getOptionDefList(xpath));
+     ASSERT_TRUE(got);
+     ASSERT_EQ(1, got->size());
+     EXPECT_TRUE(def->equals(*got->get(0)));
+     // Check the tree representation.
+     S_Tree tree;
++    EXPECT_NO_THROW(tree = sess_->get_subtree("/kea-dhcp6-server:config"));
+     ASSERT_TRUE(tree);
+     string expected =
+         "kea-dhcp6-server:config (container)\n"
+         " |\n"
+         " -- option-def-list (container)\n"
+         "     |\n"
+         "     -- option-def (list instance)\n"
+         "         |\n"
+         "         -- code = 100\n"
+         "         |\n"
+         "         -- space = isc\n"
+         "         |\n"
+         "         -- name = foo\n"
+         "         |\n"
+         "         -- type = string\n"
+         "         |\n"
+         "         -- array = false\n";
+     EXPECT_EQ(expected, tree->to_string(100));
++
++    // Check it validates.
++    EXPECT_NO_THROW(sess_->validate());
+ }
+ }; // end of anonymous namespace