Browse Source

Added a PowerWindow test where the control model is flawed and fixed
later on

Yentl Van Tendeloo 8 years ago
parent
commit
1ed912e06f
1 changed files with 480 additions and 1 deletions
  1. 480 1
      integration/test_powerwindow.py

+ 480 - 1
integration/test_powerwindow.py

@@ -270,7 +270,7 @@ class TestPowerWindow(unittest.TestCase):
                 "exit",
                 # revise_control
                 "upload",
-                ] + get_model_constructor_2("models/control_model_wrong.mvc") + [
+                ] + get_model_constructor_2("models/control_model.mvc") + [
                 "exit",
                 # revise_query
                 "upload",
@@ -932,3 +932,482 @@ class TestPowerWindow(unittest.TestCase):
                 # Finished, so we go back to the start
                 "Ready for command...",
             ]))
+
+    @slow
+    def test_process_powerwindow_slow(self):
+        self.assertTrue(run_file(all_files,
+            [ "root", "root", "root", 
+                "model_add",
+                    "SimpleClassDiagrams",
+                    "ReachabilityGraph",
+                    ] + get_model_constructor_2("models/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.mvc") + [
+                "model_add",
+                    "SimpleClassDiagrams",
+                    "Architecture",
+                    ] + get_model_constructor_2("models/architecture.mvc") + [
+                "model_list",
+                "transformation_add_MT_language",
+                "PetriNet",
+                "Encapsulated_PetriNet",
+                "PW_Plant",
+                "PW_Control",
+                "PW_Environment",
+                "Requirements",
+                "ReachabilityGraph",
+                "Query",
+                "Architecture",
+                "",
+                "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",
+                    "",
+                    "Requirements",
+                    "",
+                    "revise_req",
+                "transformation_add_MANUAL",
+                    "Requirements",
+                    "PW_Environment",
+                    "",
+                    "PW_Environment",
+                    "",
+                    "revise_environment",
+                "transformation_add_MANUAL",
+                    "Requirements",
+                    "PW_Plant",
+                    "",
+                    "PW_Plant",
+                    "",
+                    "revise_plant",
+                "transformation_add_MANUAL",
+                    "Requirements",
+                    "PW_Control",
+                    "",
+                    "PW_Control",
+                    "",
+                    "revise_control",
+                "transformation_add_MANUAL",
+                    "Requirements",
+                    "Query",
+                    "",
+                    "Query",
+                    "",
+                    "revise_query",
+                "transformation_add_MANUAL",
+                    "Requirements",
+                    "Architecture",
+                    "",
+                    "Architecture",
+                    "",
+                    "revise_architecture",
+                "transformation_add_MT",
+                    "All_RAM",
+                    "",
+                    "PW_Plant",
+                    "PW_Environment",
+                    "PW_Control",
+                    "Query",
+                    "Architecture",
+                    "Requirements",
+                    "",
+                    "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",
+                    "Architecture",
+                    "",
+                    "Encapsulated_PetriNet",
+                    "",
+                    "combine_EPN",
+                    ] + get_model_constructor_2("models/combine_EPN.mvc") + [
+                "transformation_add_MT",
+                    "All_RAM",
+                    "ReachabilityGraph",
+                    "Query",
+                    "",
+                    "",
+                    "match",
+                    ] + get_model_constructor_2("models/matches.mvc") + [
+                "transformation_add_AL",
+                    "PetriNet",
+                    "",
+                    "ReachabilityGraph",
+                    "",
+                    "reachability",
+                    ] + get_constructor(open("models/reachability.alc", "r").read()) + [
+                "transformation_add_AL",
+                    "PetriNet",
+                    "",
+                    "",
+                    "pn_print",
+                    ] + get_constructor(open("models/pn_print.alc", "r").read()) + [
+                "transformation_add_AL",
+                    "Encapsulated_PetriNet",
+                    "",
+                    "",
+                    "epn_print",
+                    ] + get_constructor(open("models/epn_print.alc", "r").read()) + [
+                "transformation_add_AL",
+                    "ReachabilityGraph",
+                    "",
+                    "",
+                    "bfs",
+                    ] + get_constructor(open("models/bfs.alc", "r").read()) + [
+                "model_list",
+                "process_execute",
+                "pm_powerwindow",
+                "pm_",
+                # revise_req
+                "upload",
+                ] + get_model_constructor_2("models/requirements_model.mvc") + [
+                "exit",
+                #### First phase
+                # revise_plant
+                "upload",
+                ] + get_model_constructor_2("models/plant_model.mvc") + [
+                "exit",
+                # revise_environment
+                "upload",
+                ] + get_model_constructor_2("models/environment_model.mvc") + [
+                "exit",
+                # revise_control
+                "upload",
+                ] + get_model_constructor_2("models/control_model_wrong.mvc") + [
+                "exit",
+                # revise_query
+                "upload",
+                ] + get_model_constructor_2("models/query_model.mvc") + [
+                "exit",
+                # revise_architecture
+                "upload",
+                ] + get_model_constructor_2("models/architecture_model.mvc") + [
+                "exit",
+                #### Second phase
+                # revise_plant
+                "upload",
+                ] + get_model_constructor_2("models/plant_model.mvc") + [
+                "exit",
+                # revise_environment
+                "upload",
+                ] + get_model_constructor_2("models/environment_model.mvc") + [
+                "exit",
+                # revise_control
+                "upload",
+                ] + get_model_constructor_2("models/control_model.mvc") + [
+                "exit",
+                # revise_query
+                "upload",
+                ] + get_model_constructor_2("models/query_model.mvc") + [
+                "exit",
+                # revise_architecture
+                "upload",
+                ] + get_model_constructor_2("models/architecture_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 * 10
+                ] + [   "Creating new model!",
+                        "Model type?",
+                        "Model name?",
+                        "Waiting for model constructors...",
+                        "Model upload success!",
+                        "Ready for command...", ] * 10 + [
+                # 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",
+                     "  Architecture : SimpleClassDiagrams",
+                     ]),
+                "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 * 6
+                ] + [
+                    "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)?",
+                    "Name of Manual operation model?",
+                    "Ready for command...",
+                    ] * 6 + [
+                # transformation_add_MT * 6
+                ] + [
+                    "RAMified metamodel to use?",
+                    "Supported metamodels:",
+                    set(["  PetriNet",
+                         "  Encapsulated_PetriNet",
+                         "  PW_Plant",
+                         "  Architecture",
+                         "  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)?",
+                    "Name of new transformation?",
+                    "Waiting for model constructors...",
+                    "Ready for command...",
+                    ] * 6 + [
+                # transformation_add_AL * 4
+                ] + [   "Which metamodels do you want to use as source for the action code (empty string to finish)?",
+                        "Which metamodels do you want to use as target for the action code (empty string to finish)?",
+                        "Name of Action Language model?",
+                        "Waiting for model constructors...",
+                        "Ready for command...", ] * 4 + [
+                # 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",
+                     "  revise_req : ManualOperation",
+                     "  revise_plant : ManualOperation",
+                     "  revise_control : ManualOperation",
+                     "  revise_environment : ManualOperation",
+                     "  revise_query : ManualOperation",
+                     "  revise_architecture : ManualOperation",
+                     "  __merged_revise_req : SimpleClassDiagrams",
+                     "  __merged_All_RAM : SimpleClassDiagrams",
+                     "  __merged_revise_plant : SimpleClassDiagrams",
+                     "  __merged_revise_control : SimpleClassDiagrams",
+                     "  __merged_revise_environment : SimpleClassDiagrams",
+                     "  __merged_revise_query : SimpleClassDiagrams",
+                     "  __merged_revise_architecture : SimpleClassDiagrams",
+                     "  pn_print : ActionLanguage",
+                     "  epn_print : ActionLanguage",
+                     "  match : 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",
+                     "  Architecture : SimpleClassDiagrams",
+                     "  bfs : ActionLanguage",
+                     ]),
+                "Ready for command...",
+                # process_execute
+                "Which process model do you want to execute?",
+                "Model prefix to use?",
+                # Manual transformation revise_req
+                "Please perform manual transformation \"revise_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 revise_plant
+                "Please perform manual transformation \"revise_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 revise_environment
+                "Please perform manual transformation \"revise_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 revise_control
+                "Please perform manual transformation \"revise_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 revise_query
+                "Please perform manual transformation \"revise_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.",
+                # Manual transformation revise_architecture
+                "Please perform manual transformation \"revise_architecture\"",
+                "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
+                #### ERROR detected: go back to the start to fix it
+                # Manual transformation revise_plant
+                "Please perform manual transformation \"revise_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 revise_environment
+                "Please perform manual transformation \"revise_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 revise_control
+                "Please perform manual transformation \"revise_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 revise_query
+                "Please perform manual transformation \"revise_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.",
+                # Manual transformation revise_architecture
+                "Please perform manual transformation \"revise_architecture\"",
+                "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.",
+                # Finished, so we go back to the start
+                "Ready for command...",
+            ]))
+