Skip to content

Commit

Permalink
Merge branch 'master' into OPCUA-612-meta-refactor-let-quasar-generat…
Browse files Browse the repository at this point in the history
…e-as-much-as-possible
  • Loading branch information
Ben Farnham committed Sep 8, 2023
2 parents 3fdf524 + e66d507 commit dbb0864
Show file tree
Hide file tree
Showing 118 changed files with 11,658 additions and 7,746 deletions.
195 changes: 98 additions & 97 deletions .CI/test_cases/test_async_methods/Design.xml
Original file line number Diff line number Diff line change
@@ -1,203 +1,204 @@
<?xml version="1.0" encoding="UTF-8"?>
<d:design xmlns:d="http://cern.ch/quasar/Design" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" projectShortName="TestProject" xsi:schemaLocation="http://cern.ch/quasar/Design Design.xsd">
<d:class name="TestClass">
<d:devicelogic/>
<d:method name="args0_rvs0_it0" executionSynchronicity="asynchronous" >
<d:devicelogic><d:mutex/></d:devicelogic>
<d:method name="args0_rvs0_it0" executionSynchronicity="asynchronous" addressSpaceCallUseMutex="no" >
</d:method>
<d:method name="args0_rvs1_it0" executionSynchronicity="asynchronous" >
<d:returnvalue name="rv0" dataType="OpcUa_UInt32" >
<d:method name="args0_rvs1_it0" executionSynchronicity="asynchronous" addressSpaceCallUseMutex="of_containing_object" >
<d:returnvalue name="rv0" dataType="UaByteString" >
<d:array/>
</d:returnvalue>
</d:method>
<d:method name="args0_rvs2_it0" executionSynchronicity="asynchronous" >
<d:returnvalue name="rv0" dataType="OpcUa_Boolean" >
<d:array/>
<d:method name="args0_rvs2_it0" executionSynchronicity="asynchronous" addressSpaceCallUseMutex="of_containing_object" >
<d:returnvalue name="rv0" dataType="UaByteString" >
</d:returnvalue>
<d:returnvalue name="rv1" dataType="UaString" >
<d:returnvalue name="rv1" dataType="UaVariant" >
<d:array/>
</d:returnvalue>
</d:method>
<d:method name="args1_rvs0_it0" executionSynchronicity="asynchronous" >
<d:argument name="arg0" dataType="OpcUa_Int16" >
<d:method name="args1_rvs0_it0" executionSynchronicity="asynchronous" addressSpaceCallUseMutex="of_containing_object" >
<d:argument name="arg0" dataType="UaByteString" >
<d:array/>
</d:argument>
</d:method>
<d:method name="args1_rvs1_it0" executionSynchronicity="asynchronous" >
<d:argument name="arg0" dataType="OpcUa_Boolean" >
<d:array/>
<d:method name="args1_rvs1_it0" executionSynchronicity="asynchronous" addressSpaceCallUseMutex="no" >
<d:argument name="arg0" dataType="UaByteString" >
</d:argument>
<d:returnvalue name="rv0" dataType="OpcUa_Float" >
<d:array/>
<d:returnvalue name="rv0" dataType="UaVariant" >
</d:returnvalue>
</d:method>
<d:method name="args1_rvs2_it0" executionSynchronicity="asynchronous" >
<d:argument name="arg0" dataType="UaString" >
<d:method name="args1_rvs2_it0" executionSynchronicity="asynchronous" addressSpaceCallUseMutex="of_containing_object" >
<d:argument name="arg0" dataType="UaVariant" >
<d:array/>
</d:argument>
<d:returnvalue name="rv0" dataType="OpcUa_SByte" >
<d:returnvalue name="rv0" dataType="UaString" >
<d:array/>
</d:returnvalue>
<d:returnvalue name="rv1" dataType="UaVariant" >
<d:returnvalue name="rv1" dataType="UaString" >
</d:returnvalue>
</d:method>
<d:method name="args2_rvs0_it0" executionSynchronicity="asynchronous" >
<d:argument name="arg0" dataType="OpcUa_Double" >
<d:method name="args2_rvs0_it0" executionSynchronicity="asynchronous" addressSpaceCallUseMutex="no" >
<d:argument name="arg0" dataType="UaVariant" >
</d:argument>
<d:argument name="arg1" dataType="OpcUa_UInt16" >
<d:argument name="arg1" dataType="UaString" >
<d:array/>
</d:argument>
</d:method>
<d:method name="args2_rvs1_it0" executionSynchronicity="asynchronous" >
<d:argument name="arg0" dataType="UaVariant" >
<d:method name="args2_rvs1_it0" executionSynchronicity="asynchronous" addressSpaceCallUseMutex="of_containing_object" >
<d:argument name="arg0" dataType="UaString" >
</d:argument>
<d:argument name="arg1" dataType="OpcUa_UInt32" >
<d:argument name="arg1" dataType="OpcUa_Float" >
<d:array/>
</d:argument>
<d:returnvalue name="rv0" dataType="OpcUa_UInt32" >
<d:returnvalue name="rv0" dataType="OpcUa_Float" >
<d:array/>
</d:returnvalue>
</d:method>
<d:method name="args2_rvs2_it0" executionSynchronicity="asynchronous" >
<d:argument name="arg0" dataType="UaByteString" >
<d:array/>
<d:method name="args2_rvs2_it0" executionSynchronicity="asynchronous" addressSpaceCallUseMutex="of_containing_object" >
<d:argument name="arg0" dataType="OpcUa_Float" >
</d:argument>
<d:argument name="arg1" dataType="OpcUa_Byte" >
<d:argument name="arg1" dataType="OpcUa_Double" >
<d:array/>
</d:argument>
<d:returnvalue name="rv0" dataType="OpcUa_Int32" >
<d:returnvalue name="rv0" dataType="OpcUa_Float" >
</d:returnvalue>
<d:returnvalue name="rv1" dataType="OpcUa_Float" >
<d:returnvalue name="rv1" dataType="OpcUa_Double" >
<d:array/>
</d:returnvalue>
</d:method>
<d:method name="args0_rvs0_it1" executionSynchronicity="asynchronous" >
<d:method name="args0_rvs0_it1" executionSynchronicity="asynchronous" addressSpaceCallUseMutex="of_containing_object" >
</d:method>
<d:method name="args0_rvs1_it1" executionSynchronicity="asynchronous" >
<d:returnvalue name="rv0" dataType="OpcUa_Byte" >
<d:array/>
<d:method name="args0_rvs1_it1" executionSynchronicity="asynchronous" addressSpaceCallUseMutex="of_containing_object" >
<d:returnvalue name="rv0" dataType="OpcUa_Double" >
</d:returnvalue>
</d:method>
<d:method name="args0_rvs2_it1" executionSynchronicity="asynchronous" >
<d:returnvalue name="rv0" dataType="OpcUa_UInt64" >
</d:returnvalue>
<d:returnvalue name="rv1" dataType="UaString" >
<d:method name="args0_rvs2_it1" executionSynchronicity="asynchronous" addressSpaceCallUseMutex="of_containing_object" >
<d:returnvalue name="rv0" dataType="OpcUa_Int64" >
<d:array/>
</d:returnvalue>
<d:returnvalue name="rv1" dataType="OpcUa_Int64" >
</d:returnvalue>
</d:method>
<d:method name="args1_rvs0_it1" executionSynchronicity="asynchronous" >
<d:argument name="arg0" dataType="OpcUa_Int64" >
<d:array/>
<d:method name="args1_rvs0_it1" executionSynchronicity="asynchronous" addressSpaceCallUseMutex="no" >
<d:argument name="arg0" dataType="OpcUa_Double" >
</d:argument>
</d:method>
<d:method name="args1_rvs1_it1" executionSynchronicity="asynchronous" >
<d:argument name="arg0" dataType="OpcUa_Byte" >
<d:method name="args1_rvs1_it1" executionSynchronicity="asynchronous" addressSpaceCallUseMutex="of_containing_object" >
<d:argument name="arg0" dataType="OpcUa_Int64" >
<d:array/>
</d:argument>
<d:returnvalue name="rv0" dataType="UaVariant" >
<d:returnvalue name="rv0" dataType="OpcUa_UInt64" >
<d:array/>
</d:returnvalue>
</d:method>
<d:method name="args1_rvs2_it1" executionSynchronicity="asynchronous" >
<d:argument name="arg0" dataType="UaByteString" >
<d:method name="args1_rvs2_it1" executionSynchronicity="asynchronous" addressSpaceCallUseMutex="no" >
<d:argument name="arg0" dataType="OpcUa_Int64" >
</d:argument>
<d:returnvalue name="rv0" dataType="OpcUa_Double" >
<d:array/>
<d:returnvalue name="rv0" dataType="OpcUa_UInt64" >
</d:returnvalue>
<d:returnvalue name="rv1" dataType="OpcUa_Boolean" >
<d:returnvalue name="rv1" dataType="OpcUa_Int32" >
<d:array/>
</d:returnvalue>
</d:method>
<d:method name="args2_rvs0_it1" executionSynchronicity="asynchronous" >
<d:argument name="arg0" dataType="OpcUa_Int32" >
<d:method name="args2_rvs0_it1" executionSynchronicity="asynchronous" addressSpaceCallUseMutex="of_containing_object" >
<d:argument name="arg0" dataType="OpcUa_UInt64" >
<d:array/>
</d:argument>
<d:argument name="arg1" dataType="OpcUa_UInt64" >
<d:array/>
</d:argument>
</d:method>
<d:method name="args2_rvs1_it1" executionSynchronicity="asynchronous" >
<d:argument name="arg0" dataType="UaVariant" >
<d:method name="args2_rvs1_it1" executionSynchronicity="asynchronous" addressSpaceCallUseMutex="of_this_method" >
<d:argument name="arg0" dataType="OpcUa_Int32" >
<d:array/>
</d:argument>
<d:argument name="arg1" dataType="OpcUa_Boolean" >
<d:argument name="arg1" dataType="OpcUa_Int32" >
</d:argument>
<d:returnvalue name="rv0" dataType="OpcUa_SByte" >
<d:returnvalue name="rv0" dataType="OpcUa_Int32" >
</d:returnvalue>
</d:method>
<d:method name="args2_rvs2_it1" executionSynchronicity="asynchronous" >
<d:argument name="arg0" dataType="OpcUa_Int16" >
<d:method name="args2_rvs2_it1" executionSynchronicity="asynchronous" addressSpaceCallUseMutex="no" >
<d:argument name="arg0" dataType="OpcUa_UInt32" >
<d:array/>
</d:argument>
<d:argument name="arg1" dataType="OpcUa_UInt16" >
<d:argument name="arg1" dataType="OpcUa_UInt32" >
</d:argument>
<d:returnvalue name="rv0" dataType="OpcUa_Int16" >
<d:returnvalue name="rv0" dataType="OpcUa_UInt32" >
<d:array/>
</d:returnvalue>
<d:returnvalue name="rv1" dataType="OpcUa_Int16" >
<d:returnvalue name="rv1" dataType="OpcUa_UInt32" >
</d:returnvalue>
</d:method>
<d:method name="args0_rvs0_it2" executionSynchronicity="asynchronous" >
<d:method name="args0_rvs0_it2" executionSynchronicity="asynchronous" addressSpaceCallUseMutex="of_containing_object" >
</d:method>
<d:method name="args0_rvs1_it2" executionSynchronicity="asynchronous" >
<d:returnvalue name="rv0" dataType="OpcUa_UInt16" >
<d:method name="args0_rvs1_it2" executionSynchronicity="asynchronous" addressSpaceCallUseMutex="no" >
<d:returnvalue name="rv0" dataType="OpcUa_Int16" >
<d:array/>
</d:returnvalue>
</d:method>
<d:method name="args0_rvs2_it2" executionSynchronicity="asynchronous" >
<d:returnvalue name="rv0" dataType="OpcUa_Int64" >
<d:array/>
<d:method name="args0_rvs2_it2" executionSynchronicity="asynchronous" addressSpaceCallUseMutex="of_containing_object" >
<d:returnvalue name="rv0" dataType="OpcUa_Int16" >
</d:returnvalue>
<d:returnvalue name="rv1" dataType="UaByteString" >
<d:returnvalue name="rv1" dataType="OpcUa_UInt16" >
<d:array/>
</d:returnvalue>
</d:method>
<d:method name="args1_rvs0_it2" executionSynchronicity="asynchronous" >
<d:argument name="arg0" dataType="OpcUa_Double" >
<d:method name="args1_rvs0_it2" executionSynchronicity="asynchronous" addressSpaceCallUseMutex="no" >
<d:argument name="arg0" dataType="OpcUa_Int16" >
<d:array/>
</d:argument>
</d:method>
<d:method name="args1_rvs1_it2" executionSynchronicity="asynchronous" >
<d:argument name="arg0" dataType="OpcUa_UInt32" >
<d:method name="args1_rvs1_it2" executionSynchronicity="asynchronous" addressSpaceCallUseMutex="of_containing_object" >
<d:argument name="arg0" dataType="OpcUa_Int16" >
</d:argument>
<d:returnvalue name="rv0" dataType="OpcUa_Int32" >
<d:array/>
<d:returnvalue name="rv0" dataType="OpcUa_UInt16" >
</d:returnvalue>
</d:method>
<d:method name="args1_rvs2_it2" executionSynchronicity="asynchronous" >
<d:argument name="arg0" dataType="OpcUa_Float" >
<d:method name="args1_rvs2_it2" executionSynchronicity="asynchronous" addressSpaceCallUseMutex="of_this_method" >
<d:argument name="arg0" dataType="OpcUa_UInt16" >
<d:array/>
</d:argument>
<d:returnvalue name="rv0" dataType="UaByteString" >
<d:returnvalue name="rv0" dataType="OpcUa_SByte" >
<d:array/>
</d:returnvalue>
<d:returnvalue name="rv1" dataType="OpcUa_Double" >
<d:returnvalue name="rv1" dataType="OpcUa_SByte" >
</d:returnvalue>
</d:method>
<d:method name="args2_rvs0_it2" executionSynchronicity="asynchronous" >
<d:argument name="arg0" dataType="OpcUa_SByte" >
<d:array/>
<d:method name="args2_rvs0_it2" executionSynchronicity="asynchronous" addressSpaceCallUseMutex="no" >
<d:argument name="arg0" dataType="OpcUa_UInt16" >
</d:argument>
<d:argument name="arg1" dataType="OpcUa_Float" >
<d:argument name="arg1" dataType="OpcUa_SByte" >
<d:array/>
</d:argument>
</d:method>
<d:method name="args2_rvs1_it2" executionSynchronicity="asynchronous" >
<d:argument name="arg0" dataType="UaString" >
<d:method name="args2_rvs1_it2" executionSynchronicity="asynchronous" addressSpaceCallUseMutex="of_containing_object" >
<d:argument name="arg0" dataType="OpcUa_SByte" >
</d:argument>
<d:argument name="arg1" dataType="OpcUa_UInt64" >
<d:argument name="arg1" dataType="OpcUa_Byte" >
<d:array/>
</d:argument>
<d:returnvalue name="rv0" dataType="OpcUa_Int64" >
<d:returnvalue name="rv0" dataType="OpcUa_Byte" >
<d:array/>
</d:returnvalue>
</d:method>
<d:method name="args2_rvs2_it2" executionSynchronicity="asynchronous" >
<d:argument name="arg0" dataType="OpcUa_SByte" >
<d:method name="args2_rvs2_it2" executionSynchronicity="asynchronous" addressSpaceCallUseMutex="of_this_method" >
<d:argument name="arg0" dataType="OpcUa_Byte" >
</d:argument>
<d:argument name="arg1" dataType="OpcUa_Int64" >
<d:argument name="arg1" dataType="OpcUa_Boolean" >
<d:array/>
</d:argument>
<d:returnvalue name="rv0" dataType="OpcUa_Byte" >
</d:returnvalue>
<d:returnvalue name="rv1" dataType="OpcUa_UInt64" >
<d:returnvalue name="rv1" dataType="OpcUa_Boolean" >
<d:array/>
</d:returnvalue>
</d:method>
<d:method name="args0_rvs0_it3" executionSynchronicity="asynchronous" >
<d:method name="args0_rvs0_it3" executionSynchronicity="asynchronous" addressSpaceCallUseMutex="of_containing_object" >
</d:method>
<d:method name="args0_rvs1_it3" executionSynchronicity="asynchronous" >
<d:returnvalue name="rv0" dataType="OpcUa_UInt16" >
<d:array/>
<d:method name="args0_rvs1_it3" executionSynchronicity="asynchronous" addressSpaceCallUseMutex="of_this_method" >
<d:returnvalue name="rv0" dataType="OpcUa_Boolean" >
</d:returnvalue>
</d:method>
<d:method name="args0_rvs2_it3" executionSynchronicity="asynchronous" >
<d:method name="args0_rvs2_it3" executionSynchronicity="asynchronous" addressSpaceCallUseMutex="no" >
</d:method>
</d:class>
<d:root>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ def make_dts():


