async def test_functional_basic(srv): basic_struct_name = 'basic_structure' basic_struct = await srv.dict_builder.create_data_type(basic_struct_name) basic_struct.add_field('ID', ua.VariantType.Int32) basic_struct.add_field('Gender', ua.VariantType.Boolean) basic_struct.add_field('Comments', ua.VariantType.String) await srv.dict_builder.set_dict_byte_string() await srv.srv.load_type_definitions() basic_var = await srv.srv.nodes.objects.add_variable( ua.NodeId(namespaceidx=srv.idx), 'BasicStruct', ua.Variant(None, ua.VariantType.Null), datatype=basic_struct.data_type) basic_msg = get_ua_class(basic_struct_name)() basic_msg.ID = 3 basic_msg.Gender = True basic_msg.Comments = 'Test string' await basic_var.write_value(basic_msg) basic_result = await basic_var.read_value() assert basic_result == basic_msg await srv.srv.delete_nodes([basic_var])
async def test_functional_advance(srv): basic_struct_name = 'basic_structure' basic_struct = await srv.dict_builder.create_data_type(basic_struct_name) basic_struct.add_field('ID', ua.VariantType.Int32) basic_struct.add_field('Gender', ua.VariantType.Boolean) basic_struct.add_field('Comments', ua.VariantType.String) nested_struct_name = 'nested_structure' nested_struct = await srv.dict_builder.create_data_type(nested_struct_name) nested_struct.add_field('Name', ua.VariantType.String) nested_struct.add_field('Surname', ua.VariantType.String) nested_struct.add_field('Stuff', basic_struct) await srv.dict_builder.set_dict_byte_string() await srv.srv.load_type_definitions() basic_var = await srv.srv.nodes.objects.add_variable( ua.NodeId(namespaceidx=srv.idx), 'BasicStruct', ua.Variant(None, ua.VariantType.Null), datatype=basic_struct.data_type) basic_msg = get_ua_class(basic_struct_name)() basic_msg.ID = 3 basic_msg.Gender = True basic_msg.Comments = 'Test string' await basic_var.set_value(basic_msg) nested_var = await srv.srv.nodes.objects.add_variable( ua.NodeId(namespaceidx=srv.idx), 'NestedStruct', ua.Variant(None, ua.VariantType.Null), datatype=nested_struct.data_type) nested_msg = get_ua_class(nested_struct_name)() nested_msg.Stuff = basic_msg nested_msg.Name = 'Max' nested_msg.Surname = 'Karl' await nested_var.set_value(nested_msg) basic_result = await basic_var.get_value() assert basic_result == basic_msg nested_result = await nested_var.get_value() assert nested_result == nested_msg
async def test_get_ua_class_2(srv): struct_name = '*c*u_stom-ized&Stru#ct' struct_node = await srv.dict_builder.create_data_type(struct_name) struct_node.add_field('id', ua.VariantType.Int32) await srv.dict_builder.set_dict_byte_string() await srv.srv.load_type_definitions() try: assert get_ua_class(struct_name) is not None except AttributeError: pass
async def test_struct_node_add_field(srv): struct_name = 'CustomizedStruct' struct_node = await srv.dict_builder.create_data_type(struct_name) struct_node.add_field('id', ua.VariantType.Int32) await srv.dict_builder.set_dict_byte_string() await srv.srv.load_type_definitions() struct = get_ua_class(struct_name) assert struct.ua_types[0][0] == 'id' assert struct.ua_types[0][1] == 'Int32' struct_instance = struct() assert struct_instance.id == 0
async def test_data_type_dict_add_field_2(srv): struct_name = 'AnotherCustomizedStruct' await srv.dict_builder.create_data_type(struct_name) srv.dict_builder.add_field(ua.VariantType.Int32, 'id', struct_name, is_array=True) await srv.dict_builder.set_dict_byte_string() await srv.srv.load_type_definitions() struct = get_ua_class(struct_name) assert struct.ua_types[0][0] == 'id' assert struct.ua_types[0][1] == 'ListOfInt32' struct_instance = struct() assert isinstance(struct_instance.id, list)
# this operation will write the OPC dict string to our new data type dictionary # namely the 'MyDictionary' ua_server.complete_creation() # get the working classes ua_server.server.load_type_definitions() # Create one test structure basic_var = ua_server.server.nodes.objects.add_variable( ua.NodeId(namespaceidx=ua_server.idx), 'BasicStruct', ua.Variant(None, ua.VariantType.Null), datatype=basic_struct.data_type) basic_var.set_writable() basic_msg = get_ua_class(basic_struct_name)() basic_msg.ID = 3 basic_msg.Gender = True basic_msg.Comments = 'Test string' basic_var.set_value(basic_msg) # Create one advance test structure nested_var = ua_server.server.nodes.objects.add_variable( ua.NodeId(namespaceidx=ua_server.idx), 'NestedStruct', ua.Variant(None, ua.VariantType.Null), datatype=nested_struct.data_type) nested_var.set_writable() nested_msg = get_ua_class(nested_struct_name)() nested_msg.Stuff = basic_msg