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

index 4761a7127d49bbb666a321eba6f92a21981fab43,571ebbf00372fb6c6e66f014c8be9b8a7e959867..c22748fee59b618b0b68d66834189f36ef1b36bd
@@@ -5,11 -5,9 +5,12 @@@ 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_logger.cc translator_logger.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 -22,10 +25,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_logger.h
++      translator_logger.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,22f4d22a6a63f467de54907636581518fc40072d..a708e3f73b45c3032f7065bc78a112617a799f3c
@@@ -17,10 -17,8 +17,12 @@@ 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_logger_unittests.cc
 +run_unittests_SOURCES += translator_option_data_unittests.cc
++run_unittests_SOURCES  = translator_unittests.cc
  run_unittests_SOURCES += run_unittests.cc
  run_unittests_CPPFLAGS = $(AM_CPPFLAGS) $(GTEST_INCLUDES)
  run_unittests_LDFLAGS = $(AM_LDFLAGS) $(GTEST_LDFLAGS)
index 0000000000000000000000000000000000000000,ab2f7b2708bfcd9139c09600c273286732804524..361d8395e2df8119e05bdfd70550ae769b9f1426
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,177 +1,178 @@@
 -#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_logger.h>
++#include <yang/tests/sysrepo_setup.h>
 -// Test get empty loggers.
 -TEST(TranslatorLoggersTest, getEmpty) {
 -    // Get a translator loggers object to play with.
 -    S_Connection conn(new Connection("translator loggeres unittests"));
 -    S_Session sess(new Session(conn, SR_DS_CANDIDATE));
 -    boost::scoped_ptr<TranslatorLoggers> tls_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(tls_obj.reset(new TranslatorLoggers(sess, model)));
++/// @brief Translator name.
++extern char const logger_list[] = "logger list";
 -    EXPECT_NO_THROW(loggers = tls_obj->getLoggers(xpath));
++/// @brief Test fixture class for @ref TranslatorLoggers.
++class TranslatorLoggersTest :
++    public GenericTranslatorTest<logger_list, TranslatorLoggers> {
++public:
++
++    /// Constructor.
++    TranslatorLoggersTest() { }
++
++    /// Destructor (does nothing).
++    virtual ~TranslatorLoggersTest() { }
++};
++
++// This test verifies that an empty logger list can be properly
++// translated from YANG to JSON.
++TEST_F(TranslatorLoggersTest, getEmpty) {
++    useModel("kea-dhcp4-server");
+     // Get empty.
+     const string& xpath = "/kea-dhcp4-server:logging/loggers";
+     ConstElementPtr loggers;
 -// Test get loggers.
 -TEST(TranslatorLoggersTest, get) {
 -    // Get a translator loggers object to play with.
 -    S_Connection conn(new Connection("translator loggeres unittests"));
 -    S_Session sess(new Session(conn, SR_DS_CANDIDATE));
 -    boost::scoped_ptr<TranslatorLoggers> tls_obj;
 -
 -    // Use the ad hoc model.
 -    const string& model = "kea-dhcp6-server";
 -    EXPECT_NO_THROW(tls_obj.reset(new TranslatorLoggers(sess, model)));
++    EXPECT_NO_THROW(loggers = t_obj_->getLoggers(xpath));
+     ASSERT_TRUE(loggers);
+     EXPECT_EQ(0, loggers->size());
+ }
 -    EXPECT_NO_THROW(sess->set_item(xseverity.c_str(), s_severity));
++// This test verifies that one logger can be properly
++// translated from YANG to JSON.
++TEST_F(TranslatorLoggersTest, get) {
++    useModel("kea-dhcp6-server");
+     // Set a value.
+     const string& xpath = "/kea-dhcp6-server:logging/loggers";
+     const string& xlogger = xpath + "/logger[name='foo']";
+     const string& xseverity = xlogger + "/severity";
+     const string& xoption = xlogger + "/output-options/option[output='/bar']";
+     const string& xmaxver = xoption + "/maxver";
+     S_Val s_severity(new Val("WARN", SR_ENUM_T));
 -    EXPECT_NO_THROW(sess->set_item(xmaxver.c_str(), s_maxver));
++    EXPECT_NO_THROW(sess_->set_item(xseverity.c_str(), s_severity));
+     uint32_t max_ver = 10;
+     S_Val s_maxver(new Val(max_ver, SR_UINT32_T));
 -    EXPECT_NO_THROW(loggers = tls_obj->getLoggers(xpath));
++    EXPECT_NO_THROW(sess_->set_item(xmaxver.c_str(), s_maxver));
+     // Get empty.
+     ConstElementPtr loggers;
 -// Test set loggers.
 -TEST(TranslatorLoggersTest, set) {
 -    // Get a translator loggers object to play with.
 -    S_Connection conn(new Connection("translator loggeres unittests"));
 -    S_Session sess(new Session(conn, SR_DS_CANDIDATE));
 -    boost::scoped_ptr<TranslatorLoggers> tls_obj;
 -
 -    // Use the ad hoc model.
 -    const string& model = "kea-dhcp4-server";
 -    EXPECT_NO_THROW(tls_obj.reset(new TranslatorLoggers(sess, model)));
++    EXPECT_NO_THROW(loggers = t_obj_->getLoggers(xpath));
+     ASSERT_TRUE(loggers);
+     ASSERT_EQ(1, loggers->size());
+     ConstElementPtr logger = loggers->get(0);
+     ASSERT_TRUE(logger);
+     EXPECT_EQ(3, logger->size());
+     ConstElementPtr name = logger->get("name");
+     ASSERT_TRUE(name);
+     ASSERT_EQ(Element::string, name->getType());
+     EXPECT_EQ("foo", name->stringValue());
+     ConstElementPtr severity = logger->get("severity");
+     ASSERT_TRUE(severity);
+     ASSERT_EQ(Element::string, severity->getType());
+     EXPECT_EQ("WARN", severity->stringValue());
+     ConstElementPtr options = logger->get("output_options");
+     ASSERT_TRUE(options);
+     ASSERT_EQ(1, options->size());
+     ConstElementPtr option = options->get(0);
+     ASSERT_TRUE(option);
+     EXPECT_EQ(2, option->size());
+     ConstElementPtr output = option->get("output");
+     ASSERT_TRUE(output);
+     ASSERT_EQ(Element::string, output->getType());
+     EXPECT_EQ("/bar", output->stringValue());
+     ConstElementPtr maxver = option->get("maxver");
+     ASSERT_TRUE(maxver);
+     ASSERT_EQ(Element::integer, maxver->getType());
+     EXPECT_EQ(max_ver, maxver->intValue());
+ }
 -    ASSERT_NO_THROW(tls_obj->setLoggers(xpath, loggers));
++// This test verifies that one logger can be properly
++// translated from JSON to YANG.
++TEST_F(TranslatorLoggersTest, set) {
++    useModel("kea-dhcp4-server");
+     // Set a value.
+     const string& xpath = "/kea-dhcp4-server:logging/loggers";
+     ElementPtr option = Element::createMap();
+     option->set("output", Element::create(string("/bar")));
+     option->set("maxver", Element::create(10));
+     ElementPtr options = Element::createList();
+     options->add(option);
+     ElementPtr logger = Element::createMap();
+     logger->set("name", Element::create(string("foo")));
+     logger->set("severity", Element::create(string("WARN")));
+     logger->set("output_options", options);
+     ElementPtr loggers = Element::createList();
+     loggers->add(logger);
 -    EXPECT_NO_THROW(gots = tls_obj->getLoggers(xpath));
++    ASSERT_NO_THROW(t_obj_->setLoggers(xpath, loggers));
+     // Get it back.
+     ConstElementPtr gots;
 -    EXPECT_NO_THROW(tree = sess->get_subtree("/kea-dhcp4-server:logging"));
++    EXPECT_NO_THROW(gots = t_obj_->getLoggers(xpath));
+     ASSERT_TRUE(gots);
+     ASSERT_EQ(1, gots->size());
+     ConstElementPtr got = gots->get(0);
+     ASSERT_TRUE(got);
+     EXPECT_EQ(3, got->size());
+     ConstElementPtr name = got->get("name");
+     ASSERT_TRUE(name);
+     ASSERT_EQ(Element::string, name->getType());
+     EXPECT_EQ("foo", name->stringValue());
+     ConstElementPtr severity = logger->get("severity");
+     ASSERT_TRUE(severity);
+     ASSERT_EQ(Element::string, severity->getType());
+     EXPECT_EQ("WARN", severity->stringValue());
+     ConstElementPtr got_os = logger->get("output_options");
+     ASSERT_TRUE(got_os);
+     ASSERT_EQ(1, got_os->size());
+     ConstElementPtr got_o = got_os->get(0);
+     ASSERT_TRUE(got_o);
+     EXPECT_EQ(2, got_o->size());
+     ConstElementPtr output = got_o->get("output");
+     ASSERT_TRUE(output);
+     ASSERT_EQ(Element::string, output->getType());
+     EXPECT_EQ("/bar", output->stringValue());
+     ConstElementPtr maxver = got_o->get("maxver");
+     ASSERT_TRUE(maxver);
+     ASSERT_EQ(Element::integer, maxver->getType());
+     EXPECT_EQ(10, maxver->intValue());
+     // Check the tree representation.
+     S_Tree tree;
++    EXPECT_NO_THROW(tree = sess_->get_subtree("/kea-dhcp4-server:logging"));
+     ASSERT_TRUE(tree);
+     string expected =
+         "kea-dhcp4-server:logging (container)\n"
+         " |\n"
+         " -- loggers (container)\n"
+         "     |\n"
+         "     -- logger (list instance)\n"
+         "         |\n"
+         "         -- name = foo\n"
+         "         |\n"
+         "         -- output-options (container)\n"
+         "         |   |\n"
+         "         |   -- option (list instance)\n"
+         "         |       |\n"
+         "         |       -- output = /bar\n"
+         "         |       |\n"
+         "         |       -- maxver = 10\n"
+         "         |\n"
+         "         -- severity = WARN\n";
+     EXPECT_EQ(expected, tree->to_string(100));
++
++    // Check it validates.
++    EXPECT_NO_THROW(sess_->validate());
+ }
+ }; // end of anonymous namespace