Преглед изворни кода

Increased performance by not printing out intermediate information

Yentl Van Tendeloo пре 8 година
родитељ
комит
653e58a011
2 измењених фајлова са 487 додато и 45 уклоњено
  1. 482 1
      integration/test_powerwindow.py
  2. 5 44
      models/pm_req_analyse.mvc

+ 482 - 1
integration/test_powerwindow.py

@@ -35,7 +35,7 @@ all_files = [   "core/mini_modify.alc",
             ]
 
 class TestPowerWindow(unittest.TestCase):
-    def test_process_powerwindow(self):
+    def test_process_powerwindow_fast(self):
         self.assertTrue(run_file(all_files,
             [ "root", "root", "root", 
                 "model_add",
@@ -202,6 +202,487 @@ class TestPowerWindow(unittest.TestCase):
                     "",
                     "combine_EPN",
                     ] + get_model_constructor_2("models/combine_EPN.mvc") + [
+                "transformation_add_AL",
+                    "PetriNet",
+                    "",
+                    "ReachabilityGraph",
+                    "",
+                    "reachability",
+                    ] + get_constructor(open("integration/code/reachability.alc", "r").read()) + [
+                "transformation_add_MT",
+                    "All_RAM",
+                    "ReachabilityGraph",
+                    "Query",
+                    "",
+                    "",
+                    "matches",
+                    ] + get_model_constructor_2("models/matches.mvc") + [
+                "model_list",
+                "process_execute",
+                "pm_powerwindow",
+                "pm_",
+                # define_req
+                "upload",
+                ] + get_model_constructor_2("models/requirements_model.mvc") + [
+                "exit",
+                # refine_plant
+                "upload",
+                ] + get_model_constructor_2("models/plant_model.mvc") + [
+                "exit",
+                # refine_environment
+                "upload",
+                ] + get_model_constructor_2("models/environment_model.mvc") + [
+                "exit",
+                # refine_control
+                "upload",
+                ] + get_model_constructor_2("models/control_model.mvc") + [
+                "exit",
+                # refine_query
+                "upload",
+                ] + get_model_constructor_2("models/query_model.mvc") + [
+                "exit",
+            ],
+            [   # 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 * 9
+                ] + [   "Creating new model!",
+                        "Model type?",
+                        "Model name?",
+                        "Waiting for model constructors...",
+                        "Model upload success!",
+                        "Ready for command...", ] * 9 + [
+                # model_list
+                model_list |
+                set([
+                     "  ReachabilityGraph : SimpleClassDiagrams",
+                     "  PetriNet : SimpleClassDiagrams",
+                     "  Encapsulated_PetriNet : SimpleClassDiagrams",
+                     "  PW_Plant : SimpleClassDiagrams",
+                     "  PW_Environment : SimpleClassDiagrams",
+                     "  PW_Control : SimpleClassDiagrams",
+                     "  Requirements : SimpleClassDiagrams",
+                     "  Query : SimpleClassDiagrams",
+                     "  pm_powerwindow : ProcessModel",
+                     ]),
+                "Ready for command...",
+                # transformation_add_MT_language
+                "Formalisms to include (terminate with empty string)?",
+                "Name of the RAMified transformation metamodel?",
+                "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 * 7
+                ] + [   "Type to instantiate?",
+                        "Name of new element?",
+                        "Source name?",
+                        "Destination name?",
+                        "Instantiation successful!",
+                        "Please give your command.", ] * 7 + [
+                "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_MANUAL
+                ] + [
+                    "Which metamodels do you want to use as source for the manual operation (empty string to finish)?",
+                    "Which metamodels do you want to use as target for the manual operation (empty string to finish)?",
+                    "Model added as target",
+                    "Name of Manual operation model?",
+                    "Ready for command...",
+                    ] + [
+                # transformation_add_MANUAL * 4
+                ] + [
+                    "Which metamodels do you want to use as source for the manual operation (empty string to finish)?",
+                    "Model added as source",
+                    "Model added as source",
+                    "Which metamodels do you want to use as target for the manual operation (empty string to finish)?",
+                    "Model added as target",
+                    "Name of Manual operation model?",
+                    "Ready for command...",
+                    ] * 4 + [
+                # transformation_add_MT
+                "RAMified metamodel to use?",
+                "Supported metamodels:",
+                set(["  PetriNet",
+                     "  Encapsulated_PetriNet",
+                     "  PW_Plant",
+                     "  Query",
+                     "  PW_Environment",
+                     "  Requirements",
+                     "  PW_Control",
+                     "  ReachabilityGraph",
+                    ]),
+                "",
+                "Which ones do you want to use as source (empty string to finish)?",
+                "Which ones do you want to use as target (empty string to finish)?",
+                "Model added as target",
+                "Model added as target",
+                "Model added as target",
+                "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(["  PetriNet",
+                     "  Encapsulated_PetriNet",
+                     "  Query",
+                     "  PW_Plant",
+                     "  PW_Environment",
+                     "  Requirements",
+                     "  PW_Control",
+                     "  ReachabilityGraph",
+                    ]),
+                "",
+                "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(["  PetriNet",
+                     "  Encapsulated_PetriNet",
+                     "  Query",
+                     "  PW_Plant",
+                     "  PW_Environment",
+                     "  Requirements",
+                     "  PW_Control",
+                     "  ReachabilityGraph",
+                    ]),
+                "",
+                "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(["  PetriNet",
+                     "  Encapsulated_PetriNet",
+                     "  Query",
+                     "  PW_Plant",
+                     "  PW_Environment",
+                     "  Requirements",
+                     "  PW_Control",
+                     "  ReachabilityGraph",
+                    ]),
+                "",
+                "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(["  PetriNet",
+                     "  Encapsulated_PetriNet",
+                     "  Query",
+                     "  PW_Plant",
+                     "  PW_Environment",
+                     "  Requirements",
+                     "  PW_Control",
+                     "  ReachabilityGraph",
+                    ]),
+                "",
+                "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_AL
+                ] + [   "Which metamodels do you want to use as source for the action code (empty string to finish)?",
+                        "Model added as source",
+                        "Which metamodels do you want to use as target for the action code (empty string to finish)?",
+                        "Model added as target",
+                        "Name of Action Language model?",
+                        "Waiting for model constructors...",
+                        "Ready for command...", ] * 1 + [
+                # transformation_add_MT
+                "RAMified metamodel to use?",
+                "Supported metamodels:",
+                set(["  PetriNet",
+                     "  Encapsulated_PetriNet",
+                     "  Query",
+                     "  PW_Plant",
+                     "  PW_Environment",
+                     "  Requirements",
+                     "  PW_Control",
+                     "  ReachabilityGraph",
+                    ]),
+                "",
+                "Which ones do you want to use as source (empty string to finish)?",
+                "Model added as source",
+                "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
+                model_list |
+                set([
+                     "  PetriNet : SimpleClassDiagrams",
+                     "  Encapsulated_PetriNet : SimpleClassDiagrams",
+                     "  PW_Plant : SimpleClassDiagrams",
+                     "  PW_Environment : SimpleClassDiagrams",
+                     "  PW_Control : SimpleClassDiagrams",
+                     "  Requirements : SimpleClassDiagrams",
+                     "  Query : SimpleClassDiagrams",
+                     "  reachability : ActionLanguage",
+                     "  define_req : ManualOperation",
+                     "  refine_plant : ManualOperation",
+                     "  refine_control : ManualOperation",
+                     "  refine_environment : ManualOperation",
+                     "  refine_query : ManualOperation",
+                     "  __merged_define_req : SimpleClassDiagrams",
+                     "  __merged_All_RAM : SimpleClassDiagrams",
+                     "  __merged_refine_plant : SimpleClassDiagrams",
+                     "  __merged_refine_control : SimpleClassDiagrams",
+                     "  __merged_refine_environment : SimpleClassDiagrams",
+                     "  __merged_refine_query : SimpleClassDiagrams",
+                     "  matches : All_RAM",
+                     "  All_RAM : SimpleClassDiagrams",
+                     "  make_initial_models : All_RAM",
+                     "  pm_powerwindow : ProcessModel",
+                     "  plant_to_EPN : All_RAM",
+                     "  combine_EPN : All_RAM",
+                     "  environment_to_EPN : All_RAM",
+                     "  control_to_EPN : All_RAM",
+                     "  ReachabilityGraph : SimpleClassDiagrams",
+                     ]),
+                "Ready for command...",
+                # process_execute
+                "Which process model do you want to execute?",
+                "Model prefix to use?",
+                # Manual transformation define_req
+                "Please perform manual transformation \"define_req\"",
+                "Model loaded, ready for commands!",
+                "Use 'help' command for a list of possible commands",
+                "Please give your command.",
+                "Waiting for model constructors...",
+                "Please give your command.",
+                # Manual transformation refine_plant
+                "Please perform manual transformation \"refine_plant\"",
+                "Model loaded, ready for commands!",
+                "Use 'help' command for a list of possible commands",
+                "Please give your command.",
+                "Waiting for model constructors...",
+                "Please give your command.",
+                # Manual transformation refine_environment
+                "Please perform manual transformation \"refine_environment\"",
+                "Model loaded, ready for commands!",
+                "Use 'help' command for a list of possible commands",
+                "Please give your command.",
+                "Waiting for model constructors...",
+                "Please give your command.",
+                # Manual transformation refine_control
+                "Please perform manual transformation \"refine_control\"",
+                "Model loaded, ready for commands!",
+                "Use 'help' command for a list of possible commands",
+                "Please give your command.",
+                "Waiting for model constructors...",
+                "Please give your command.",
+                # Manual transformation refine_query
+                "Please perform manual transformation \"refine_query\"",
+                "Model loaded, ready for commands!",
+                "Use 'help' command for a list of possible commands",
+                "Please give your command.",
+                "Waiting for model constructors...",
+                "Please give your command.",
+                # Computations happen without output
+                # Finished, so we go back to the start
+                "Ready for command...",
+            ]))
+
+    def test_process_powerwindow_debug(self):
+        self.assertTrue(run_file(all_files,
+            [ "root", "root", "root", 
+                "model_add",
+                    "SimpleClassDiagrams",
+                    "ReachabilityGraph",
+                    ] + get_model_constructor_2("integration/code/reachability_graph.mvc") + [
+                "model_add",
+                    "SimpleClassDiagrams",
+                    "PetriNet",
+                    ] + get_model_constructor_2("integration/code/pn_design.mvc") + [
+                "model_add",
+                    "SimpleClassDiagrams",
+                    "Encapsulated_PetriNet",
+                    ] + get_model_constructor_2("models/petrinet_ports.mvc") + [
+                "model_add",
+                    "SimpleClassDiagrams",
+                    "PW_Plant",
+                    ] + get_model_constructor_2("models/plant_PW.mvc") + [
+                "model_add",
+                    "SimpleClassDiagrams",
+                    "PW_Environment",
+                    ] + get_model_constructor_2("models/environment_PW.mvc") + [
+                "model_add",
+                    "SimpleClassDiagrams",
+                    "PW_Control",
+                    ] + get_model_constructor_2("models/control_PW.mvc") + [
+                "model_add",
+                    "SimpleClassDiagrams",
+                    "Requirements",
+                    ] + get_model_constructor_2("models/requirements.mvc") + [
+                "model_add",
+                    "SimpleClassDiagrams",
+                    "Query",
+                    ] + get_model_constructor_2("models/query.mvc") + [
+                "model_add",
+                    "ProcessModel",
+                    "pm_powerwindow",
+                    ] + get_model_constructor_2("models/pm_req_analyse_debug.mvc") + [
+                "model_list",
+                "transformation_add_MT_language",
+                "PetriNet",
+                "Encapsulated_PetriNet",
+                "PW_Plant",
+                "PW_Control",
+                "PW_Environment",
+                "Requirements",
+                "ReachabilityGraph",
+                "Query",
+                "",
+                "All_RAM",
+                "model_modify",
+                    "__merged_All_RAM",
+                        "instantiate",
+                            "Association",
+                            "CTRL2EPN_link",
+                            "PW_Control/State",
+                            "Encapsulated_PetriNet/Place",
+                        "instantiate",
+                            "Association",
+                            "CTRL2EPN_tlink",
+                            "PW_Control/Transition",
+                            "Encapsulated_PetriNet/Transition",
+                        "instantiate",
+                            "Association",
+                            "PLANT2EPN_link",
+                            "PW_Plant/State",
+                            "Encapsulated_PetriNet/Place",
+                        "instantiate",
+                            "Association",
+                            "PLANT2EPN_tlink",
+                            "PW_Plant/Transition",
+                            "Encapsulated_PetriNet/Transition",
+                        "instantiate",
+                            "Association",
+                            "ENV2EPN_link",
+                            "PW_Environment/Event",
+                            "Encapsulated_PetriNet/Place",
+                        "instantiate",
+                            "Association",
+                            "EPN2PN_place_link",
+                            "Encapsulated_PetriNet/Place",
+                            "PetriNet/Place",
+                        "instantiate",
+                            "Association",
+                            "EPN2PN_transition_link",
+                            "Encapsulated_PetriNet/Transition",
+                            "PetriNet/Transition",
+                        "exit",
+                "transformation_RAMify",
+                    "__merged_All_RAM",
+                    "All_RAM",
+                "transformation_add_MANUAL",
+                    "",
+                    "Requirements",
+                    "",
+                    "define_req",
+                "transformation_add_MANUAL",
+                    "Requirements",
+                    "PW_Environment",
+                    "",
+                    "PW_Environment",
+                    "",
+                    "refine_environment",
+                "transformation_add_MANUAL",
+                    "Requirements",
+                    "PW_Plant",
+                    "",
+                    "PW_Plant",
+                    "",
+                    "refine_plant",
+                "transformation_add_MANUAL",
+                    "Requirements",
+                    "PW_Control",
+                    "",
+                    "PW_Control",
+                    "",
+                    "refine_control",
+                "transformation_add_MANUAL",
+                    "Requirements",
+                    "Query",
+                    "",
+                    "Query",
+                    "",
+                    "refine_query",
+                "transformation_add_MT",
+                    "All_RAM",
+                    "",
+                    "PW_Plant",
+                    "PW_Environment",
+                    "PW_Control",
+                    "Query",
+                    "",
+                    "make_initial_models",
+                    ] + get_model_constructor_2("models/initialize.mvc") + [
+                "transformation_add_MT",
+                    "All_RAM",
+                    "PW_Plant",
+                    "",
+                    "Encapsulated_PetriNet",
+                    "",
+                    "plant_to_EPN",
+                    ] + get_model_constructor_2("models/plant_to_EPN.mvc") + [
+                "transformation_add_MT",
+                    "All_RAM",
+                    "PW_Control",
+                    "",
+                    "Encapsulated_PetriNet",
+                    "",
+                    "control_to_EPN",
+                    ] + get_model_constructor_2("models/control_to_EPN.mvc") + [
+                "transformation_add_MT",
+                    "All_RAM",
+                    "PW_Environment",
+                    "",
+                    "Encapsulated_PetriNet",
+                    "",
+                    "environment_to_EPN",
+                    ] + get_model_constructor_2("models/environment_to_EPN.mvc") + [
+                "transformation_add_MT",
+                    "All_RAM",
+                    "Encapsulated_PetriNet",
+                    "",
+                    "Encapsulated_PetriNet",
+                    "",
+                    "combine_EPN",
+                    ] + get_model_constructor_2("models/combine_EPN.mvc") + [
                 "transformation_add_MT",
                     "All_RAM",
                     "ReachabilityGraph",

+ 5 - 44
models/pm_req_analyse.mvc

@@ -34,26 +34,12 @@ ProcessModel analyse_requirements {
         name = "control_to_EPN"
     }
 
-    Exec print_plant_EPN {
-        name = "epn_print"
-    }
-    Exec print_control_EPN {
-        name = "epn_print"
-    }
-    Exec print_environment_EPN {
-        name = "epn_print"
-    }
-
     ForkJoin forkjoin2 {}
 
     Exec combine_EPN {
         name = "combine_EPN"
     }
 
-    Exec print_pn {
-        name = "pn_print"
-    }
-
     Exec EPN_to_PN {
         name = "EPN_to_PN"
     }
@@ -61,9 +47,6 @@ ProcessModel analyse_requirements {
     Exec analyse {
         name = "reachability"
     }
-    Exec print_reachability {
-        name = "print_reachability"
-    }
 
     ForkJoin forkjoin3 {}
 
@@ -128,17 +111,12 @@ ProcessModel analyse_requirements {
     Next (refine_plant, plant_to_EPN) {}
     Next (refine_environment, environment_to_EPN) {}
     Next (refine_control, control_to_EPN) {}
-    Next (plant_to_EPN, print_plant_EPN) {}
-    Next (environment_to_EPN, print_environment_EPN) {}
-    Next (control_to_EPN, print_control_EPN) {}
-    Next (print_plant_EPN, forkjoin2) {}
-    Next (print_environment_EPN, forkjoin2) {}
-    Next (print_control_EPN, forkjoin2) {}
+    Next (plant_to_EPN, forkjoin2) {}
+    Next (environment_to_EPN, forkjoin2) {}
+    Next (control_to_EPN, forkjoin2) {}
     Next (forkjoin2, combine_EPN) {}
-    Next (combine_EPN, print_pn) {}
-    Next (print_pn, analyse) {}
-    Next (analyse, print_reachability) {}
-    Next (print_reachability, forkjoin3) {}
+    Next (combine_EPN, analyse) {}
+    Next (analyse, forkjoin3) {}
     Next (refine_query, forkjoin3) {}
     Next (forkjoin3, matches) {}
     Next (matches, found) {}
@@ -225,27 +203,10 @@ ProcessModel analyse_requirements {
     Produces (analyse, reachability_graph) {
     }
 
-    Consumes (print_reachability, reachability_graph) {
-        name = "reachability_graph"
-    }
-
     Consumes (matches, reachability_graph) {
         name = "reachability_graph"
     }
     Consumes (matches, query) {
         name = "query"
     }
-
-    Consumes (print_plant_EPN, plant_EPN) {
-        name = "epn"
-    }
-    Consumes (print_environment_EPN, environment_EPN) {
-        name = "epn"
-    }
-    Consumes (print_control_EPN, control_EPN) {
-        name = "epn"
-    }
-    Consumes (print_pn, pn) {
-        name = "pn"
-    }
 }