def test_delete(self): runner = ysanity.Runner() e_1 = ysanity.Runner.OneList.Ldata() e_2 = ysanity.Runner.OneList.Ldata() e_1.number = 1 e_1.name = 'foo' e_1.yfilter = YFilter.create e_2.number = 2 e_2.name = 'bar' e_2.yfilter = YFilter.create runner.one_list.ldata.extend([e_1, e_2]) self.crud.update(self.ncc, runner) # DELETE runner = ysanity.Runner() e_1 = ysanity.Runner.OneList.Ldata() e_1.number = 1 e_1.yfilter = YFilter.delete runner.one_list.ldata.append(e_1) self.crud.update(self.ncc, runner) # DELETE AGAIN WITH ERROR self.crud.update(self.ncc, runner)
def test_delete_on_leaflist(self): runner_create = ysanity.Runner() runner_create.one.name = 'one' runner_create.ytypes.built_in_t.llstring.extend( [str(i) for i in range(5)]) self.crud.create(self.ncc, runner_create) self.crud.delete(self.ncc, runner_create.ytypes.built_in_t.llstring[3]) runner_read = self.read_from_empty_filter() runner_left = runner_create del runner_left.ytypes.built_in_t.llstring[3] self.assertEqual(is_equal(runner_read, runner_create), True)
def test_get_config_invalid_1(self): try: runner = self._create_runner() get_filter = ysanity.Runner() self.netconf_service.edit_config(self.ncc, Datastore.candidate, runner) result = self.netconf_service.get_config(self.ncc, None, get_filter) except YServiceError as err: expected_msg = 'provider and source cannot be None' self.assertEqual(err.message, expected_msg) else: raise Exception('YServiceError not raised')
def test_read_on_ref_enum_class(self): from ydk.models.ydktest.ydktest_sanity import YdkEnumTest r_1 = ysanity.Runner.Ytypes.BuiltInT() r_1.enum_value = YdkEnumTest.local self.crud.create(self.ncc, r_1) r = ysanity.Runner() r_2 = r.ytypes.built_in_t r_2.enum_value = YFilter.read runner_read = self.crud.read(self.ncc, r_2) self.assertIsNotNone(runner_read) self.assertEqual(r_1.enum_value, runner_read.enum_value) r_2 = ysanity.Runner().Ytypes.BuiltInT() r_2.enum_value = YdkEnumTest.local runner_read = self.crud.read(self.ncc, r_2) self.assertEqual(r_1.enum_value, runner_read.enum_value) # no such value, nothing returned r_2 = ysanity.Runner.Ytypes.BuiltInT() r_2.enum_value = YdkEnumTest.remote runner_read = self.crud.read(self.ncc, r_2) self.assertIsNone(runner_read)
def test_entity_to_dict_aug_onelist(self): runner = ysanity.Runner() e_1 = ysanity.Runner.OneList.OneAugList.Ldata() e_2 = ysanity.Runner.OneList.OneAugList.Ldata() e_1.number = 1 e_1.name = "e_1.name" e_2.number = 2 e_2.name = "e_2.name" runner.one_list.one_aug_list.ldata.extend([e_1, e_2]) runner.one_list.one_aug_list.enabled = True ent_dict = entity_to_dict(runner) self.assertEqual(len(ent_dict), 5) print_dictionary('', ent_dict, 60)
def test_aug_onelist_pos(self): # CREATE r_1, r_2 = ysanity.Runner(), ysanity.Runner() e_1 = ysanity.Runner.OneList.OneAugList.Ldata() e_2 = ysanity.Runner.OneList.OneAugList.Ldata() e_1.number = 1 e_1.name = "e_1.name" e_2.number = 2 e_2.name = "e_2.name" r_1.one_list.one_aug_list.ldata.extend([e_1, e_2]) r_1.one_list.one_aug_list.enabled = True self.crud.create(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(r_1, r_2) # UPDATE r_1, r_2 = ysanity.Runner(), ysanity.Runner() e_1 = ysanity.Runner.OneList.OneAugList.Ldata() e_2 = ysanity.Runner.OneList.OneAugList.Ldata() e_1.number = 1 e_1.name = "e_1.name".replace('.', ':') e_2.number = 2 e_2.name = "e_2.name".replace('.', ':') r_1.one_list.one_aug_list.ldata.extend([e_1, e_2]) r_1.one_list.one_aug_list.enabled = True self.crud.update(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(r_1, r_2) # DELETE r_1 = ysanity.Runner() self.crud.delete(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(r_2, None)
def test_ylist_runner_no_key_list(self): runner = ysanity.Runner() t1 = ysanity.Runner().NoKeyList() t1.test = 't1' t2 = ysanity.Runner().NoKeyList() t2.test = 't2' t3 = ysanity.Runner().NoKeyList() t3.test = 't3' runner.no_key_list.extend([t1, t2, t3]) count = '' for elem in runner.no_key_list: count += elem.test self.assertEqual(count, 't1t2t3') from ydk.providers import CodecServiceProvider from ydk.services import CodecService provider = CodecServiceProvider(type='xml') codec = CodecService() payload = codec.encode(provider, runner) expected = '''<runner xmlns="http://cisco.com/ns/yang/ydktest-sanity"> <no-key-list> <test>t1</test> </no-key-list> <no-key-list> <test>t2</test> </no-key-list> <no-key-list> <test>t3</test> </no-key-list> </runner> ''' self.assertEqual(payload, expected) runner_decode = codec.decode(provider, payload) self.assertEqual(runner_decode, runner)
def test_onelist_pos(self): # READ r_1, r_2 = ysanity.Runner(), ysanity.Runner() e_1, e_2 = ysanity.Runner.OneList.Ldata(), ysanity.Runner.OneList.Ldata() e_1.number = 1 e_1.name = 'runner:onelist:ldata['+str(e_1.number)+']:name' e_2.number = 2 e_2.name = 'runner:onelist:ldata['+str(e_2.number)+']:name' r_1.one_list.ldata.append(e_1) r_1.one_list.ldata.append(e_2) self.crud.create(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(r_1, r_2) # UPDATE r_1, r_2 = ysanity.Runner(), ysanity.Runner() e_1, e_2 = ysanity.Runner.OneList.Ldata(), ysanity.Runner.OneList.Ldata() e_1.number = 1 e_1.name = 'runner:onelist:ldata['+str(e_1.number)+']:name' e_2.number = 2 e_2.name = 'runner:onelist:ldata['+str(e_2.number)+']:name' r_1.one_list.ldata.extend([e_1, e_2]) self.crud.update(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(r_1, r_2) # DELETE r_1 = ysanity.Runner() self.crud.delete(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_1) self.assertEqual(r_2, None)
def test_execute_rpc_invalid_1(self): runner = ysanity.Runner() runner.one.number = 1 runner.one.name = 'runner:one:name' edit_rpc = ietf_netconf.EditConfigRpc() edit_rpc.input.target.candidate = Empty() edit_rpc.input.config = runner try: op = self.executor.execute_rpc(None, edit_rpc) except YPYServiceError as err: expected_msg = "'provider' and 'rpc' cannot be None" self.assertEqual(err.message, expected_msg) else: raise Exception('YPYServiceError not raised')
def test_get_config_invalid_1(self): try: from ydk.services import Datastore runner = self._create_runner() get_filter = ysanity.Runner() op = self.netconf_service.edit_config(self.ncc, Datastore.candidate, runner) result = self.netconf_service.get_config(self.ncc, None, get_filter) except YPYServiceError as err: expected_msg = "'source' cannot be None" self.assertEqual(err.message, expected_msg) else: raise Exception('YPYServiceError not raised')
def test_two_level_pos(self): # READ r_1 = ysanity.Runner() r_1.two.number, r_1.two.name, r_1.two.sub1.number = 2, 'runner:two:name', 21 self.crud.create(self.ncc, r_1) r_2 = ysanity.Runner() r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(r_1, r_2) # UPDATE r_1, r_2 = ysanity.Runner(), ysanity.Runner() r_1.two.number, r_1.two.name, r_1.two.sub1.number = 20, 'runner/two/name', 210 self.crud.update(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(r_1, r_2) # DELETE r_1 = ysanity.Runner() self.crud.delete(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_1) self.assertEqual(r_2, None)
def test_boolean(self): runner = self._create_runner() runner.ytypes.built_in_t.bool_value = True self.crud.create(self.ncc, runner) # Read into Runner2 runner1 = ysanity.Runner() runner1 = self.crud.read(self.ncc, runner1) # Compare runners result = is_equal(runner, runner1) self.assertEqual(result, True) runner = self._create_runner() runner.ytypes.built_in_t.bool_value = False self.crud.update(self.ncc, runner) # Read into Runner2 runner1 = ysanity.Runner() runner1 = self.crud.read(self.ncc, runner1) # Compare runners result = is_equal(runner, runner1) self.assertEqual(result, True)
def test_execute_rpc_invalid_1(self): runner = ysanity.Runner() runner.ydktest_sanity_one.number = 1 runner.ydktest_sanity_one.name = 'runner:one:name' edit_rpc = ietf_netconf.EditConfig() edit_rpc.input.target.candidate = Empty() runner_xml = self.codec.encode(self.codec_provider, runner) edit_rpc.input.config = runner_xml try: op = self.executor.execute_rpc(None, edit_rpc) except YServiceError as err: expected_msg = "provider and entity cannot be None" self.assertEqual(err.message, expected_msg) else: raise Exception('YServiceError not raised')
def test_read_on_ref_list(self): r_1 = ysanity.Runner.OneList() l_1, l_2 = ysanity.Runner.OneList.Ldata( ), ysanity.Runner.OneList.Ldata() l_1.number, l_2.number = 1, 2 r_1.ldata.extend([l_1, l_2]) self.crud.create(self.ncc, r_1) r_2 = ysanity.Runner() r_2.one_list.ldata.yfilter = YFilter.read runner_read = self.crud.read(self.ncc, r_2) self.assertEqual(runner_read.one_list.ldata[0].number, r_1.ldata[0].number) self.assertEqual(runner_read.one_list.ldata[1].number, r_1.ldata[1].number)
def test_get_config_invalid_2(self): try: runner = self._create_runner() get_filter = ysanity.Runner() self.netconf_service.edit_config(self.ncc, Datastore.candidate, runner) result = self.netconf_service.get_config(self.ncc, Datastore.candidate, get_filter, with_defaults_option=1) except TypeError as err: expected_msg = "get_config() got an unexpected keyword argument 'with_defaults_option'" self.assertEqual(err.args[0], expected_msg) else: raise Exception('TypeError not raised')
def test_bits_leaflist(self): # User needs to append Bits instance manually to bits leaflist. runner = self._create_runner() bits_0 = runner.ytypes.built_in_t.BitsLlist_Bits() bits_1 = runner.ytypes.built_in_t.BitsLlist_Bits() bits_0['disable-nagle'] = True bits_1['auto-sense-speed'] = True runner.ytypes.built_in_t.bits_llist.extend([bits_0, bits_1]) self.crud.create(self.ncc, runner) # Read into Runner1 runner1 = ysanity.Runner() runner1 = self.crud.read(self.ncc, runner1) # Compare runners result = is_equal(runner, runner1) self.assertEqual(result, True)
def test_edit_commit_get(self): one = ysanity.Runner.One() one.number = 1 one.name = 'runner-one-name' op = self.netconf_service.edit_config(self.ncc, Datastore.candidate, one) self.assertEqual(True, op) get_filter = ysanity.Runner().One() one_result = self.netconf_service.get_config(self.ncc, Datastore.candidate, get_filter) self.assertEqual(one, one_result) op = self.netconf_service.commit(self.ncc) self.assertEqual(True, op) one_result = self.netconf_service.get(self.ncc, get_filter) self.assertEqual(one, one_result)
def test_boolean(self): runner = self._create_runner() runner.ytypes.built_in_t.bool_value = YdkEnumTestEnum.NONE self.crud.create(self.ncc, runner) # Read into Runner2 runner1 = ysanity.Runner() runner1 = self.crud.read(self.ncc, runner1) # Compare runners result = is_equal(runner, runner1) self.assertEqual(result, True) runner = self._create_runner() runner.ytypes.built_in_t.bool_value = False self.assertRaises(YPYDataValidationError, self.crud.update, self.ncc, runner)
def test_get_config_invalid_2(self): try: from ydk.services import Datastore runner = self._create_runner() get_filter = ysanity.Runner() op = self.netconf_service.edit_config(self.ncc, Datastore.candidate, runner) result = self.netconf_service.get_config(self.ncc, Datastore.candidate, get_filter, with_defaults_option=1) except YPYServiceError as err: expected_msg = "optional arg 'with_defaults_option' must be of type ietf_netconf_with_defaults.WithDefaultsModeEnum" self.assertEqual(err.message, expected_msg) else: raise Exception('YPYServiceError not raised')
def test_ylist_runner_two_key_list(self): runner = ysanity.Runner() l_1, l_2 = ysanity.Runner.TwoKeyList(), ysanity.Runner.TwoKeyList() l_1.first, l_2.first = 'f1', 'f2' l_1.second, l_2.second = 11, 22 runner.two_key_list.extend([l_1, l_2]) ldata_list = runner.two_key_list ldata_keys = ldata_list.keys() self.assertEqual(ldata_keys, [('f1', 11), ('f2', 22)]) for lkey in ldata_keys: ldata = ldata_list[lkey] self.assertNotEqual(ldata, None) self.assertEqual(ldata_list[('f1', 11)], l_1) self.assertEqual(ldata_list[('f2', 22)], l_2)
def setUp(self): # start a brand new session for every single test case # so test_close_session_rpc will not interfere with other test cases # self.ncc = NetconfServiceProvider('127.0.0.1', 'admin', 'admin', 12022) self.ncc = NetconfServiceProvider( self.hostname, self.username, self.password, self.port, self.protocol, self.on_demand, self.common_cache, self.timeout) from ydk.services import CRUDService crud = CRUDService() runner = ysanity.Runner() crud.delete(self.ncc, runner)
def test_read_on_leaf(self): one = ysanity.Runner.One() one.number, one.name = 1, 'runner:one:name' self.crud.create(self.ncc, one) r = ysanity.Runner() one_filter = r.one one_filter.name = YFilter.read one_filter.number = YFilter.read one_read = self.crud.read(self.ncc, one_filter) self.assertIsNotNone(one_read) self.assertEqual(one, one_read) # no such value, will return empty data one_filter = ysanity.Runner.One() one_filter.number = 2 one_read = self.crud.read(self.ncc, one_filter) self.assertIsNone(one_read)
def test_filter_list(self): runner = ysanity.Runner() native = ysanity.Native() read_filter = Filter(runner, native) self.assertEqual(read_filter.keys(), ['ydktest-sanity:runner', 'ydktest-sanity:native']) all_entities = read_filter.entities() self.assertEqual(format(all_entities[0]), 'ydk.models.ydktest.ydktest_sanity.Runner') self.assertEqual(format(all_entities[1]), 'ydk.models.ydktest.ydktest_sanity.Native') self.assertEqual(format(read_filter[runner]), 'ydk.models.ydktest.ydktest_sanity.Runner') self.assertEqual(format(read_filter[runner.path()]), 'ydk.models.ydktest.ydktest_sanity.Runner') read_filter.clear()
def test_config_add_del(self): runner = ysanity.Runner() native = ysanity.Native() config = Config() config.append(runner) self.assertEqual(len(config), 1) self.assertEqual(format(config), "Entities in Config: ['ydk.models.ydktest.ydktest_sanity.Runner']") config.append(native) self.assertEqual(len(config), 2) self.assertEqual(config.has_key(runner.path()), True) self.assertEqual(format(config), "Entities in Config: ['ydk.models.ydktest.ydktest_sanity.Runner', 'ydk.models.ydktest.ydktest_sanity.Native']") del config[native.path()] self.assertEqual(len(config), 1) self.assertEqual(config.has_key(native.path()), False) del config[runner] self.assertEqual(len(config), 0)
def test_init_delete(self): runner = ysanity.Runner() native = ysanity.Native() anydata = Config(runner) deleted = anydata.pop(0) self.assertEqual(deleted.__class__.__name__, "Runner") anydata = Config() anydata.append([runner, native]) deleted = anydata.pop('ydktest-sanity:native') self.assertEqual(len(anydata), 1) self.assertEqual(deleted.__class__.__name__, "Native") deleted = anydata.pop('ydktest-sanity:native') self.assertEqual(deleted, None) deleted = anydata.pop(runner) self.assertEqual(deleted.__class__.__name__, "Runner")
def _get_runner_entity(self): r_1 = ysanity.Runner() e_1, e_2 = ysanity.Runner.TwoList.Ldata(), ysanity.Runner.TwoList.Ldata() e_11, e_12 = ysanity.Runner.TwoList.Ldata.Subl1(), ysanity.Runner.TwoList.Ldata.Subl1() e_1.number = 21 e_1.name = 'runner:twolist:ldata[' + str(e_1.number) + ']:name' e_11.number = 211 e_11.name = 'runner:twolist:ldata[' + str(e_1.number) + ']:subl1[' + str(e_11.number) + ']:name' e_12.number = 212 e_12.name = 'runner:twolist:ldata[' + str(e_1.number) + ']:subl1[' + str(e_12.number) + ']:name' e_1.subl1.extend([e_11, e_12]) e_21, e_22 = ysanity.Runner.TwoList.Ldata.Subl1(), ysanity.Runner.TwoList.Ldata.Subl1() e_2.number = 22 e_2.name = 'runner:twolist:ldata[' + str(e_2.number) + ']:name' e_21.number = 221 e_21.name = 'runner:twolist:ldata[' + str(e_2.number) + ']:subl1[' + str(e_21.number) + ']:name' e_22.number = 222 e_22.name = 'runner:twolist:ldata[' + str(e_2.number) + ']:subl1[' + str(e_22.number) + ']:name' e_2.subl1.extend([e_21, e_22]) r_1.two_list.ldata.extend([e_1, e_2]) return r_1
def test_crud_update_invalid_1(self): try: runner = self._create_runner() runner.ytypes.built_in_t.bool_value = True self.crud.create(self.ncc, runner) # Read into Runner2 runner1 = ysanity.Runner() runner1 = self.crud.read(self.ncc, runner1) # Compare runners result = is_equal(runner, runner1) self.assertEqual(result, True) runner = self._create_runner() runner.ytypes.built_in_t.bool_value = False self.crud.update(None, runner) except YPYServiceError as err: expected_msg = "'provider' and 'entity' cannot be None" self.assertEqual(err.message, expected_msg) else: raise Exception('YPYServiceError not Raised')
def test_execute_get_config_rpc(self): get_config_rpc = ietf_netconf.GetConfigRpc() get_config_rpc.input.source.candidate = Empty() initial_candidate_data = self.executor.execute_rpc( self.ncc, get_config_rpc) runner = ysanity.Runner() runner.two.number = 2 runner.two.name = 'runner:two:name' edit_rpc = ietf_netconf.EditConfigRpc() edit_rpc.input.target.candidate = Empty() edit_rpc.input.config = runner op = self.executor.execute_rpc(self.ncc, edit_rpc) self.assertIn('ok', op) final_candidate_data = self.executor.execute_rpc( self.ncc, get_config_rpc) self.assertNotEqual(initial_candidate_data, final_candidate_data) self.assertNotIn(runner.two.name, initial_candidate_data) self.assertIn(runner.two.name, final_candidate_data)
def test_passive_interface(self): ospf = ysanity.Runner.YdktestSanityOne.Ospf() ospf.id = 22 ospf.passive_interface.interface = "xyz" test = ysanity.Runner.YdktestSanityOne.Ospf.Test() test.name = "abc" ospf.test.append(test) op = self.netconf_service.edit_config(self.ncc, Datastore.candidate, ospf) self.assertEqual(True, op) ospf_filter = ysanity.Runner().YdktestSanityOne().Ospf() ospf_filter.id = 22 ospf_result = self.netconf_service.get_config(self.ncc, Datastore.candidate, ospf_filter) self.assertIsNotNone(ospf_result) self.assertEqual(ospf, ospf_result) op = self.netconf_service.discard_changes(self.ncc) self.assertEqual(True, op)
def test_delete_on_list(self): runner_create = ysanity.Runner() runner_create.ydktest_sanity_one.name = 'one' foo = ysanity.Runner.OneList.Ldata() bar = ysanity.Runner.OneList.Ldata() foo.number = 1 foo.name = 'foo' bar.number = 2 bar.name = 'bar' runner_create.one_list.ldata.extend([foo, bar]) self.crud.create(self.ncc, runner_create) runner_update = self.read_from_empty_filter() runner_update.one_list.ldata.yfilter = YFilter.delete self.crud.update(self.ncc, runner_update) runner_read = self.read_from_empty_filter() runner_compare = runner_create runner_compare.one_list.ldata.pop() runner_compare.one_list.ldata.pop() self.assertEqual(runner_compare, runner_read)