import unittest from utils import * model_list = set([" SimpleClassDiagrams : SimpleClassDiagrams", " CoreFormalism : SimpleClassDiagrams", " ManualOperation : SimpleClassDiagrams", " ActionLanguage : SimpleClassDiagrams", " ProcessModel : SimpleClassDiagrams", " Tracability : SimpleClassDiagrams", " core : CoreFormalism"]) model_full_list = set([" 221 root admin SimpleClassDiagrams : SimpleClassDiagrams", " 221 root admin CoreFormalism : SimpleClassDiagrams", " 221 root admin ActionLanguage : SimpleClassDiagrams", " 221 root admin ManualOperation : SimpleClassDiagrams", " 221 root admin ProcessModel : SimpleClassDiagrams", " 221 root admin Tracability : SimpleClassDiagrams", " 200 root admin core : CoreFormalism"]) all_files = [ "core/mini_modify.alc", "core/core_formalism.mvc", "core/core_algorithm.alc", "core/pm.mvc", "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 TestPowerWindow(unittest.TestCase): def test_process_powerwindow_fast(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", "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", # 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!", "Mode: r/w", "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!", None, "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 operation (empty string to finish)?", "Which metamodels do you want to use as target for the operation (empty string to finish)?", "Name of 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 metamodels do you want to use as source for the operation (empty string to finish)?", "Which metamodels do you want to use as target for the operation (empty string to finish)?", "Name of new operation?", "Waiting for model constructors...", "Ready for command...", ] * 6 + [ # transformation_add_AL * 2 ] + [ "Which metamodels do you want to use as source for the operation (empty string to finish)?", "Which metamodels do you want to use as target for the operation (empty string to finish)?", "Name of operation model?", "Waiting for model constructors...", "Ready for command...", ] * 2 + [ # 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_bfs : SimpleClassDiagrams", " __merged_reachability : SimpleClassDiagrams", " __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", " 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 operation \"revise_req\"", "Model loaded, ready for commands!", "Mode: r/w", "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 operation \"revise_plant\"", "Model loaded, ready for commands!", "Mode: r/w", "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 operation \"revise_environment\"", "Model loaded, ready for commands!", "Mode: r/w", "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 operation \"revise_control\"", "Model loaded, ready for commands!", "Mode: r/w", "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 operation \"revise_query\"", "Model loaded, ready for commands!", "Mode: r/w", "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 operation \"revise_architecture\"", "Model loaded, ready for commands!", "Mode: r/w", "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...", ])) @slow def test_process_powerwindow_debug(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_debug.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!", "Mode: r/w", "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!", None, "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 operation (empty string to finish)?", "Which metamodels do you want to use as target for the operation (empty string to finish)?", "Name of 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 metamodels do you want to use as source for the operation (empty string to finish)?", "Which metamodels do you want to use as target for the operation (empty string to finish)?", "Name of new operation?", "Waiting for model constructors...", "Ready for command...", ] * 6 + [ # transformation_add_AL * 4 ] + [ "Which metamodels do you want to use as source for the operation (empty string to finish)?", "Which metamodels do you want to use as target for the operation (empty string to finish)?", "Name of operation 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_reachability : SimpleClassDiagrams", " __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", " __merged_pn_print : SimpleClassDiagrams", " __merged_epn_print : SimpleClassDiagrams", " __merged_bfs : 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 operation \"revise_req\"", "Model loaded, ready for commands!", "Mode: r/w", "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 operation \"revise_plant\"", "Model loaded, ready for commands!", "Mode: r/w", "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 operation \"revise_environment\"", "Model loaded, ready for commands!", "Mode: r/w", "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 operation \"revise_control\"", "Model loaded, ready for commands!", "Mode: r/w", "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 operation \"revise_query\"", "Model loaded, ready for commands!", "Mode: r/w", "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 operation \"revise_architecture\"", "Model loaded, ready for commands!", "Mode: r/w", "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 # Got an error! "Found error path:", None, # Manual transformation revise_plant "Please perform manual operation \"revise_plant\"", "Model loaded, ready for commands!", "Mode: r/w", "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 operation \"revise_environment\"", "Model loaded, ready for commands!", "Mode: r/w", "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 operation \"revise_control\"", "Model loaded, ready for commands!", "Mode: r/w", "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 operation \"revise_query\"", "Model loaded, ready for commands!", "Mode: r/w", "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 operation \"revise_architecture\"", "Model loaded, ready for commands!", "Mode: r/w", "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...", ])) @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", "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!", "Mode: r/w", "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!", None, "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 operation (empty string to finish)?", "Which metamodels do you want to use as target for the operation (empty string to finish)?", "Name of 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 metamodels do you want to use as source for the operation (empty string to finish)?", "Which metamodels do you want to use as target for the operation (empty string to finish)?", "Name of new operation?", "Waiting for model constructors...", "Ready for command...", ] * 6 + [ # transformation_add_AL * 2 ] + [ "Which metamodels do you want to use as source for the operation (empty string to finish)?", "Which metamodels do you want to use as target for the operation (empty string to finish)?", "Name of operation model?", "Waiting for model constructors...", "Ready for command...", ] * 2 + [ # 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_bfs : SimpleClassDiagrams", " __merged_reachability : SimpleClassDiagrams", " __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", " 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 operation \"revise_req\"", "Model loaded, ready for commands!", "Mode: r/w", "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 operation \"revise_plant\"", "Model loaded, ready for commands!", "Mode: r/w", "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 operation \"revise_environment\"", "Model loaded, ready for commands!", "Mode: r/w", "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 operation \"revise_control\"", "Model loaded, ready for commands!", "Mode: r/w", "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 operation \"revise_query\"", "Model loaded, ready for commands!", "Mode: r/w", "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 operation \"revise_architecture\"", "Model loaded, ready for commands!", "Mode: r/w", "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 "Found error path:", None, # Manual transformation revise_plant "Please perform manual operation \"revise_plant\"", "Model loaded, ready for commands!", "Mode: r/w", "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 operation \"revise_environment\"", "Model loaded, ready for commands!", "Mode: r/w", "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 operation \"revise_control\"", "Model loaded, ready for commands!", "Mode: r/w", "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 operation \"revise_query\"", "Model loaded, ready for commands!", "Mode: r/w", "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 operation \"revise_architecture\"", "Model loaded, ready for commands!", "Mode: r/w", "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...", ]))