def get_dts(dts):
random.shuffle(dts)
#random.shuffle(dts) #<-- not good for repetitivity of conditions
return dts.pop()


Expand All @@ -38,13 +38,14 @@ def generate():

Num_arguments = [0, 1, 2]
Num_return_values = [0, 1, 2]
Random_Options = ['no', 'of_this_method', 'of_containing_object']
it = 0
try:
while it<10:
for num_arguments in Num_arguments:
for num_return_values in Num_return_values:
scenario_name = create_scenario_name(num_arguments, num_return_values, it)
output('<d:method name="{0}" executionSynchronicity="asynchronous" >'.format(scenario_name))
output(f'<d:method name="{scenario_name}" executionSynchronicity="asynchronous" addressSpaceCallUseMutex="{random.choice(Random_Options)}" >')
for arg in range(0, num_arguments):
dt = get_dts(dts_args)
output('<d:argument name="arg{0}" dataType="{1}" >'.format(arg, dt['dataType']) )
Expand All @@ -68,7 +69,7 @@ def generate():
output('<?xml version="1.0" encoding="UTF-8"?>')
output('<d:design xmlns:d="http://cern.ch/quasar/Design" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" projectShortName="TestProject" xsi:schemaLocation="http://cern.ch/quasar/Design Design.xsd">')
output('<d:class name="TestClass">')
output('<d:devicelogic/>')
output('<d:devicelogic><d:mutex/></d:devicelogic>')
generate()
output('</d:class>')
output('<d:root>')
Expand Down
12 changes: 8 additions & 4 deletions .CI/test_cases/test_defaulted_instance_name/Design.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<d:design projectShortName="OpcUaSampleServerNameChangeItInDesign" xmlns:d="http://cern.ch/quasar/Design" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://cern.ch/quasar/Design Design.xsd ">
<d:class name="TestClass" defaultInstanceName="XX"></d:class>
<d:root>
<d:hasobjects class="TestClass" instantiateUsing="configuration" maxOccurs="1" minOccurs="1"></d:hasobjects>
</d:root>
<d:class name="ThisIsTheSingletonClass" defaultInstanceName="XX"/>
<d:class name="SomeOtherClass">
<d:hasobjects class="ThisIsTheSingletonClass" instantiateUsing="configuration" maxOccurs="1" minOccurs="1"/>
</d:class>
<d:root>
<d:hasobjects class="ThisIsTheSingletonClass" instantiateUsing="configuration" maxOccurs="1" minOccurs="1"/>
<d:hasobjects class="SomeOtherClass" instantiateUsing="configuration"/>
</d:root>
</d:design>
8 changes: 7 additions & 1 deletion .CI/test_cases/test_defaulted_instance_name/config.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration xmlns="http://cern.ch/quasar/Configuration" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://cern.ch/quasar/Configuration ../Configuration/Configuration.xsd ">
<TestClass/> <!-- no name attr, should be defaulted to "XX" -->
<ThisIsTheSingletonClass/> <!-- no name attr, should be defaulted to "XX" -->
<SomeOtherClass name="tralala">
<ThisIsTheSingletonClass/> <!-- no name attr, should be defaulted to "XX" -->
</SomeOtherClass>
<SomeOtherClass name="tralala2">
<ThisIsTheSingletonClass/> <!-- no name attr, should be defaulted to "XX" -->
</SomeOtherClass>
</configuration>
Loading

0 comments on commit dbb0864

Please sign in to comment.