|
@@ -0,0 +1,331 @@
|
|
|
+import unittest
|
|
|
+import utils
|
|
|
+
|
|
|
+all_files = [
|
|
|
+ "core/mini_modify.alc",
|
|
|
+ "core/core_formalism.mvc",
|
|
|
+ "core/core_algorithm.alc",
|
|
|
+ "primitives.alc",
|
|
|
+ "object_operations.alc",
|
|
|
+ "conformance_scd.alc",
|
|
|
+ "library.alc",
|
|
|
+ "transform.alc",
|
|
|
+ "model_management.alc",
|
|
|
+ "ramify.alc",
|
|
|
+ "metamodels.alc",
|
|
|
+ "random.alc",
|
|
|
+ "constructors.alc",
|
|
|
+ "modelling.alc",
|
|
|
+ "compilation_manager.alc",
|
|
|
+]
|
|
|
+
|
|
|
+
|
|
|
+class TestMvCSimulate(unittest.TestCase):
|
|
|
+ def transform_add_MT_pn_simulate(self, optimization_level):
|
|
|
+ utils.write_total_runtime_to_file(
|
|
|
+ 'mvc_print_upload', optimization_level,
|
|
|
+ utils.run_correctness_test(all_files,
|
|
|
+ [ "root", "root", "root",
|
|
|
+ "model_add",
|
|
|
+ "SimpleClassDiagrams",
|
|
|
+ "PetriNets",
|
|
|
+ ] + utils.get_model_constructor(open("integration/code/pn_design.mvc", "r").read()) + [
|
|
|
+ "model_add",
|
|
|
+ "SimpleClassDiagrams",
|
|
|
+ "PetriNets_Runtime",
|
|
|
+ ] + utils.get_model_constructor(open("integration/code/pn_runtime.mvc", "r").read()) + [
|
|
|
+ "model_add",
|
|
|
+ "PetriNets",
|
|
|
+ "my_pn",
|
|
|
+ ] + utils.get_model_constructor(open("integration/code/pn_design_model.mvc", "r").read()) + [
|
|
|
+ "model_list",
|
|
|
+ "transformation_add_MT_language",
|
|
|
+ "PetriNets_Runtime",
|
|
|
+ "PetriNets",
|
|
|
+ "",
|
|
|
+ "PetriNets_RAM",
|
|
|
+ "model_list",
|
|
|
+ "model_modify",
|
|
|
+ "__merged_PetriNets_RAM",
|
|
|
+ "instantiate",
|
|
|
+ "Association",
|
|
|
+ "D2R_PlaceLink",
|
|
|
+ "PetriNets/Place",
|
|
|
+ "PetriNets_Runtime/Place",
|
|
|
+ "instantiate",
|
|
|
+ "Association",
|
|
|
+ "D2R_TransitionLink",
|
|
|
+ "PetriNets/Transition",
|
|
|
+ "PetriNets_Runtime/Transition",
|
|
|
+ "instantiate",
|
|
|
+ "Association",
|
|
|
+ "R2D_PlaceLink",
|
|
|
+ "PetriNets_Runtime/Place",
|
|
|
+ "PetriNets/Place",
|
|
|
+ "instantiate",
|
|
|
+ "Association",
|
|
|
+ "R2D_TransitionLink",
|
|
|
+ "PetriNets_Runtime/Transition",
|
|
|
+ "PetriNets/Transition",
|
|
|
+ "exit",
|
|
|
+ "transformation_RAMify",
|
|
|
+ "__merged_PetriNets_RAM",
|
|
|
+ "PetriNets_RAM",
|
|
|
+ "transformation_add_MT",
|
|
|
+ "PetriNets_RAM",
|
|
|
+ "PetriNets",
|
|
|
+ "",
|
|
|
+ "PetriNets_Runtime",
|
|
|
+ "",
|
|
|
+ "pn_design_to_runtime",
|
|
|
+ ] + utils.get_model_constructor(open("integration/code/pn_design_to_runtime.mvc", "r").read()) + [
|
|
|
+ "transformation_add_MT",
|
|
|
+ "PetriNets_RAM",
|
|
|
+ "PetriNets_Runtime",
|
|
|
+ "",
|
|
|
+ "PetriNets",
|
|
|
+ "",
|
|
|
+ "pn_runtime_to_design",
|
|
|
+ ] + utils.get_model_constructor(open("integration/code/pn_runtime_to_design.mvc", "r").read()) + [
|
|
|
+ "transformation_add_MT",
|
|
|
+ "PetriNets_RAM",
|
|
|
+ "PetriNets_Runtime",
|
|
|
+ "",
|
|
|
+ "PetriNets_Runtime",
|
|
|
+ "",
|
|
|
+ "pn_step",
|
|
|
+ ] + utils.get_model_constructor(open("integration/code/pn_simulate.mvc", "r").read()) + [
|
|
|
+ "transformation_add_MT",
|
|
|
+ "PetriNets_RAM",
|
|
|
+ "PetriNets",
|
|
|
+ "",
|
|
|
+ "",
|
|
|
+ "pn_print",
|
|
|
+ ] + utils.get_model_constructor(open("integration/code/pn_print.mvc", "r").read()) + [
|
|
|
+ "model_list",
|
|
|
+ "transformation_list",
|
|
|
+ "transformation_execute",
|
|
|
+ "pn_print",
|
|
|
+ "my_pn",
|
|
|
+ "transformation_execute",
|
|
|
+ "pn_design_to_runtime",
|
|
|
+ "my_pn",
|
|
|
+ "my_pn_runtime",
|
|
|
+ "transformation_execute",
|
|
|
+ "pn_step",
|
|
|
+ "my_pn_runtime",
|
|
|
+ "my_pn_runtime",
|
|
|
+ "transformation_execute",
|
|
|
+ "pn_runtime_to_design",
|
|
|
+ "my_pn_runtime",
|
|
|
+ "my_pn",
|
|
|
+ "transformation_execute",
|
|
|
+ "pn_print",
|
|
|
+ "my_pn",
|
|
|
+ ],
|
|
|
+ [ # bootup phase
|
|
|
+ "Desired username for admin user?",
|
|
|
+ "Desired password for admin user?",
|
|
|
+ "Please repeat the password",
|
|
|
+ "Passwords match!",
|
|
|
+ "Welcome to the Model Management Interface v2.0!",
|
|
|
+ "Use the 'help' command for a list of possible commands",
|
|
|
+ "Ready for command...",
|
|
|
+ # model_add
|
|
|
+ "Creating new model!",
|
|
|
+ "Model type?",
|
|
|
+ "Model name?",
|
|
|
+ "Waiting for model constructors...",
|
|
|
+ "Model upload success!",
|
|
|
+ "Ready for command...",
|
|
|
+ # model_add
|
|
|
+ "Creating new model!",
|
|
|
+ "Model type?",
|
|
|
+ "Model name?",
|
|
|
+ "Waiting for model constructors...",
|
|
|
+ "Model upload success!",
|
|
|
+ "Ready for command...",
|
|
|
+ # model_add
|
|
|
+ "Creating new model!",
|
|
|
+ "Model type?",
|
|
|
+ "Model name?",
|
|
|
+ "Waiting for model constructors...",
|
|
|
+ "Model upload success!",
|
|
|
+ "Ready for command...",
|
|
|
+ # model_list
|
|
|
+ set([" SimpleClassDiagrams : SimpleClassDiagrams",
|
|
|
+ " CoreFormalism : SimpleClassDiagrams",
|
|
|
+ " PetriNets : SimpleClassDiagrams",
|
|
|
+ " my_pn : PetriNets",
|
|
|
+ " PetriNets_Runtime : SimpleClassDiagrams",
|
|
|
+ " core : CoreFormalism"]),
|
|
|
+ "Ready for command...",
|
|
|
+ # transformation_add_MT_language
|
|
|
+ "Formalisms to include (terminate with empty string)?",
|
|
|
+ "Name of the RAMified transformation metamodel?",
|
|
|
+ "Ready for command...",
|
|
|
+ # model_list
|
|
|
+ set([" SimpleClassDiagrams : SimpleClassDiagrams",
|
|
|
+ " CoreFormalism : SimpleClassDiagrams",
|
|
|
+ " PetriNets_Runtime : SimpleClassDiagrams",
|
|
|
+ " PetriNets : SimpleClassDiagrams",
|
|
|
+ " __merged_PetriNets_RAM : SimpleClassDiagrams",
|
|
|
+ " PetriNets_RAM : SimpleClassDiagrams",
|
|
|
+ " my_pn : PetriNets",
|
|
|
+ " core : CoreFormalism"]),
|
|
|
+ "Ready for command...",
|
|
|
+ # model_modify
|
|
|
+ "Which model do you want to modify?",
|
|
|
+ "Model loaded, ready for commands!",
|
|
|
+ "Use 'help' command for a list of possible commands",
|
|
|
+ "Please give your command.",
|
|
|
+ # instantiate 1
|
|
|
+ "Type to instantiate?",
|
|
|
+ "Name of new element?",
|
|
|
+ "Source name?",
|
|
|
+ "Destination name?",
|
|
|
+ "Instantiation successful!",
|
|
|
+ "Please give your command.",
|
|
|
+ # instantiate 2
|
|
|
+ "Type to instantiate?",
|
|
|
+ "Name of new element?",
|
|
|
+ "Source name?",
|
|
|
+ "Destination name?",
|
|
|
+ "Instantiation successful!",
|
|
|
+ "Please give your command.",
|
|
|
+ # instantiate 3
|
|
|
+ "Type to instantiate?",
|
|
|
+ "Name of new element?",
|
|
|
+ "Source name?",
|
|
|
+ "Destination name?",
|
|
|
+ "Instantiation successful!",
|
|
|
+ "Please give your command.",
|
|
|
+ # instantiate 4
|
|
|
+ "Type to instantiate?",
|
|
|
+ "Name of new element?",
|
|
|
+ "Source name?",
|
|
|
+ "Destination name?",
|
|
|
+ "Instantiation successful!",
|
|
|
+ "Please give your command.",
|
|
|
+ "Ready for command...",
|
|
|
+ # transformation_RAMify
|
|
|
+ "Which metamodel do you want to RAMify?",
|
|
|
+ "Where do you want to store the RAMified metamodel?",
|
|
|
+ "Ready for command...",
|
|
|
+ # transformation_add_MT
|
|
|
+ "RAMified metamodel to use?",
|
|
|
+ "Supported metamodels:",
|
|
|
+ set([" PetriNets",
|
|
|
+ " PetriNets_Runtime",
|
|
|
+ ]),
|
|
|
+ "",
|
|
|
+ "Which ones do you want to use as source (empty string to finish)?",
|
|
|
+ "Model added as source",
|
|
|
+ "Which ones do you want to use as target (empty string to finish)?",
|
|
|
+ "Model added as target",
|
|
|
+ "Name of new transformation?",
|
|
|
+ "Waiting for model constructors...",
|
|
|
+ "Ready for command...",
|
|
|
+ # transformation_add_MT
|
|
|
+ "RAMified metamodel to use?",
|
|
|
+ "Supported metamodels:",
|
|
|
+ set([" PetriNets",
|
|
|
+ " PetriNets_Runtime",
|
|
|
+ ]),
|
|
|
+ "",
|
|
|
+ "Which ones do you want to use as source (empty string to finish)?",
|
|
|
+ "Model added as source",
|
|
|
+ "Which ones do you want to use as target (empty string to finish)?",
|
|
|
+ "Model added as target",
|
|
|
+ "Name of new transformation?",
|
|
|
+ "Waiting for model constructors...",
|
|
|
+ "Ready for command...",
|
|
|
+ # transformation_add_MT
|
|
|
+ "RAMified metamodel to use?",
|
|
|
+ "Supported metamodels:",
|
|
|
+ set([" PetriNets",
|
|
|
+ " PetriNets_Runtime",
|
|
|
+ ]),
|
|
|
+ "",
|
|
|
+ "Which ones do you want to use as source (empty string to finish)?",
|
|
|
+ "Model added as source",
|
|
|
+ "Which ones do you want to use as target (empty string to finish)?",
|
|
|
+ "Model added as target",
|
|
|
+ "Name of new transformation?",
|
|
|
+ "Waiting for model constructors...",
|
|
|
+ "Ready for command...",
|
|
|
+ # transformation_add_MT
|
|
|
+ "RAMified metamodel to use?",
|
|
|
+ "Supported metamodels:",
|
|
|
+ set([" PetriNets",
|
|
|
+ " PetriNets_Runtime",
|
|
|
+ ]),
|
|
|
+ "",
|
|
|
+ "Which ones do you want to use as source (empty string to finish)?",
|
|
|
+ "Model added as source",
|
|
|
+ "Which ones do you want to use as target (empty string to finish)?",
|
|
|
+ "Name of new transformation?",
|
|
|
+ "Waiting for model constructors...",
|
|
|
+ "Ready for command...",
|
|
|
+ # model_list
|
|
|
+ set([" SimpleClassDiagrams : SimpleClassDiagrams",
|
|
|
+ " CoreFormalism : SimpleClassDiagrams",
|
|
|
+ " PetriNets_Runtime : SimpleClassDiagrams",
|
|
|
+ " PetriNets : SimpleClassDiagrams",
|
|
|
+ " pn_print : PetriNets_RAM",
|
|
|
+ " pn_design_to_runtime : PetriNets_RAM",
|
|
|
+ " pn_runtime_to_design : PetriNets_RAM",
|
|
|
+ " pn_step : PetriNets_RAM",
|
|
|
+ " __merged_PetriNets_RAM : SimpleClassDiagrams",
|
|
|
+ " PetriNets_RAM : SimpleClassDiagrams",
|
|
|
+ " my_pn : PetriNets",
|
|
|
+ " core : CoreFormalism"]),
|
|
|
+ "Ready for command...",
|
|
|
+ # transformation_list
|
|
|
+ set(["[ModelTransformation] pn_print : PetriNets_RAM",
|
|
|
+ "[ModelTransformation] pn_design_to_runtime : PetriNets_RAM",
|
|
|
+ "[ModelTransformation] pn_runtime_to_design : PetriNets_RAM",
|
|
|
+ "[ModelTransformation] pn_step : PetriNets_RAM"]),
|
|
|
+ "Ready for command...",
|
|
|
+ # transformation_execute (pn_print)
|
|
|
+ "Which transformation do you want to execute?",
|
|
|
+ "Which model to bind for source element PetriNets",
|
|
|
+ set(['"p1" --> 1',
|
|
|
+ '"p2" --> 2',
|
|
|
+ '"p3" --> 3',
|
|
|
+ ]),
|
|
|
+ "Transformation executed with result: True",
|
|
|
+ "Ready for command...",
|
|
|
+ # transformation_execute (pn_design_to_runtime)
|
|
|
+ "Which transformation do you want to execute?",
|
|
|
+ "Which model to bind for source element PetriNets",
|
|
|
+ "Which model to create for target element PetriNets_Runtime",
|
|
|
+ "Transformation executed with result: True",
|
|
|
+ "Ready for command...",
|
|
|
+ # transformation_execute (pn_step)
|
|
|
+ "Which transformation do you want to execute?",
|
|
|
+ "Which model to bind for source element PetriNets_Runtime",
|
|
|
+ "Which model to create for target element PetriNets_Runtime",
|
|
|
+ "Transformation executed with result: True",
|
|
|
+ "Ready for command...",
|
|
|
+ # transformation_execute (pn_runtime_to_design)
|
|
|
+ "Which transformation do you want to execute?",
|
|
|
+ "Which model to bind for source element PetriNets_Runtime",
|
|
|
+ "Which model to create for target element PetriNets",
|
|
|
+ "Transformation executed with result: True",
|
|
|
+ "Ready for command...",
|
|
|
+ # transformation_execute (pn_print)
|
|
|
+ "Which transformation do you want to execute?",
|
|
|
+ "Which model to bind for source element PetriNets",
|
|
|
+ set(['"p1" --> 0',
|
|
|
+ '"p2" --> 1',
|
|
|
+ '"p3" --> 5',
|
|
|
+ ]),
|
|
|
+ "Transformation executed with result: True",
|
|
|
+ "Ready for command...",
|
|
|
+ ],
|
|
|
+ optimization_level))
|
|
|
+
|
|
|
+
|
|
|
+utils.define_perf_tests(TestMvCSimulate,
|
|
|
+ TestMvCSimulate.transform_add_MT_pn_simulate)
|