From: Francis Dupont Date: Tue, 25 Sep 2018 15:25:56 +0000 (+0200) Subject: [65-libyang-logger_rebased] Fixed rebase conflicts X-Git-Tag: 153-netconf-configs_base^2~1^2^2^2^2^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9d5a59cc80239121b248c798ef5cb6202fb5181a;p=thirdparty%2Fkea.git [65-libyang-logger_rebased] Fixed rebase conflicts --- 9d5a59cc80239121b248c798ef5cb6202fb5181a diff --cc src/lib/yang/Makefile.am index 4761a7127d,571ebbf003..c22748fee5 --- a/src/lib/yang/Makefile.am +++ b/src/lib/yang/Makefile.am @@@ -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 diff --cc src/lib/yang/tests/Makefile.am index 5e593f1d19,22f4d22a6a..a708e3f73b --- a/src/lib/yang/tests/Makefile.am +++ b/src/lib/yang/tests/Makefile.am @@@ -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) diff --cc src/lib/yang/tests/translator_logger_unittests.cc index 0000000000,ab2f7b2708..361d8395e2 mode 000000,100644..100644 --- a/src/lib/yang/tests/translator_logger_unittests.cc +++ b/src/lib/yang/tests/translator_logger_unittests.cc @@@ -1,0 -1,177 +1,178 @@@ + // 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 + + #include ++#include + -#include + #include + + using namespace std; + using namespace isc; + using namespace isc::data; + using namespace isc::yang; ++using namespace isc::yang::test; + + namespace { + -// 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 tls_obj; ++/// @brief Translator name. ++extern char const logger_list[] = "logger list"; + - // Use the ad hoc model. - const string& model = "kea-dhcp4-server"; - EXPECT_NO_THROW(tls_obj.reset(new TranslatorLoggers(sess, model))); ++/// @brief Test fixture class for @ref TranslatorLoggers. ++class TranslatorLoggersTest : ++ public GenericTranslatorTest { ++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; - EXPECT_NO_THROW(loggers = tls_obj->getLoggers(xpath)); ++ EXPECT_NO_THROW(loggers = t_obj_->getLoggers(xpath)); + ASSERT_TRUE(loggers); + EXPECT_EQ(0, loggers->size()); + } + -// 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 tls_obj; - - // Use the ad hoc model. - const string& model = "kea-dhcp6-server"; - EXPECT_NO_THROW(tls_obj.reset(new TranslatorLoggers(sess, model))); ++// 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(xseverity.c_str(), s_severity)); ++ 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(sess->set_item(xmaxver.c_str(), s_maxver)); ++ EXPECT_NO_THROW(sess_->set_item(xmaxver.c_str(), s_maxver)); + + // Get empty. + ConstElementPtr loggers; - EXPECT_NO_THROW(loggers = tls_obj->getLoggers(xpath)); ++ 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()); + } + -// 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 tls_obj; - - // Use the ad hoc model. - const string& model = "kea-dhcp4-server"; - EXPECT_NO_THROW(tls_obj.reset(new TranslatorLoggers(sess, model))); ++// 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); - ASSERT_NO_THROW(tls_obj->setLoggers(xpath, loggers)); ++ ASSERT_NO_THROW(t_obj_->setLoggers(xpath, loggers)); + + // Get it back. + ConstElementPtr gots; - EXPECT_NO_THROW(gots = tls_obj->getLoggers(xpath)); ++ 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")); ++ 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