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_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) 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 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 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 range(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 range(op_num): val = sr.Val("Leaf", sr.SR_STRING_T) sess.set_item(xpath, val) sess.delete_item(xpath) return 1 * 3 * 2
def createDataTreeLargeIETFinterfacesModule(count, datastore): """ Add data to ietf-interfaces. """ conn = sr.Connection("load test") 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.commit()
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_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()
def test_notify_changes_in_multiple_modules(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/address") 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.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) srd.add_step(srd.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) 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.waitTimeoutStep, 0.4) 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.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" ]]) 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()
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()
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)
#!/usr/bin/env python3 import libsysrepoPython3 as sr import sys from time import sleep sleep(0.1) # wait for test to get into loop conn = sr.Connection("asynch_change.py") sess = sr.Session(conn, sr.SR_DS_RUNNING) action = sys.argv[1] if action == "create_available_module_with_instance": sess.set_item("/nemea-test-1:supervisor/available-module[name='m5']/path", sr.Val("/m1path")) sess.set_item( "/nemea-test-1:supervisor/available-module[name='m5']/description", sr.Val("lorem ipsum")) sess.set_item( "/nemea-test-1:supervisor/available-module[name='m5']/trap-monitorable", sr.Val(True)) sess.set_item( "/nemea-test-1:supervisor/available-module[name='m5']/is-sysrepo-ready", sr.Val(False)) sess.set_item( "/nemea-test-1:supervisor/available-module[name='m5']/trap-ifces-cli", sr.Val(False)) sess.set_item("/nemea-test-1:supervisor/instance[name='i5']/enabled", sr.Val(False)) sess.set_item("/nemea-test-1:supervisor/instance[name='i5']/module-ref", sr.Val('m5'))