def test_get_node_by_ns(self): def get_ns_of_nodes(nodes): ns_list = set() for node in nodes: ns_list.add(node.nodeid.NamespaceIndex) return ns_list # incase other testss created nodes in unregistered namespace _idx_d = self.opc.register_namespace('dummy1') _idx_d = self.opc.register_namespace('dummy2') _idx_d = self.opc.register_namespace('dummy3') # create the test namespaces and vars idx_a = self.opc.register_namespace('a') idx_b = self.opc.register_namespace('b') idx_c = self.opc.register_namespace('c') o = self.opc.get_objects_node() _myvar2 = o.add_variable(idx_a, "MyBoolVar2", True) _myvar3 = o.add_variable(idx_b, "MyBoolVar3", True) _myvar4 = o.add_variable(idx_c, "MyBoolVar4", True) # the tests nodes = ua_utils.get_nodes_of_namespace( self.opc, namespaces=[idx_a, idx_b, idx_c]) self.assertEqual(len(nodes), 3) self.assertEqual(get_ns_of_nodes(nodes), set([idx_a, idx_b, idx_c])) nodes = ua_utils.get_nodes_of_namespace(self.opc, namespaces=[idx_a]) self.assertEqual(len(nodes), 1) self.assertEqual(get_ns_of_nodes(nodes), set([idx_a])) nodes = ua_utils.get_nodes_of_namespace(self.opc, namespaces=[idx_b]) self.assertEqual(len(nodes), 1) self.assertEqual(get_ns_of_nodes(nodes), set([idx_b])) nodes = ua_utils.get_nodes_of_namespace(self.opc, namespaces=['a']) self.assertEqual(len(nodes), 1) self.assertEqual(get_ns_of_nodes(nodes), set([idx_a])) nodes = ua_utils.get_nodes_of_namespace(self.opc, namespaces=['a', 'c']) self.assertEqual(len(nodes), 2) self.assertEqual(get_ns_of_nodes(nodes), set([idx_a, idx_c])) nodes = ua_utils.get_nodes_of_namespace(self.opc, namespaces='b') self.assertEqual(len(nodes), 1) self.assertEqual(get_ns_of_nodes(nodes), set([idx_b])) nodes = ua_utils.get_nodes_of_namespace(self.opc, namespaces=idx_b) self.assertEqual(len(nodes), 1) self.assertEqual(get_ns_of_nodes(nodes), set([idx_b])) self.assertRaises(ValueError, ua_utils.get_nodes_of_namespace, self.opc, namespaces='non_existing_ns')
def test_get_node_by_ns(self): def get_ns_of_nodes(nodes): ns_list = set() for node in nodes: ns_list.add(node.nodeid.NamespaceIndex) return ns_list # incase other testss created nodes in unregistered namespace _idx_d = self.opc.register_namespace('dummy1') _idx_d = self.opc.register_namespace('dummy2') _idx_d = self.opc.register_namespace('dummy3') # create the test namespaces and vars idx_a = self.opc.register_namespace('a') idx_b = self.opc.register_namespace('b') idx_c = self.opc.register_namespace('c') o = self.opc.get_objects_node() _myvar2 = o.add_variable(idx_a, "MyBoolVar2", True) _myvar3 = o.add_variable(idx_b, "MyBoolVar3", True) _myvar4 = o.add_variable(idx_c, "MyBoolVar4", True) # the tests nodes = ua_utils.get_nodes_of_namespace(self.opc, namespaces=[idx_a, idx_b, idx_c]) self.assertEqual(len(nodes), 3) self.assertEqual(get_ns_of_nodes(nodes), set([idx_a, idx_b, idx_c])) nodes = ua_utils.get_nodes_of_namespace(self.opc, namespaces=[idx_a]) self.assertEqual(len(nodes), 1) self.assertEqual(get_ns_of_nodes(nodes), set([idx_a])) nodes = ua_utils.get_nodes_of_namespace(self.opc, namespaces=[idx_b]) self.assertEqual(len(nodes), 1) self.assertEqual(get_ns_of_nodes(nodes), set([idx_b])) nodes = ua_utils.get_nodes_of_namespace(self.opc, namespaces=['a']) self.assertEqual(len(nodes), 1) self.assertEqual(get_ns_of_nodes(nodes), set([idx_a])) nodes = ua_utils.get_nodes_of_namespace(self.opc, namespaces=['a', 'c']) self.assertEqual(len(nodes), 2) self.assertEqual(get_ns_of_nodes(nodes), set([idx_a, idx_c])) nodes = ua_utils.get_nodes_of_namespace(self.opc, namespaces='b') self.assertEqual(len(nodes), 1) self.assertEqual(get_ns_of_nodes(nodes), set([idx_b])) nodes = ua_utils.get_nodes_of_namespace(self.opc, namespaces=idx_b) self.assertEqual(len(nodes), 1) self.assertEqual(get_ns_of_nodes(nodes), set([idx_b])) self.assertRaises(ValueError, ua_utils.get_nodes_of_namespace, self.opc, namespaces='non_existing_ns')
def export_xml_by_ns(self, path, namespaces=None): """ Export nodes of one or more namespaces to an XML file. Namespaces used by nodes are always exported for consistency. Args: server: opc ua server to use path: name of the xml file to write namespaces: list of string uris or int indexes of the namespace to export, if not provide all ns are used except 0 Returns: """ if namespaces is None: namespaces = [] nodes = get_nodes_of_namespace(self, namespaces) self.export_xml(nodes, path)
def export_xml_by_ns(self, path, namespaces=None): """ Export nodes of one or more namespaces to an XML file. Namespaces used by nodes are always exported for consistency. Args: server: opc ua server to use path: name of the xml file to write namespaces: list of string uris or int indexes of the namespace to export, if not provide all ns are used except 0 Returns: """ if namespaces is None: namespaces = [] nodes = get_nodes_of_namespace(self, namespaces) self.export_xml(nodes, path)