Skip to content

Commit

Permalink
Fixed GitHub issue CiscoDevNet#997
Browse files Browse the repository at this point in the history
  • Loading branch information
ygorelik committed May 26, 2020
1 parent a2799a5 commit 259c120
Show file tree
Hide file tree
Showing 9 changed files with 89 additions and 11 deletions.
5 changes: 3 additions & 2 deletions CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
### 2020-05-31 version 0.8.5
### 2020-06-30 version 0.8.5

#### New features and enhancements
* Develop utility function to clone Entity instance ([#967](https://github.com/CiscoDevNet/ydk-gen/issues/967))
Expand All @@ -10,7 +10,8 @@
* YDK fails create bundle package when package name contains '.' ([#978](https://github.com/CiscoDevNet/ydk-gen/issues/978))
* python bundle generator must escape 'async' as variable name ([#980](https://github.com/CiscoDevNet/ydk-gen/issues/980))
* YDK fails instantiate some of the generated bundle classes ([#983](https://github.com/CiscoDevNet/ydk-gen/issues/983))
* python generated bundle class fails instantiate when model contains leaf 'logger' ([#996](https://github.com/CiscoDevNet/ydk-gen/issues/996))
* Python generated bundle class fails instantiate when model contains leaf 'logger' ([#996](https://github.com/CiscoDevNet/ydk-gen/issues/996))
* C++ YList class fails to process key values when its name contains '-' character ([#997](https://github.com/CiscoDevNet/ydk-gen/issues/997))

#### Bundle improvements
* Updated cisco-ios-xe bundle to support Cisco IOS XE 16.9.3 due to bug in Python generated code
Expand Down
4 changes: 3 additions & 1 deletion sdk/cpp/CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
### 2019-11-14 version 0.8.4.post1
### 2020-06-30 version 0.8.5

#### New features and enhancements
* Added Entity class member function to clone entity object
* Added shortcut operator to set `yfilter` value in YLeaf and YLeafList class instances
* Develop utility function to clone Entity instance ([#967](https://github.com/CiscoDevNet/ydk-gen/issues/967))

#### Resolved GitHub issues
* Fix jsonSubtreeCodec only serializing up to 4B numbers
* Fixed bug in extracting module name from namespace
* gNMI set RPC fails when JSON payload is formatted string
* C++ YList class fails to process key values when its name contains '-' character ([#997](https://github.com/CiscoDevNet/ydk-gen/issues/997))

### 2019-10-15 version 0.8.4

Expand Down
4 changes: 2 additions & 2 deletions sdk/cpp/core/tests/models/ydktest-sanity@2015-11-17.yang
Original file line number Diff line number Diff line change
Expand Up @@ -678,8 +678,8 @@ module ydktest-sanity {

grouping enum-list {
list enum-list {
key "name";
leaf name {
key "key-name";
leaf key-name {
type Ydk-Enum-test;
}
}
Expand Down
59 changes: 59 additions & 0 deletions sdk/cpp/tests/test_sanity_types.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -779,6 +779,65 @@ TEST_CASE("test_ylist_two_keys") {
REQUIRE("f2" == count);
}

TEST_CASE("test_types_enum_list")
{
ydk::path::Repository repo{TEST_HOME};
NetconfServiceProvider provider{repo, "127.0.0.1", "admin", "admin", 12022};
CrudService crud{};

//DELETE
auto r_1 = make_unique<ydktest_sanity::Runner>();
bool reply = crud.delete_(provider, *r_1);
REQUIRE(reply);

//CREATE
auto enum_list_elem1 = make_shared<ydktest_sanity::Runner::EnumList>();
auto enum_list_elem2 = make_shared<ydktest_sanity::Runner::EnumList>();
enum_list_elem1->key_name = ydktest_sanity::YdkEnumTest::local;
enum_list_elem2->key_name = ydktest_sanity::YdkEnumTest::remote;
r_1->enum_list.append(enum_list_elem1);
r_1->enum_list.append(enum_list_elem2);

auto keys = r_1->enum_list.keys();
REQUIRE(vector_to_string(keys) == "\"local\", \"remote\"");

reply = crud.create(provider, *r_1);
REQUIRE(reply);

//READ
auto filter = make_unique<ydktest_sanity::Runner>();
auto r_read = crud.read(provider, *filter);
REQUIRE(r_read!=nullptr);
ydktest_sanity::Runner * r_2 = dynamic_cast<ydktest_sanity::Runner*>(r_read.get());
auto read_keys = r_2->enum_list.keys();
REQUIRE(read_keys == keys);
}

TEST_CASE("test_ylist_two_keys_read") {
NetconfServiceProvider provider{"127.0.0.1", "admin", "admin", 12022};
CrudService crud{};

// CREATE
auto runner = make_unique<ydktest_sanity::Runner>();
auto l1 = make_shared<ydktest_sanity::Runner::TwoKeyList> (); l1->first = "act"; l1->second = 11;
auto l2 = make_shared<ydktest_sanity::Runner::TwoKeyList> (); l2->first = "act"; l2->second = 22;
runner->two_key_list.extend({l1, l2});
crud.create(provider, *runner);

// READ
auto filter = ydktest_sanity::Runner();
auto read_entity = crud.read(provider, filter);
REQUIRE(read_entity != nullptr);

auto read_runner = dynamic_cast<ydktest_sanity::Runner*>(read_entity.get());
REQUIRE(read_runner->two_key_list.len() == 2);

//DELETE
auto r_1 = make_unique<ydktest_sanity::Runner>();
bool reply = crud.delete_(provider, *r_1);
REQUIRE(reply);
}

TEST_CASE("test_ylist_no_keys") {
auto runner = ydktest_sanity::Runner();
auto t1 = make_shared<ydktest_sanity::Runner::NoKeyList> (); t1->test = "t1";
Expand Down
2 changes: 1 addition & 1 deletion sdk/go/CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
### 2019-11-20 version 0.8.4.post1
### 2020-06-30 version 0.8.5

#### New features and enhancements
* Develop utility function to clone Entity instance ([#967](https://github.com/CiscoDevNet/ydk-gen/issues/967))
Expand Down
6 changes: 3 additions & 3 deletions sdk/go/core/tests/types_core_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -172,9 +172,9 @@ func (suite *CoreTypesTestSuite) TestIdentityList() {

func (suite *CoreTypesTestSuite) TestEnumList() {
runner := ysanity.Runner{}
i1 := ysanity.Runner_EnumList{Name: ysanity.YdkEnumTest_none}
i2 := ysanity.Runner_EnumList{Name: ysanity.YdkEnumTest_local}
i3 := ysanity.Runner_EnumList{Name: ysanity.YdkEnumTest_remote}
i1 := ysanity.Runner_EnumList{KeyName: ysanity.YdkEnumTest_none}
i2 := ysanity.Runner_EnumList{KeyName: ysanity.YdkEnumTest_local}
i3 := ysanity.Runner_EnumList{KeyName: ysanity.YdkEnumTest_remote}
runner.EnumList = []*ysanity.Runner_EnumList{&i1, &i2, &i3}

ldataKeys := ylist.Keys(runner.EnumList)
Expand Down
2 changes: 1 addition & 1 deletion sdk/python/CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
### 2020-02-15 version 0.8.5
### 2020-06-30 version 0.8.5

#### New features and enhancements
* Added Entity class member function to clone entity object
Expand Down
16 changes: 16 additions & 0 deletions sdk/python/core/tests/test_sanity_types.py
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,22 @@ def test_enum(self):
self.assertEqual(runner, runner1)
self.assertEqual(runner.ytypes.built_in_t.enum_value, runner1.ytypes.built_in_t.enum_value)

def test_enum_list(self):
runner = Runner()
el1 = Runner.EnumList()
el1.key_name = YdkEnumTest.local
el2 = Runner.EnumList()
el2.key_name = YdkEnumTest.remote
runner.enum_list.extend([el1, el2])
print(runner.enum_list.keys())
self.crud.create(self.ncc, runner)

# Read into Runner1
runner1 = self.crud.read(self.ncc, Runner())

# Compare runners
self.assertEqual(runner, runner1)

def test_union(self):
runner = Runner()
runner.ytypes.built_in_t.younion = YdkEnumTest.none
Expand Down
2 changes: 1 addition & 1 deletion ydkgen/printer/cpp/class_constructor_printer.py
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ def _print_class_inits(self, clazz, leafs, children):
for key in key_props:
if key_str.__len__() > 0:
key_str += ', '
key_str += '"%s"' % key.name
key_str += '"%s"' % key.stmt.arg # key.name
init_stmts.append('%s(this, {%s})' % (child.name, key_str))
else:
if (child.stmt.search_one('presence') is None):
Expand Down

0 comments on commit 259c120

Please sign in to comment.