def setUp(self): if not TestModule.create_referenced_data_module(): self.remove_modules(self) self.skipTest(self, "Test environment is not clean!") print("Environment is not clean!") return if not TestModule.create_test_module(): self.remove_modules(self) self.skipTest(self, "Test environment is not clean!") print("Environment is not clean!") return conn = sr.Connection(sr.SR_CONN_DEFAULT) session = sr.Session(conn, sr.SR_DS_STARTUP) session.delete_item("/test-module:user[name='A']") session.delete_item("/test-module:user[name='B']") session.delete_item("/test-module:user[name='C']") session.delete_item("/test-module:user[name='D']") session.apply_changes() session.set_item("/test-module:user[name='A']", sr.Val(None, sr.SR_LIST_T)) session.set_item("/test-module:user[name='B']", sr.Val(None, sr.SR_LIST_T)) session.set_item("/test-module:user[name='C']", sr.Val(None, sr.SR_LIST_T)) session.set_item("/test-module:user[name='D']", sr.Val(None, sr.SR_LIST_T)) session.apply_changes() session.session_stop() conn = None
def set(self, xpath, value, valtype=10, nodetype=4): """ Set an individual item by XPATH. e.g. / path/to/item It is required to provide the value and the type of the field in most cases. In the case of Decimal64 we cannot use a value type v=sr.Val(2.344) """ self.log.trace('SET: %s => %s (%s)' % (xpath, value, valtype)) if valtype: valtype = self.SYSREPO_DATA_ABSTRACTION_MAPPING[valtype] elif nodetype: valtype = self.SYSREPO_NODE_MAPPING[nodetype] self.dirty = True if valtype in (10, 22): valtype = None if valtype == 5: value = None if valtype: v = sr.Val(value, valtype) else: v = sr.Val(value) try: self.session.set_item(xpath, v) return value except RuntimeError as err: self._handle_error(xpath, err)
def test_delete_default_node(self): tm = TestManager() tester = SysrepoTester("Tester", sr.SR_DS_RUNNING, False) subscriber = NotificationTester("Subscriber") tester.add_step(tester.waitStep) subscriber.add_step(subscriber.subscribeStep, "ietf-interfaces", "/ietf-interfaces:interfaces") tester.add_step( tester.setItemStep, "/ietf-interfaces:interfaces/interface[name='eth0']/type", sr.Val("iana-if-type:ethernetCsmacd", sr.SR_IDENTITYREF_T)) subscriber.add_step(subscriber.waitStep) tester.add_step( tester.setItemStep, "/ietf-interfaces:interfaces/interface[name='eth0']/ietf-ip:ipv4/enabled", sr.Val(False, sr.SR_BOOL_T)) subscriber.add_step(subscriber.waitStep) tester.add_step(tester.commitStep) subscriber.add_step(subscriber.waitStep) tester.add_step( tester.deleteItemStep, "/ietf-interfaces:interfaces/interface[name='eth0']/ietf-ip:ipv4/enabled" ) subscriber.add_step(subscriber.waitStep) tester.add_step(tester.commitStep) subscriber.add_step(subscriber.waitStep) tester.add_step(tester.waitStep) subscriber.add_step(subscriber.checkNotificationStep, [[ "MODIFIED", "/ietf-interfaces:interfaces/interface[name='eth0']/ietf-ip:ipv4/forwarding" ]]) tester.add_step(tester.waitStep) subscriber.add_step(subscriber.cancelSubscriptionStep) tester.add_step(tester.stopSession) subscriber.add_step(subscriber.stopSession) tester.add_step(tester.disconnect) subscriber.add_step(subscriber.disconnect) tm.add_tester(tester) tm.add_tester(subscriber) tm.run()
def perf_set_delete_100_test(state, op_num, items): conn = state["connection"] assert conn is not None, "Unable to get connection." sess = sr.Session(conn, state['datastore']) assert sess is not None, "Unable to get session." xpath = "/example-module:container/list[key1='set_del'][key2='set_1']/leaf" sess.apply_changes() for i in range(op_num): sess.apply_changes() for j in range(100): xpath = "/example-module:container/list[key1='set_del'][key2='set_" + str( j) + "']/leaf" val = sr.Val("Leaf", sr.SR_STRING_T) sess.set_item(xpath, val) sess.apply_changes() for j in range(100): xpath = "/example-module:container/list[key1='set_del'][key2='set_" + str( j) + "']/leaf" sess.delete_item(xpath) sess.apply_changes() return 100 * 1 * 3 * 2
def create_example_module(): connection = sr.Connection(sr.SR_CONN_DEFAULT) try: connection.install_module( os.environ['TESTS_DIR'] + "/files/example-module.yang", os.environ['TESTS_DIR'] + "/files", []) except Exception as e: print(e) connection = None return False connection = None try: connection = sr.Connection(sr.SR_CONN_DEFAULT) session = sr.Session(connection, sr.SR_DS_STARTUP) delete_all_items_example(session) v = sr.Val("Leaf value", sr.SR_STRING_T) session.set_item( "/example-module:container/list[key1='key1'][key2='key2']/leaf", v) session.apply_changes() session.session_stop() connection = None return True except Exception as e: print(e) connection = None return False
def test_set_item(self): xpath = "/example-module:container/list[key1='abc'][key2='def']/leaf" v = sr.Val("Hey hou", sr.SR_STRING_T) self.session.set_item(xpath, v) self.session.apply_changes() new_value = self.session.get_item(xpath) self.assertEqual(new_value.type(), sr.SR_STRING_T) self.assertEqual(new_value.data().get_string(), v.data().get_string())
def create_example_module(): connection = sr.Connection("test-module") session = sr.Session(connection, sr.SR_DS_STARTUP) session.delete_item("/example-module:*") v = sr.Val("Leaf value", sr.SR_STRING_T) session.set_item("/example-module:container/list[key1='key1'][key2='key2']/leaf", v) session.commit()
def test_delete_item(self): lists = ["/test-module:user[name='A']", "/test-module:user[name='B']", "/test-module:user[name='C']" ] v = sr.Val("", sr.SR_STRING_T) for l in lists: self.session.set_item(l+'/type', v) self.session.set_item(l+'/full-name', v) # set_item(None...) items = self.session.get_items("/test-module:user") self.assertEqual(len(lists), items.val_cnt()) self.session.delete_item("/test-module:user")
def setUp(self): TestModule.create_referenced_data_module() TestModule.create_test_module() conn = sr.Connection(sr.SR_CONN_DEFAULT) session = sr.Session(conn, sr.SR_DS_STARTUP) session.delete_item("/test-module:user[name='A']") session.delete_item("/test-module:user[name='B']") session.delete_item("/test-module:user[name='C']") session.delete_item("/test-module:user[name='D']") session.apply_changes() session.set_item("/test-module:user[name='A']", sr.Val(None, sr.SR_LIST_T)) session.set_item("/test-module:user[name='B']", sr.Val(None, sr.SR_LIST_T)) session.set_item("/test-module:user[name='C']", sr.Val(None, sr.SR_LIST_T)) session.set_item("/test-module:user[name='D']", sr.Val(None, sr.SR_LIST_T)) session.apply_changes() session.session_stop() conn = None
def createDataTreeLargeExampleModule(count, datastore): """ Add data to example-module. """ conn = sr.Connection("load test") sess = sr.Session(conn, datastore) subs = sr.Subscribe(sess) for i in xrange(count): xpath = "/example-module:container/list[key1='key" + str(i) + "'][key2='key" + str(i) +"']/leaf" val = sr.Val("leaf" + str(i), sr.SR_STRING_T) sess.set_item(xpath, val) sess.commit()
def perf_set_delete_test(state, op_num, items): conn = state["connection"] assert conn is not None, "Unable to get connection." sess = sr.Session(conn, state['datastore']) assert sess is not None, "Unable to get session." xpath = "/example-module:container/list[key1='set_del'][key2='set_1']/leaf" for i in xrange(op_num): val = sr.Val("Leaf", sr.SR_STRING_T) sess.set_item(xpath, val) sess.delete_item(xpath) return 1 * 3 * 2
def handle_set_state(conn, key_id, state_str): sess = sr.Session(conn) try: state = sr.Val(state_str, sr.SR_ENUM_T) sess.set_item(xpath_of(key_id, 'current-status'), state) on_enter = STATE_MACHINE[state_str].get('on_enter', None) if on_enter: # noinspection PyCallingNonCallable on_enter(sess, key_id) sess.commit() delay, next_state_str = STATE_MACHINE[state_str].get( 'timed_transition', [0, None]) if delay: Timer(delay, handle_set_state, (conn, key_id, next_state_str)).start() finally: sess.session_stop()
def test_move_item(self): lists = ["/test-module:user[name='A']", "/test-module:user[name='B']", "/test-module:user[name='C']" ] for l in lists: v = sr.Val(None, sr.SR_LIST_T) self.session.set_item(l, v) self.session.apply_changes() items = self.session.get_items("/test-module:user") for i in range(0, len(lists)): self.assertEqual(items.val(i).xpath(), lists[i]) self.session.move_item(lists[1], sr.SR_MOVE_FIRST) lists.insert(0, lists.pop(1)) items = self.session.get_items("/test-module:user") for i in range(0, len(lists)): self.assertEqual(items.val(i).xpath(), lists[i])
def perf_commit_test(state, op_num, items): conn = state["connection"] assert conn is not None, "Unable to get connection." sess = sr.Session(conn, state['datastore']) assert sess is not None, "Unable to get session." xpath = "/example-module:container/list[key1='key0'][key2='key0']/leaf" sess.apply_changes() for i in range(op_num): if (i % 2 == 0): val = sr.Val("Leaf", sr.SR_STRING_T) sess.set_item(xpath, val) else: sess.delete_item(xpath) sess.apply_changes() return 1
def try_change_state(conn, key_id, state_str): sess = sr.Session(conn) try: try: sess.lock_module(YANG_MODULE_NAME) except RuntimeError: logger.warning(f"Retrying after {PAUSE_TO_LOCK}s") Timer(PAUSE_TO_LOCK, try_change_state, (conn, key_id, state_str)).start() return try: state = sr.Val(state_str, sr.SR_ENUM_T) sess.set_item(xpath_of(key_id, 'current-status'), state) on_enter = STATE_MACHINE[state_str].get('on_enter', None) if callable(on_enter): on_enter(sess, key_id) sess.commit() finally: sess.unlock_module(YANG_MODULE_NAME) delay, next_state_str = STATE_MACHINE[state_str].get('timed_transition', [0, None]) if delay: Timer(delay, try_change_state, (conn, key_id, next_state_str)).start() finally: sess.session_stop()
def createDataTreeLargeIETFinterfacesModule(count, datastore): """ Add data to ietf-interfaces. """ conn = sr.Connection(sr.SR_CONN_DEFAULT) sess = sr.Session(conn, datastore) subs = sr.Subscribe(sess) for i in range(count): xpath = "/ietf-interfaces:interfaces/interface[name='eth" + str( i) + "']" xpath_ip = xpath + "/ietf-ip:ipv4/address[ip='192.168.1." + str( i) + "]" x_name = xpath + "/name" x_type = xpath + "/type" x_desc = xpath + "/description" x_enabled = xpath + "/enabled" x_ipv4_enabled = xpath + "/ietf-ip:ipv4/enabled" x_ipv4_mtu = xpath + "/ietf-ip:ipv4/mtu" x_ipv4_forward = xpath + "/ietf-ip:ipv4/forwarding" x_prefix_len = xpath_ip + "/prefix-length" val = sr.Val("Ethernet 0", sr.SR_STRING_T) sess.set_item(x_desc, val) val = sr.Val("iana-if-type:ethernetCsmacd", sr.SR_IDENTITYREF_T) sess.set_item(x_type, val) val = sr.Val(True, sr.SR_BOOL_T) sess.set_item(x_enabled, val) val = sr.Val(True, sr.SR_BOOL_T) sess.set_item(x_ipv4_enabled, val) val = sr.Val(1500, sr.SR_UINT16_T) sess.set_item(x_ipv4_mtu, val) val = sr.Val(False, sr.SR_BOOL_T) sess.set_item(x_ipv4_forward, val) sess.apply_changes()
def create_ietf_interfaces(): connection = sr.Connection(sr.SR_CONN_DEFAULT) session = sr.Session(connection, sr.SR_DS_STARTUP) delete_all_items_ietf(session) v = sr.Val("iana-if-type:ethernetCsmacd", sr.SR_IDENTITYREF_T) session.set_item("/ietf-interfaces:interfaces/interface[name='eth0']/type", v) v = sr.Val("Ethernet 0", sr.SR_STRING_T) session.set_item( "/ietf-interfaces:interfaces/interface[name='eth0']/description", v) v = sr.Val(True, sr.SR_BOOL_T) session.set_item( "/ietf-interfaces:interfaces/interface[name='eth0']/enabled", v) v = sr.Val(24, sr.SR_UINT8_T) session.set_item( "/ietf-interfaces:interfaces/interface[name='eth0']/ietf-ip:ipv4/address[ip='192.168.2.100']/prefix-length", v) v = sr.Val(True, sr.SR_BOOL_T) session.set_item( "/ietf-interfaces:interfaces/interface[name='eth0']/ietf-ip:ipv4/enabled", v) v = sr.Val(1500, sr.SR_UINT16_T) session.set_item( "/ietf-interfaces:interfaces/interface[name='eth0']/ietf-ip:ipv4/mtu", v) v = sr.Val("iana-if-type:ethernetCsmacd", sr.SR_IDENTITYREF_T) session.set_item("/ietf-interfaces:interfaces/interface[name='eth1']/type", v) v = sr.Val("Ethernet 1", sr.SR_STRING_T) session.set_item( "/ietf-interfaces:interfaces/interface[name='eth1']/description", v) v = sr.Val(True, sr.SR_BOOL_T) session.set_item( "/ietf-interfaces:interfaces/interface[name='eth1']/ietf-ip:ipv4/enabled", v) v = sr.Val(1500, sr.SR_UINT16_T) session.set_item( "/ietf-interfaces:interfaces/interface[name='eth1']/ietf-ip:ipv4/mtu", v) v = sr.Val("iana-if-type:ethernetCsmacd", sr.SR_IDENTITYREF_T) session.set_item( "/ietf-interfaces:interfaces/interface[name='gigaeth0']/type", v) v = sr.Val("GigabitEthernet 0", sr.SR_STRING_T) session.set_item( "/ietf-interfaces:interfaces/interface[name='gigaeth0']/description", v) v = sr.Val(False, sr.SR_BOOL_T) session.set_item( "/ietf-interfaces:interfaces/interface[name='gigaeth0']/enabled", v) session.apply_changes() session.session_stop() connection = None
def create_test_module(): connection = sr.Connection(sr.SR_CONN_DEFAULT) try: connection.install_module( os.environ['TESTS_DIR'] + "/files/test-module.yang", os.environ['TESTS_DIR'] + "/files", []) except Exception as e: print(e) connection = None connection = sr.Connection(sr.SR_CONN_DEFAULT) session = sr.Session(connection, sr.SR_DS_STARTUP) delete_all_items_test(session) v = sr.Val(XP_TEST_MODULE_ENUM_VALUE, sr.SR_ENUM_T) session.set_item(XP_TEST_MODULE_ENUM, v) v = sr.Val(XP_TEST_MODULE_RAW_VALUE, sr.SR_BINARY_T) session.set_item(XP_TEST_MODULE_RAW, v) v = sr.Val(XP_TEST_MODULE_BITS_VALUE, sr.SR_BITS_T) session.set_item(XP_TEST_MODULE_BITS, v) v = sr.Val(XP_TEST_MODULE_BOOL_VALUE_T, sr.SR_BOOL_T) session.set_item(XP_TEST_MODULE_BOOL, v) v = sr.Val(format(XP_TEST_MODULE_DEC64_VALUE_T, '.2f')) session.set_item(XP_TEST_MODULE_DEC64, v) v = sr.Val(None, sr.SR_LEAF_EMPTY_T) session.set_item(XP_TEST_MODULE_EMPTY, v) v = sr.Val(XP_TEST_MODULE_IDREF_VALUE, sr.SR_IDENTITYREF_T) session.set_item(XP_TEST_MODULE_IDREF, v) v = sr.Val(XP_TEST_MODULE_STRING_VALUE, sr.SR_STRING_T) session.set_item(XP_TEST_MODULE_STRING, v) v = sr.Val(XP_TEST_MODULE_INT8_VALUE_T, sr.SR_INT8_T) session.set_item(XP_TEST_MODULE_INT8, v) v = sr.Val(XP_TEST_MODULE_INT16_VALUE_T, sr.SR_INT16_T) session.set_item(XP_TEST_MODULE_INT16, v) v = sr.Val(XP_TEST_MODULE_INT32_VALUE_T, sr.SR_INT32_T) session.set_item(XP_TEST_MODULE_INT32, v) v = sr.Val(XP_TEST_MODULE_INT64_VALUE_T, sr.SR_INT64_T) session.set_item(XP_TEST_MODULE_INT64, v) v = sr.Val(XP_TEST_MODULE_UINT8_VALUE_T, sr.SR_UINT8_T) session.set_item(XP_TEST_MODULE_UINT8, v) v = sr.Val(XP_TEST_MODULE_UINT16_VALUE_T, sr.SR_UINT16_T) session.set_item(XP_TEST_MODULE_UINT16, v) v = sr.Val(XP_TEST_MODULE_UINT32_VALUE_T, sr.SR_UINT32_T) session.set_item(XP_TEST_MODULE_UINT32, v) v = sr.Val(XP_TEST_MODULE_UINT64_VALUE_T, sr.SR_UINT64_T) session.set_item(XP_TEST_MODULE_UINT64, v) for num in [1, 2, 42]: v = sr.Val(num, sr.SR_UINT8_T) session.set_item("/test-module:main/numbers", v) v = sr.Val(None, sr.SR_LIST_T) session.set_item("/test-module:list[key='k1']", v) v = sr.Val("id_1", sr.SR_IDENTITYREF_T) session.set_item("/test-module:list[key='k1']/id_ref", v) v = sr.Val(None, sr.SR_CONTAINER_PRESENCE_T) session.set_item("/test-module:list[key='k1']/wireless", v) v = sr.Val(None, sr.SR_LIST_T) session.set_item("/test-module:list[key='k2']", v) v = sr.Val("id_2", sr.SR_IDENTITYREF_T) session.set_item("/test-module:list[key='k2']/id_ref", v) session.apply_changes() session.session_stop() connection = None
def create_test_module(): connection = sr.Connection("test-module") session = sr.Session(connection, sr.SR_DS_STARTUP) session.delete_item("/test-module:*") v = sr.Val(XP_TEST_MODULE_ENUM_VALUE, sr.SR_ENUM_T) session.set_item(XP_TEST_MODULE_ENUM, v) v = sr.Val(XP_TEST_MODULE_RAW_VALUE, sr.SR_BINARY_T) session.set_item(XP_TEST_MODULE_RAW, v) v = sr.Val(XP_TEST_MODULE_BITS_VALUE, sr.SR_BITS_T) session.set_item(XP_TEST_MODULE_BITS, v) v = sr.Val(XP_TEST_MODULE_BOOL_VALUE_T, sr.SR_BOOL_T) session.set_item(XP_TEST_MODULE_BOOL, v) v = sr.Val(XP_TEST_MODULE_DEC64_VALUE_T) session.set_item(XP_TEST_MODULE_DEC64, v) v = sr.Val(None, sr.SR_LEAF_EMPTY_T) session.set_item(XP_TEST_MODULE_EMPTY, v) v = sr.Val(XP_TEST_MODULE_IDREF_VALUE, sr.SR_IDENTITYREF_T) session.set_item(XP_TEST_MODULE_IDREF, v) v = sr.Val(XP_TEST_MODULE_STRING_VALUE, sr.SR_STRING_T) session.set_item(XP_TEST_MODULE_STRING, v) v = sr.Val(XP_TEST_MODULE_INT8_VALUE_T, sr.SR_INT8_T) session.set_item(XP_TEST_MODULE_INT8, v) v = sr.Val(XP_TEST_MODULE_INT16_VALUE_T, sr.SR_INT16_T) session.set_item(XP_TEST_MODULE_INT16, v) v = sr.Val(XP_TEST_MODULE_INT32_VALUE_T, sr.SR_INT32_T) session.set_item(XP_TEST_MODULE_INT32, v) v = sr.Val(XP_TEST_MODULE_INT64_VALUE_T, sr.SR_INT64_T) session.set_item(XP_TEST_MODULE_INT64, v) v = sr.Val(XP_TEST_MODULE_UINT8_VALUE_T, sr.SR_UINT8_T) session.set_item(XP_TEST_MODULE_UINT8, v) v = sr.Val(XP_TEST_MODULE_UINT16_VALUE_T, sr.SR_UINT16_T) session.set_item(XP_TEST_MODULE_UINT16, v) v = sr.Val(XP_TEST_MODULE_UINT32_VALUE_T, sr.SR_UINT32_T) session.set_item(XP_TEST_MODULE_UINT32, v) v = sr.Val(XP_TEST_MODULE_UINT64_VALUE_T, sr.SR_UINT64_T) session.set_item(XP_TEST_MODULE_UINT64, v) for num in [1, 2, 42]: v = sr.Val(num, sr.SR_UINT8_T) session.set_item("/test-module:main/numbers", v) session.set_item("/test-module:list[key='k1']", None) v = sr.Val("id_1", sr.SR_IDENTITYREF_T) session.set_item("/test-module:list[key='k1']/id_ref", v) v = sr.Val(None, sr.SR_CONTAINER_PRESENCE_T) session.set_item("/test-module:list[key='k1']/wireless", v) session.set_item("/test-module:list[key='k2']", None) v = sr.Val("id_2", sr.SR_IDENTITYREF_T) session.set_item("/test-module:list[key='k2']/id_ref", v) session.commit()
def create_ietf_interfaces(): connection = sr.Connection("ietf-interfaces") session = sr.Session(connection, sr.SR_DS_STARTUP) session.delete_item("/ietf-interfaces:*") v = sr.Val("iana-if-type:ethernetCsmacd", sr.SR_IDENTITYREF_T) session.set_item("/ietf-interfaces:interfaces/interface[name='eth0']/type", v) v = sr.Val("Ethernet 0", sr.SR_STRING_T); session.set_item("/ietf-interfaces:interfaces/interface[name='eth0']/description", v) v = sr.Val(True, sr.SR_BOOL_T); session.set_item("/ietf-interfaces:interfaces/interface[name='eth0']/enabled", v) v = sr.Val(24, sr.SR_UINT8_T) session.set_item("/ietf-interfaces:interfaces/interface[name='eth0']/ietf-ip:ipv4/address[ip='192.168.2.100']/prefix-length", v) v = sr.Val(True, sr.SR_BOOL_T) session.set_item("/ietf-interfaces:interfaces/interface[name='eth0']/ietf-ip:ipv4/enabled", v) v = sr.Val(1500, sr.SR_UINT16_T) session.set_item("/ietf-interfaces:interfaces/interface[name='eth0']/ietf-ip:ipv4/mtu", v) v = sr.Val("iana-if-type:ethernetCsmacd", sr.SR_IDENTITYREF_T) session.set_item("/ietf-interfaces:interfaces/interface[name='eth1']/type", v) v = sr.Val("Ethernet 1", sr.SR_STRING_T); session.set_item("/ietf-interfaces:interfaces/interface[name='eth1']/description", v) v = sr.Val(True, sr.SR_BOOL_T) session.set_item("/ietf-interfaces:interfaces/interface[name='eth1']/ietf-ip:ipv4/enabled", v) v = sr.Val(1500, sr.SR_UINT16_T) session.set_item("/ietf-interfaces:interfaces/interface[name='eth1']/ietf-ip:ipv4/mtu", v) v = sr.Val("iana-if-type:ethernetCsmacd", sr.SR_IDENTITYREF_T) session.set_item("/ietf-interfaces:interfaces/interface[name='gigaeth0']/type", v) v = sr.Val("GigabitEthernet 0", sr.SR_STRING_T); session.set_item("/ietf-interfaces:interfaces/interface[name='gigaeth0']/description", v) v = sr.Val(False, sr.SR_BOOL_T); session.set_item("/ietf-interfaces:interfaces/interface[name='gigaeth0']/enabled", v) session.commit()
def test_notify_modify(self): tm = TestManager() srd = SysrepodDaemonTester("Srd") tester = SysrepoTester("Tester", sr.SR_DS_RUNNING, sr.SR_CONN_DAEMON_REQUIRED, False) subscriber = NotificationTester("Subscriber") subscriber2 = NotificationTester("Subscriber2") subscriber3 = NotificationTester("Subscriber3") srd.add_step(srd.startDaemonStep) tester.add_step(tester.waitStep) subscriber.add_step(subscriber.waitStep) subscriber2.add_step(subscriber2.waitStep) subscriber3.add_step(subscriber3.waitStep) srd.add_step(srd.waitStep) tester.add_step(tester.restartConnection) subscriber.add_step(subscriber.waitStep) subscriber2.add_step(subscriber2.waitStep) subscriber3.add_step(subscriber3.waitStep) srd.add_step(srd.waitStep) tester.add_step(tester.waitStep) subscriber.add_step(subscriber.subscribeStep, "/ietf-interfaces:interfaces") subscriber2.add_step(subscriber2.waitStep) subscriber3.add_step(subscriber3.subscribeStep, "/example-module:container") srd.add_step(srd.waitStep) tester.add_step(tester.waitStep) subscriber.add_step(subscriber.waitStep) subscriber2.add_step( subscriber2.subscribeStep, "/ietf-interfaces:interfaces/interface/ietf-ip:ipv4") subscriber3.add_step(subscriber3.waitStep) srd.add_step(srd.waitStep) tester.add_step( tester.setItemStep, "/ietf-interfaces:interfaces/interface[name='eth0']/ietf-ip:ipv4/enabled", sr.Val(False, sr.SR_BOOL_T)) subscriber.add_step(subscriber.waitStep) subscriber2.add_step(subscriber2.waitStep) subscriber3.add_step(subscriber3.waitStep) srd.add_step(srd.waitStep) tester.add_step(tester.commitStep) subscriber.add_step(subscriber.waitStep) subscriber2.add_step(subscriber2.waitStep) subscriber3.add_step(subscriber3.waitStep) srd.add_step(srd.waitStep) tester.add_step(tester.waitStep) subscriber.add_step(subscriber.waitTimeoutStep, 0.4) subscriber2.add_step(subscriber2.waitStep) subscriber3.add_step(subscriber3.waitStep) srd.add_step(srd.waitStep) tester.add_step(tester.waitStep) subscriber.add_step(subscriber.checkNotificationStep, [[ "MODIFIED", "/ietf-interfaces:interfaces/interface[name='eth0']/ietf-ip:ipv4/enabled" ]]) subscriber2.add_step(subscriber2.checkNotificationStep, [[ "MODIFIED", "/ietf-interfaces:interfaces/interface[name='eth0']/ietf-ip:ipv4/enabled" ]]) subscriber3.add_step(subscriber3.checkNoNotificationArrived) srd.add_step(srd.waitStep) tester.add_step(tester.waitStep) subscriber.add_step(subscriber.cancelSubscriptionStep) subscriber2.add_step(subscriber2.cancelSubscriptionStep) subscriber3.add_step(subscriber3.cancelSubscriptionStep) srd.add_step(srd.stopDaemonStep) tm.add_tester(srd) tm.add_tester(tester) tm.add_tester(subscriber) tm.add_tester(subscriber2) tm.add_tester(subscriber3) tm.run()
#!/usr/bin/env python3 import sysrepo as sr conn = sr.Connection("test-client") session = sr.Session(conn) # Set item val = sr.Val(True, sr.SR_BOOL_T) session.set_item('/oven:oven/turned-on', val) session.validate() session.commit() # Get Items session.get_items("/oven:oven/*") for val_num in range(vals.val_cnt()): val = vals.val(val_num) print(val.xpath()) print(val.type()) # to lookup at getting data. frmo val.data() # This crashes on ARMv7 - it's the oper call. session.get_items("/oven:*")
def test_validate(self): v = sr.Val(42, sr.SR_UINT8_T) self.session.set_item("/test-module:main/numbers", v)
def setItemStep(self): v = sr.Val(99, sr.SR_INT8_T) self.session.set_item("/test-module:main/i8", v)
def test_notify_modify(self): tm = TestManager() tester = SysrepoTester("Tester", sr.SR_DS_RUNNING, False) subscriber = NotificationTester("Subscriber") subscriber2 = NotificationTester("Subscriber2") subscriber3 = NotificationTester("Subscriber3") tester.add_step(tester.waitStep) subscriber.add_step(subscriber.subscribeStep, "ietf-interfaces", "/ietf-interfaces:interfaces") subscriber2.add_step(subscriber2.waitStep) subscriber3.add_step(subscriber3.subscribeStep, "example-module", "/example-module:container") tester.add_step(tester.waitStep) subscriber.add_step(subscriber.waitStep) subscriber2.add_step( subscriber2.subscribeStep, "ietf-interfaces", "/ietf-interfaces:interfaces/interface/ietf-ip:ipv4") subscriber3.add_step(subscriber3.waitStep) tester.add_step( tester.setItemStep, "/ietf-interfaces:interfaces/interface[name='eth0']/type", sr.Val("iana-if-type:ethernetCsmacd", sr.SR_IDENTITYREF_T)) subscriber.add_step(subscriber.waitStep) subscriber2.add_step(subscriber2.waitStep) subscriber3.add_step(subscriber3.waitStep) tester.add_step( tester.setItemStep, "/ietf-interfaces:interfaces/interface[name='eth0']/ietf-ip:ipv4/enabled", sr.Val(False, sr.SR_BOOL_T)) subscriber.add_step(subscriber.waitStep) subscriber2.add_step(subscriber2.waitStep) subscriber3.add_step(subscriber3.waitStep) tester.add_step(tester.commitStep) subscriber.add_step(subscriber.waitStep) subscriber2.add_step(subscriber2.waitStep) subscriber3.add_step(subscriber3.waitStep) tester.add_step(tester.waitStep) subscriber.add_step(subscriber.checkNotificationStep, [[ "MODIFIED", "/ietf-interfaces:interfaces/interface[name='eth0']/ietf-ip:ipv4/enabled" ]]) subscriber2.add_step(subscriber2.checkNotificationStep, [[ "MODIFIED", "/ietf-interfaces:interfaces/interface[name='eth0']/ietf-ip:ipv4/enabled" ]]) subscriber3.add_step(subscriber3.checkNoNotificationArrived) tester.add_step(tester.waitStep) subscriber.add_step(subscriber.cancelSubscriptionStep) subscriber2.add_step(subscriber2.cancelSubscriptionStep) subscriber3.add_step(subscriber3.cancelSubscriptionStep) tester.add_step(tester.stopSession) subscriber.add_step(subscriber.stopSession) subscriber2.add_step(subscriber2.stopSession) subscriber3.add_step(subscriber3.stopSession) tester.add_step(tester.disconnect) subscriber.add_step(subscriber.disconnect) subscriber2.add_step(subscriber2.disconnect) subscriber3.add_step(subscriber3.disconnect) tm.add_tester(tester) tm.add_tester(subscriber) tm.add_tester(subscriber2) tm.add_tester(subscriber3) tm.run()
def test_notify_changes_in_multiple_modules(self): tm = TestManager() tester = SysrepoTester("Tester", sr.SR_DS_RUNNING, False) subscriber = NotificationTester("Subscriber") subscriber2 = NotificationTester("Subscriber2") subscriber3 = NotificationTester("Subscriber3") tester.add_step(tester.waitStep) subscriber.add_step(subscriber.subscribeStep, "ietf-interfaces", "/ietf-interfaces:interfaces") subscriber2.add_step(subscriber2.waitStep) subscriber3.add_step(subscriber3.subscribeStep, "example-module", "/example-module:container") tester.add_step(tester.waitStep) subscriber.add_step(subscriber.waitStep) subscriber2.add_step( subscriber2.subscribeStep, "ietf-interfaces", "/ietf-interfaces:interfaces/interface/ietf-ip:ipv4/address") subscriber3.add_step(subscriber3.waitStep) tester.add_step( tester.setItemStep, "/ietf-interfaces:interfaces/interface[name='eth0']/ietf-ip:ipv4/enabled", sr.Val(False, sr.SR_BOOL_T)) subscriber.add_step(subscriber.waitStep) subscriber2.add_step(subscriber2.waitStep) subscriber3.add_step(subscriber3.waitStep) tester.add_step( tester.setItemStep, "/example-module:container/list[key1='abc'][key2='def']/leaf", sr.Val("new value", sr.SR_STRING_T)) subscriber.add_step(subscriber.waitStep) subscriber2.add_step(subscriber2.waitStep) subscriber3.add_step(subscriber3.waitStep) tester.add_step(tester.commitStep) subscriber.add_step(subscriber.waitStep) subscriber2.add_step(subscriber2.waitStep) subscriber3.add_step(subscriber3.waitStep) tester.add_step( tester.deleteItemStep, "/example-module:container/list[key1='key1'][key2='key2']/leaf") subscriber.add_step(subscriber.waitStep) subscriber2.add_step(subscriber2.waitStep) subscriber3.add_step(subscriber3.waitStep) tester.add_step(tester.commitStep) subscriber.add_step(subscriber.waitStep) subscriber2.add_step(subscriber2.waitStep) subscriber3.add_step(subscriber3.waitStep) tester.add_step(tester.waitStep) subscriber.add_step(subscriber.checkNotificationStep, [[ "MODIFIED", "/ietf-interfaces:interfaces/interface[name='eth0']/ietf-ip:ipv4/enabled" ]]) subscriber2.add_step(subscriber2.checkNoNotificationArrived) subscriber3.add_step( subscriber3.checkNotificationStep, [[ "DELETED", "/example-module:container/list[key1='key1'][key2='key2']/leaf" ], [ "CREATED", "/example-module:container/list[key1='abc'][key2='def']" ], [ "CREATED", "/example-module:container/list[key1='abc'][key2='def']/key1" ], [ "CREATED", "/example-module:container/list[key1='abc'][key2='def']/key2" ], [ "CREATED", "/example-module:container/list[key1='abc'][key2='def']/leaf" ]]) tester.add_step(tester.waitStep) subscriber.add_step(subscriber.cancelSubscriptionStep) subscriber2.add_step(subscriber2.cancelSubscriptionStep) subscriber3.add_step(subscriber3.cancelSubscriptionStep) tester.add_step(tester.stopSession) subscriber.add_step(subscriber.stopSession) subscriber2.add_step(subscriber2.stopSession) subscriber3.add_step(subscriber3.stopSession) tester.add_step(tester.disconnect) subscriber.add_step(subscriber.disconnect) subscriber2.add_step(subscriber2.disconnect) subscriber3.add_step(subscriber3.disconnect) tm.add_tester(tester) tm.add_tester(subscriber) tm.add_tester(subscriber2) tm.add_tester(subscriber3) tm.run()
def timestamper(sess, key_id): xpath = xpath_of(key_id, 'state-change-time') now = time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime()) state = sr.Val(now, sr.SR_STRING_T) sess.set_item(xpath, state)
def changeRunning(self): # Modify the running and apply v = sr.Val("in_running", sr.SR_STRING_T) self.session.set_item(TEST_PATH, v) self.commitStep()
def test_change_default_node(self): TestModule.create_ietf_interfaces() tm = TestManager() srd = SysrepodDaemonTester("Srd") tester = SysrepoTester("Tester", sr.SR_DS_RUNNING, sr.SR_CONN_DAEMON_REQUIRED, False) subscriber = NotificationTester("Subscriber") srd.add_step(srd.startDaemonStep) tester.add_step(tester.waitStep) subscriber.add_step(subscriber.waitStep) srd.add_step(srd.waitStep) tester.add_step(tester.restartConnection) subscriber.add_step(subscriber.waitStep) srd.add_step(srd.waitStep) tester.add_step(tester.waitStep) subscriber.add_step(subscriber.subscribeStep, "/ietf-interfaces:interfaces") srd.add_step(srd.waitStep) tester.add_step(tester.waitStep) subscriber.add_step(subscriber.waitStep) srd.add_step(srd.waitStep) tester.add_step(tester.waitStep) subscriber.add_step(subscriber.waitStep) srd.add_step(srd.waitStep) tester.add_step(tester.waitStep) subscriber.add_step(subscriber.waitStep) srd.add_step(srd.waitStep) tester.add_step( tester.setItemStep, "/ietf-interfaces:interfaces/interface[name='eth0']/ietf-ip:ipv4/forwarding", sr.Val(True, sr.SR_BOOL_T)) subscriber.add_step(subscriber.waitStep) srd.add_step(srd.waitStep) tester.add_step(tester.commitStep) subscriber.add_step(subscriber.waitStep) srd.add_step(srd.waitStep) tester.add_step(tester.waitTimeoutStep, 0.4) subscriber.add_step(subscriber.waitStep) srd.add_step(srd.waitStep) tester.add_step(tester.waitStep) #setting a leaf with default value -> MODIFIED subscriber.add_step(subscriber.checkNotificationStep, [[ "MODIFIED", "/ietf-interfaces:interfaces/interface[name='eth0']/ietf-ip:ipv4/forwarding" ]]) srd.add_step(srd.waitStep) tester.add_step(tester.waitStep) subscriber.add_step(subscriber.cancelSubscriptionStep) srd.add_step(srd.stopDaemonStep) tm.add_tester(srd) tm.add_tester(tester) tm.add_tester(subscriber) tm.run()