tests_server.py
Go to the documentation of this file.
1 import unittest
2 import os
3 import shelve
4 import time
5 
6 from tests_common import CommonTests, add_server_methods
7 from tests_xml import XmlTests
8 from tests_subscriptions import SubscriptionTests
9 from datetime import timedelta, datetime
10 from tempfile import NamedTemporaryFile
11 
12 import opcua
13 from opcua import Server
14 from opcua import Client
15 from opcua import ua
16 from opcua import uamethod
17 from opcua.common.event_objects import BaseEvent, AuditEvent
18 from opcua.common import ua_utils
19 
20 
21 port_num = 48540
22 port_discovery = 48550
23 
24 
25 class TestServer(unittest.TestCase, CommonTests, SubscriptionTests, XmlTests):
26 
27  '''
28  Run common tests on server side
29  Tests that can only be run on server side must be defined here
30  '''
31  @classmethod
32  def setUpClass(cls):
33  cls.srv = Server()
34  cls.srv.set_endpoint('opc.tcp://localhost:{0:d}'.format(port_num))
36  cls.srv.start()
37  cls.opc = cls.srv
38  cls.discovery = Server()
39  cls.discovery.set_application_uri("urn:freeopcua:python:discovery")
40  cls.discovery.set_endpoint('opc.tcp://localhost:{0:d}'.format(port_discovery))
41  cls.discovery.start()
42 
43  @classmethod
44  def tearDownClass(cls):
45  cls.srv.stop()
46  cls.discovery.stop()
47 
48  def test_discovery(self):
49  client = Client(self.discovery.endpoint.geturl())
50  client.connect()
51  try:
52  servers = client.find_servers()
53  new_app_uri = "urn:freeopcua:python:server:test_discovery"
54  self.srv.application_uri = new_app_uri
55  self.srv.register_to_discovery(self.discovery.endpoint.geturl(), 0)
56  time.sleep(0.1) # let server register registration
57  new_servers = client.find_servers()
58  self.assertEqual(len(new_servers) - len(servers) , 1)
59  self.assertFalse(new_app_uri in [s.ApplicationUri for s in servers])
60  self.assertTrue(new_app_uri in [s.ApplicationUri for s in new_servers])
61  finally:
62  client.disconnect()
63 
64  def test_find_servers2(self):
65  client = Client(self.discovery.endpoint.geturl())
66  client.connect()
67  try:
68  servers = client.find_servers()
69  new_app_uri1 = "urn:freeopcua:python:server:test_discovery1"
70  self.srv.application_uri = new_app_uri1
71  self.srv.register_to_discovery(self.discovery.endpoint.geturl(), period=0)
72  new_app_uri2 = "urn:freeopcua:python:test_discovery2"
73  self.srv.application_uri = new_app_uri2
74  self.srv.register_to_discovery(self.discovery.endpoint.geturl(), period=0)
75  time.sleep(0.1) # let server register registration
76  new_servers = client.find_servers()
77  self.assertEqual(len(new_servers) - len(servers) , 2)
78  self.assertFalse(new_app_uri1 in [s.ApplicationUri for s in servers])
79  self.assertFalse(new_app_uri2 in [s.ApplicationUri for s in servers])
80  self.assertTrue(new_app_uri1 in [s.ApplicationUri for s in new_servers])
81  self.assertTrue(new_app_uri2 in [s.ApplicationUri for s in new_servers])
82  # now do a query with filer
83  new_servers = client.find_servers(["urn:freeopcua:python:server"])
84  self.assertEqual(len(new_servers) - len(servers) , 0)
85  self.assertTrue(new_app_uri1 in [s.ApplicationUri for s in new_servers])
86  self.assertFalse(new_app_uri2 in [s.ApplicationUri for s in new_servers])
87  # now do a query with filer
88  new_servers = client.find_servers(["urn:freeopcua:python"])
89  self.assertEqual(len(new_servers) - len(servers) , 2)
90  self.assertTrue(new_app_uri1 in [s.ApplicationUri for s in new_servers])
91  self.assertTrue(new_app_uri2 in [s.ApplicationUri for s in new_servers])
92  finally:
93  client.disconnect()
94 
95 
96  """
97  # not sure if this test is necessary, and there is a lot repetition with previous test
98  def test_discovery_server_side(self):
99  servers = self.discovery.find_servers()
100  self.assertEqual(len(servers), 1)
101  self.srv.register_to_discovery(self.discovery.endpoint.geturl(), 1)
102  time.sleep(1) # let server register registration
103  servers = self.discovery.find_servers()
104  print("SERVERS 2", servers)
105  self.assertEqual(len(servers), 2)
106  """
107  # def test_register_server2(self):
108  # servers = self.opc.register_server()
109 
111  uri = 'http://mycustom.Namespace.com'
112  idx1 = self.opc.register_namespace(uri)
113  idx2 = self.opc.get_namespace_index(uri)
114  self.assertEqual(idx1, idx2)
115 
117  uri = 'http://mycustom.Namespace.com'
118  idx1 = self.opc.register_namespace(uri)
119  idx2 = self.opc.register_namespace(uri)
120  idx3 = self.opc.get_namespace_index(uri)
121  self.assertEqual(idx1, idx2)
122  self.assertEqual(idx1, idx3)
123 
125  uri = 'http://my_very_custom.Namespace.com'
126  idx = self.opc.register_namespace(uri)
127  root = self.opc.get_root_node()
128  myvar = root.add_variable(idx, 'var_in_custom_namespace', [5])
129  myid = myvar.nodeid
130  self.assertEqual(idx, myid.NamespaceIndex)
131 
133  def func(parent, variant):
134  variant.Value *= 2
135  return [variant]
136  o = self.opc.get_objects_node()
137  v = o.add_method(3, 'Method1', func, [ua.VariantType.Int64], [ua.VariantType.Int64])
138  result = o.call_method(v, ua.Variant(2.1))
139  self.assertEqual(result, 4.2)
140 
142  o = self.opc.get_objects_node()
143  var = o.add_variable(3, "test_hist", 1.0)
144  self.srv.iserver.enable_history_data_change(var, timedelta(days=1))
145  time.sleep(1)
146  var.set_value(2.0)
147  var.set_value(3.0)
148  self.srv.iserver.disable_history_data_change(var)
149 
151  srv_node = self.srv.get_node(ua.ObjectIds.Server)
152  srvevgen = self.srv.get_event_generator()
153  self.srv.iserver.enable_history_event(srv_node, period=None)
154  srvevgen.trigger(message="Message")
155  self.srv.iserver.disable_history_event(srv_node)
156 
158  objects = self.opc.get_objects_node()
159  o = objects.add_object(3, 'MyObject')
160  nodes = objects.get_referenced_nodes(refs=ua.ObjectIds.Organizes, direction=ua.BrowseDirection.Forward, includesubtypes=False)
161  self.assertTrue(o in nodes)
162  nodes = o.get_referenced_nodes(refs=ua.ObjectIds.Organizes, direction=ua.BrowseDirection.Inverse, includesubtypes=False)
163  self.assertTrue(objects in nodes)
164  self.assertEqual(o.get_parent(), objects)
165  self.assertEqual(o.get_type_definition().Identifier, ua.ObjectIds.BaseObjectType)
166 
167  @uamethod
168  def callback(parent):
169  return
170 
171  m = o.add_method(3, 'MyMethod', callback)
172  nodes = o.get_referenced_nodes(refs=ua.ObjectIds.HasComponent, direction=ua.BrowseDirection.Forward, includesubtypes=False)
173  self.assertTrue(m in nodes)
174  nodes = m.get_referenced_nodes(refs=ua.ObjectIds.HasComponent, direction=ua.BrowseDirection.Inverse, includesubtypes=False)
175  self.assertTrue(o in nodes)
176  self.assertEqual(m.get_parent(), o)
177 
178  # This should work for following BaseEvent tests to work (maybe to write it a bit differentlly since they are not independent)
180  ev = opcua.common.events.get_event_obj_from_type_node(opcua.Node(self.opc.iserver.isession, ua.NodeId(ua.ObjectIds.BaseEventType)))
181  check_base_event(self, ev)
182 
184  ev = opcua.common.events.get_event_obj_from_type_node(opcua.Node(self.opc.iserver.isession, ua.NodeId(ua.ObjectIds.AuditEventType)))
185  self.assertIsNot(ev, None) # we did not receive event
186  self.assertIsInstance(ev, BaseEvent)
187  self.assertIsInstance(ev, AuditEvent)
188  self.assertEqual(ev.EventType, ua.NodeId(ua.ObjectIds.AuditEventType))
189  self.assertEqual(ev.Severity, 1)
190  self.assertEqual(ev.ActionTimeStamp, None)
191  self.assertEqual(ev.Status, False)
192  self.assertEqual(ev.ServerId, None)
193  self.assertEqual(ev.ClientAuditEntryId, None)
194  self.assertEqual(ev.ClientUserId, None)
195 
197  evgen = self.opc.get_event_generator()
198  check_eventgenerator_BaseEvent(self, evgen)
200 
202  evgen = self.opc.get_event_generator(BaseEvent())
203  check_eventgenerator_BaseEvent(self, evgen)
205 
207  evgen = self.opc.get_event_generator(opcua.Node(self.opc.iserver.isession, ua.NodeId(ua.ObjectIds.BaseEventType)))
208  check_eventgenerator_BaseEvent(self, evgen)
210 
212  evgen = self.opc.get_event_generator(ua.NodeId(ua.ObjectIds.BaseEventType))
213  check_eventgenerator_BaseEvent(self, evgen)
215 
217  evgen = self.opc.get_event_generator(ua.ObjectIds.BaseEventType)
218  check_eventgenerator_BaseEvent(self, evgen)
220 
222  evgen = self.opc.get_event_generator(2041)
223  check_eventgenerator_BaseEvent(self, evgen)
225 
227  evgen = self.opc.get_event_generator(source=opcua.Node(self.opc.iserver.isession, ua.NodeId(ua.ObjectIds.Server)))
228  check_eventgenerator_BaseEvent(self, evgen)
230 
232  evgen = self.opc.get_event_generator(source=ua.NodeId(ua.ObjectIds.Server))
233  check_eventgenerator_BaseEvent(self, evgen)
235 
237  evgen = self.opc.get_event_generator(source=ua.ObjectIds.Server)
238  check_eventgenerator_BaseEvent(self, evgen)
240 
242  objects = self.opc.get_objects_node()
243  o = objects.add_object(3, 'MyObject')
244  evgen = self.opc.get_event_generator(source=o)
245  check_eventgenerator_BaseEvent(self, evgen)
246  check_event_generator_object(self, evgen, o)
247 
249  objects = self.opc.get_objects_node()
250  o = objects.add_object(3, 'MyObject')
251  event = BaseEvent(sourcenode=o.nodeid)
252  evgen = self.opc.get_event_generator(event, ua.ObjectIds.Server)
253  check_eventgenerator_BaseEvent(self, evgen)
254  check_event_generator_object(self, evgen, o)
255 
257  evgen = self.opc.get_event_generator(ua.ObjectIds.AuditEventType)
259 
260  ev = evgen.event
261  self.assertIsNot(ev, None) # we did not receive event
262  self.assertIsInstance(ev, BaseEvent)
263  self.assertIsInstance(ev, AuditEvent)
264  self.assertEqual(ev.EventType, ua.NodeId(ua.ObjectIds.AuditEventType))
265  self.assertEqual(ev.Severity, 1)
266  self.assertEqual(ev.ActionTimeStamp, None)
267  self.assertEqual(ev.Status, False)
268  self.assertEqual(ev.ServerId, None)
269  self.assertEqual(ev.ClientAuditEntryId, None)
270  self.assertEqual(ev.ClientUserId, None)
271 
272  # For the custom events all posibilites are tested. For other custom types only one test case is done since they are using the same code
274  type = self.opc.create_custom_data_type(2, 'MyDataType', ua.ObjectIds.BaseDataType, [('PropertyNum', ua.VariantType.Int32), ('PropertyString', ua.VariantType.String)])
275  check_custom_type(self, type, ua.ObjectIds.BaseDataType)
276 
278  type = self.opc.create_custom_event_type(2, 'MyEvent', ua.ObjectIds.BaseEventType, [('PropertyNum', ua.VariantType.Int32), ('PropertyString', ua.VariantType.String)])
279  check_custom_type(self, type, ua.ObjectIds.BaseEventType)
280 
282  def func(parent, variant):
283  return [ua.Variant(ret, ua.VariantType.Boolean)]
284 
285  properties = [('PropertyNum', ua.VariantType.Int32),
286  ('PropertyString', ua.VariantType.String)]
287  variables = [('VariableString', ua.VariantType.String),
288  ('MyEnumVar', ua.VariantType.Int32, ua.NodeId(ua.ObjectIds.ApplicationType))]
289  methods = [('MyMethod', func, [ua.VariantType.Int64], [ua.VariantType.Boolean])]
290 
291  node_type = self.opc.create_custom_object_type(2, 'MyObjectType', ua.ObjectIds.BaseObjectType, properties, variables, methods)
292 
293  check_custom_type(self, node_type, ua.ObjectIds.BaseObjectType)
294  variables = node_type.get_variables()
295  self.assertTrue(node_type.get_child("2:VariableString") in variables)
296  self.assertEqual(node_type.get_child("2:VariableString").get_data_value().Value.VariantType, ua.VariantType.String)
297  self.assertTrue(node_type.get_child("2:MyEnumVar") in variables)
298  self.assertEqual(node_type.get_child("2:MyEnumVar").get_data_value().Value.VariantType, ua.VariantType.Int32)
299  self.assertEqual(node_type.get_child("2:MyEnumVar").get_data_type(), ua.NodeId(ua.ObjectIds.ApplicationType))
300  methods = node_type.get_methods()
301  self.assertTrue(node_type.get_child("2:MyMethod") in methods)
302 
303  # def test_create_custom_refrence_type_ObjectId(self):
304  # type = self.opc.create_custom_reference_type(2, 'MyEvent', ua.ObjectIds.Base, [('PropertyNum', ua.VariantType.Int32), ('PropertyString', ua.VariantType.String)])
305  # check_custom_type(self, type, ua.ObjectIds.BaseObjectType)
306 
308  type = self.opc.create_custom_variable_type(2, 'MyVariableType', ua.ObjectIds.BaseVariableType, [('PropertyNum', ua.VariantType.Int32), ('PropertyString', ua.VariantType.String)])
309  check_custom_type(self, type, ua.ObjectIds.BaseVariableType)
310 
312  etype = self.opc.create_custom_event_type(2, 'MyEvent', ua.NodeId(ua.ObjectIds.BaseEventType), [('PropertyNum', ua.VariantType.Int32), ('PropertyString', ua.VariantType.String)])
313  check_custom_type(self, etype, ua.ObjectIds.BaseEventType)
314 
316  etype = self.opc.create_custom_event_type(2, 'MyEvent', opcua.Node(self.opc.iserver.isession, ua.NodeId(ua.ObjectIds.BaseEventType)), [('PropertyNum', ua.VariantType.Int32), ('PropertyString', ua.VariantType.String)])
317  check_custom_type(self, etype, ua.ObjectIds.BaseEventType)
318 
320  etype = self.opc.create_custom_event_type(2, 'MyEvent', ua.ObjectIds.BaseEventType, [('PropertyNum', ua.VariantType.Int32), ('PropertyString', ua.VariantType.String)])
321 
323  check_custom_event(self, ev, etype)
324  self.assertEqual(ev.PropertyNum, 0)
325  self.assertEqual(ev.PropertyString, None)
326 
328  etype = self.opc.create_custom_event_type(2, 'MyEvent', ua.ObjectIds.BaseEventType, [('PropertyNum', ua.VariantType.Int32), ('PropertyString', ua.VariantType.String)])
329 
330  evgen = self.opc.get_event_generator(etype, ua.ObjectIds.Server)
331  check_eventgenerator_CustomEvent(self, evgen, etype)
333 
334  self.assertEqual(evgen.event.PropertyNum, 0)
335  self.assertEqual(evgen.event.PropertyString, None)
336 
338  event1 = self.opc.create_custom_event_type(3, 'MyEvent1', ua.ObjectIds.BaseEventType, [('PropertyNum', ua.VariantType.Int32), ('PropertyString', ua.VariantType.String)])
339 
340  event2 = self.opc.create_custom_event_type(4, 'MyEvent2', event1, [('PropertyBool', ua.VariantType.Boolean), ('PropertyInt', ua.VariantType.Int32)])
341 
342  evgen = self.opc.get_event_generator(event2, ua.ObjectIds.Server)
343  check_eventgenerator_CustomEvent(self, evgen, event2)
345 
346  # Properties from MyEvent1
347  self.assertEqual(evgen.event.PropertyNum, 0)
348  self.assertEqual(evgen.event.PropertyString, None)
349 
350  # Properties from MyEvent2
351  self.assertEqual(evgen.event.PropertyBool, False)
352  self.assertEqual(evgen.event.PropertyInt, 0)
353 
355  objects = self.opc.get_objects_node()
356  o = objects.add_object(3, 'MyObject')
357  etype = self.opc.create_custom_event_type(2, 'MyEvent', ua.ObjectIds.BaseEventType, [('PropertyNum', ua.VariantType.Int32), ('PropertyString', ua.VariantType.String)])
358 
359  evgen = self.opc.get_event_generator(etype, o)
360  check_eventgenerator_CustomEvent(self, evgen, etype)
361  check_event_generator_object(self, evgen, o)
362 
363  self.assertEqual(evgen.event.PropertyNum, 0)
364  self.assertEqual(evgen.event.PropertyString, None)
365 
367  """ Context manager calls start() and stop()
368  """
369  state = [0]
370  def increment_state(self, *args, **kwargs):
371  state[0] += 1
372 
373  # create server and replace instance methods with dummy methods
374  server = Server()
375  server.start = increment_state.__get__(server)
376  server.stop = increment_state.__get__(server)
377 
378  assert state[0] == 0
379  with server:
380  # test if server started
381  self.assertEqual(state[0], 1)
382  # test if server stopped
383  self.assertEqual(state[0], 2)
384 
386 
387  def get_ns_of_nodes(nodes):
388  ns_list = set()
389  for node in nodes:
390  ns_list.add(node.nodeid.NamespaceIndex)
391  return ns_list
392 
393  # incase other testss created nodes in unregistered namespace
394  _idx_d = self.opc.register_namespace('dummy1')
395  _idx_d = self.opc.register_namespace('dummy2')
396  _idx_d = self.opc.register_namespace('dummy3')
397 
398  # create the test namespaces and vars
399  idx_a = self.opc.register_namespace('a')
400  idx_b = self.opc.register_namespace('b')
401  idx_c = self.opc.register_namespace('c')
402  o = self.opc.get_objects_node()
403  _myvar2 = o.add_variable(idx_a, "MyBoolVar2", True)
404  _myvar3 = o.add_variable(idx_b, "MyBoolVar3", True)
405  _myvar4 = o.add_variable(idx_c, "MyBoolVar4", True)
406 
407  # the tests
408  nodes = ua_utils.get_nodes_of_namespace(self.opc, namespaces=[idx_a, idx_b, idx_c])
409  self.assertEqual(len(nodes), 3)
410  self.assertEqual(get_ns_of_nodes(nodes), set([idx_a, idx_b, idx_c]))
411 
412  nodes = ua_utils.get_nodes_of_namespace(self.opc, namespaces=[idx_a])
413  self.assertEqual(len(nodes), 1)
414  self.assertEqual(get_ns_of_nodes(nodes), set([idx_a]))
415 
416  nodes = ua_utils.get_nodes_of_namespace(self.opc, namespaces=[idx_b])
417  self.assertEqual(len(nodes), 1)
418  self.assertEqual(get_ns_of_nodes(nodes), set([idx_b]))
419 
420  nodes = ua_utils.get_nodes_of_namespace(self.opc, namespaces=['a'])
421  self.assertEqual(len(nodes), 1)
422  self.assertEqual(get_ns_of_nodes(nodes), set([idx_a]))
423 
424  nodes = ua_utils.get_nodes_of_namespace(self.opc, namespaces=['a', 'c'])
425  self.assertEqual(len(nodes), 2)
426  self.assertEqual(get_ns_of_nodes(nodes), set([idx_a, idx_c]))
427 
428  nodes = ua_utils.get_nodes_of_namespace(self.opc, namespaces='b')
429  self.assertEqual(len(nodes), 1)
430  self.assertEqual(get_ns_of_nodes(nodes), set([idx_b]))
431 
432  nodes = ua_utils.get_nodes_of_namespace(self.opc, namespaces=idx_b)
433  self.assertEqual(len(nodes), 1)
434  self.assertEqual(get_ns_of_nodes(nodes), set([idx_b]))
435 
436  self.assertRaises(ValueError, ua_utils.get_nodes_of_namespace, self.opc, namespaces='non_existing_ns')
437 
439  server = test.opc.get_server_node()
440  test.assertEqual(evgen.event.SourceName, server.get_browse_name().Name)
441  test.assertEqual(evgen.event.SourceNode, ua.NodeId(ua.ObjectIds.Server))
442 
443  test.assertEqual(
444  server.get_event_notifier(),
445  {ua.EventNotifier.SubscribeToEvents, ua.EventNotifier.HistoryRead}
446  )
447 
448  refs = server.get_referenced_nodes(ua.ObjectIds.GeneratesEvent, ua.BrowseDirection.Forward, ua.NodeClass.ObjectType, False)
449  test.assertGreaterEqual(len(refs), 1)
450 
451 
452 def check_event_generator_object(test, evgen, obj):
453  test.assertEqual(evgen.event.SourceName, obj.get_browse_name().Name)
454  test.assertEqual(evgen.event.SourceNode, obj.nodeid)
455 
456  test.assertEqual(
457  obj.get_event_notifier(),
458  {ua.EventNotifier.SubscribeToEvents, ua.EventNotifier.HistoryRead}
459  )
460 
461  refs = obj.get_referenced_nodes(ua.ObjectIds.GeneratesEvent, ua.BrowseDirection.Forward, ua.NodeClass.ObjectType, False)
462  test.assertEqual(len(refs), 1)
463  test.assertEqual(refs[0].nodeid, evgen.event.EventType)
464 
465 
467  test.assertIsNot(evgen, None) # we did not receive event generator
468  test.assertIs(evgen.isession, test.opc.iserver.isession)
469  check_base_event(test, evgen.event)
470 
471 
472 def check_base_event(test, ev):
473  test.assertIsNot(ev, None) # we did not receive event
474  test.assertIsInstance(ev, BaseEvent)
475  test.assertEqual(ev.EventType, ua.NodeId(ua.ObjectIds.BaseEventType))
476  test.assertEqual(ev.Severity, 1)
477 
478 
479 def check_eventgenerator_CustomEvent(test, evgen, etype):
480  test.assertIsNot(evgen, None) # we did not receive event generator
481  test.assertIs(evgen.isession, test.opc.iserver.isession)
482  check_custom_event(test, evgen.event, etype)
483 
484 
485 def check_custom_event(test, ev, etype):
486  test.assertIsNot(ev, None) # we did not receive event
487  test.assertIsInstance(ev, BaseEvent)
488  test.assertEqual(ev.EventType, etype.nodeid)
489  test.assertEqual(ev.Severity, 1)
490 
491 
492 def check_custom_type(test, type, base_type):
493  base = opcua.Node(test.opc.iserver.isession, ua.NodeId(base_type))
494  test.assertTrue(type in base.get_children())
495  nodes = type.get_referenced_nodes(refs=ua.ObjectIds.HasSubtype, direction=ua.BrowseDirection.Inverse, includesubtypes=True)
496  test.assertEqual(base, nodes[0])
497  properties = type.get_properties()
498  test.assertIsNot(properties, None)
499  test.assertEqual(len(properties), 2)
500  test.assertTrue(type.get_child("2:PropertyNum") in properties)
501  test.assertEqual(type.get_child("2:PropertyNum").get_data_value().Value.VariantType, ua.VariantType.Int32)
502  test.assertTrue(type.get_child("2:PropertyString") in properties)
503  test.assertEqual(type.get_child("2:PropertyString").get_data_value().Value.VariantType, ua.VariantType.String)
504 
505 
506 class TestServerCaching(unittest.TestCase):
507  def runTest(self):
508  return # FIXME broken
509  tmpfile = NamedTemporaryFile()
510  path = tmpfile.name
511  tmpfile.close()
512 
513  # create cache file
514  server = Server(shelffile=path)
515 
516  # modify cache content
517  id = ua.NodeId(ua.ObjectIds.Server_ServerStatus_SecondsTillShutdown)
518  s = shelve.open(path, "w", writeback=True)
519  s[id.to_string()].attributes[ua.AttributeIds.Value].value = ua.DataValue(123)
520  s.close()
521 
522  # ensure that we are actually loading from the cache
523  server = Server(shelffile=path)
524  self.assertEqual(server.get_node(id).get_value(), 123)
525 
526  os.remove(path)
def test_context_manager(self)
def check_eventgenerator_BaseEvent(test, evgen)
def check_custom_event(test, ev, etype)
def test_eventgenerator_BaseEvent_NodeId(self)
def test_eventgenerator_InheritedEvent(self)
def test_get_event_from_type_node_BaseEvent(self)
def test_register_namespace(self)
def test_eventgenerator_BaseEvent_object(self)
def test_create_custom_event_type_Node(self)
def test_eventgenerator_customEvent_MyObject(self)
def test_historize_events(self)
def test_create_custom_data_type_ObjectId(self)
def test_get_event_from_type_node_CustomEvent(self)
def test_eventgenerator_BaseEvent_ObjectIds(self)
def check_eventgenerator_CustomEvent(test, evgen, etype)
def test_eventgenerator_default(self)
def test_eventgenerator_BaseEvent_Identifier(self)
def add_server_methods(srv)
Definition: tests_common.py:16
def test_create_custom_event_type_NodeId(self)
def test_eventgenerator_customEvent(self)
def check_eventgenerator_SourceServer(test, evgen)
def test_get_event_from_type_node_Inhereted_AuditEvent(self)
def test_create_custom_object_type_ObjectId(self)
def check_event_generator_object(test, evgen, obj)
def check_custom_type(test, type, base_type)
def test_create_custom_variable_type_ObjectId(self)
def test_historize_variable(self)
def get_event_obj_from_type_node(node)
Definition: events.py:183
def test_eventgenerator_source_collision(self)
def test_eventgenerator_sourceMyObject(self)
def func(parent, variant)
def test_eventgenerator_sourceServer_Node(self)
def test_find_servers2(self)
Definition: tests_server.py:64
def check_base_event(test, ev)
def test_references_for_added_nodes_method(self)
def test_eventgenerator_sourceServer_ObjectIds(self)
def test_eventgenerator_BaseEvent_Node(self)
def test_eventgenerator_sourceServer_NodeId(self)
def test_register_use_namespace(self)
def test_create_custom_event_type_ObjectId(self)
def test_register_existing_namespace(self)
def test_eventgenerator_double_customEvent(self)


ros_opcua_impl_python_opcua
Author(s): Denis Štogl , Daniel Draper
autogenerated on Tue Jan 19 2021 03:12:44