123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279 |
- import unittest
- from utils import *
- import sys
- sys.path.append("wrappers")
- from modelverse import *
- class TestPowerWindow(unittest.TestCase):
- def setUp(self):
- self.proc, self.address = start_mvc()
- init(self.address)
- login("admin", "admin")
- def tearDown(self):
- kill(self.proc)
- def test_process_powerwindow_fast(self):
- model_add("ReachabilityGraph", "SimpleClassDiagrams", open("models/reachability_graph.mvc", "r").read())
- model_add("PetriNet", "SimpleClassDiagrams", open("integration/code/pn_design.mvc", 'r').read())
- model_add("Encapsulated_PetriNet", "SimpleClassDiagrams", open("models/petrinet_ports.mvc", 'r').read())
- model_add("PW_Plant", "SimpleClassDiagrams", open("models/plant_PW.mvc", 'r').read())
- model_add("PW_Environment", "SimpleClassDiagrams", open("models/environment_PW.mvc", 'r').read())
- model_add("PW_Control", "SimpleClassDiagrams", open("models/control_PW.mvc", 'r').read())
- model_add("Requirements", "SimpleClassDiagrams", open("models/requirements.mvc", 'r').read())
- model_add("Query", "SimpleClassDiagrams", open("models/query.mvc", 'r').read())
- model_add("Architecture", "SimpleClassDiagrams", open("models/architecture.mvc", 'r').read())
- model_add("pm_powerwindow", "ProcessModel", open("models/pm_req_analyse.mvc", 'r').read())
- assert model_list() == set([\
- ("ReachabilityGraph", "SimpleClassDiagrams"),
- ("PetriNet", "SimpleClassDiagrams"),
- ("Encapsulated_PetriNet", "SimpleClassDiagrams"),
- ("PW_Plant", "SimpleClassDiagrams"),
- ("PW_Environment", "SimpleClassDiagrams"),
- ("PW_Control", "SimpleClassDiagrams"),
- ("Requirements", "SimpleClassDiagrams"),
- ("Query", "SimpleClassDiagrams"),
- ("Architecture", "SimpleClassDiagrams"),
- ("pm_powerwindow", "ProcessModel"),
- ("SimpleClassDiagrams", "SimpleClassDiagrams"),
- ("TypeMapping", "SimpleClassDiagrams"),
- ("CoreFormalism", "SimpleClassDiagrams"),
- ("ManualOperation", "SimpleClassDiagrams"),
- ("bottom", "SimpleClassDiagrams"),
- ("ActionLanguage", "SimpleClassDiagrams"),
- ("ProcessModel", "SimpleClassDiagrams"),
- ("Tracability", "SimpleClassDiagrams"),
- ("conformance_mv", "ActionLanguage"),
- ("core", "CoreFormalism"),
- ("TM_ReachabilityGraph", "TypeMapping"),
- ("TM_PetriNet", "TypeMapping"),
- ("TM_Encapsulated_PetriNet", "TypeMapping"),
- ("TM_PW_Plant", "TypeMapping"),
- ("TM_PW_Environment", "TypeMapping"),
- ("TM_PW_Control", "TypeMapping"),
- ("TM_Requirements", "TypeMapping"),
- ("TM_Query", "TypeMapping"),
- ("TM_Architecture", "TypeMapping"),
- ("TM_pm_powerwindow", "TypeMapping"),
- ("TM_SimpleClassDiagrams", "TypeMapping"),
- ("TM_TypeMapping", "TypeMapping"),
- ("TM_CoreFormalism", "TypeMapping"),
- ("TM_ManualOperation", "TypeMapping"),
- ("TM_bottom", "TypeMapping"),
- ("TM_ActionLanguage", "TypeMapping"),
- ("TM_ProcessModel", "TypeMapping"),
- ("TM_Tracability", "TypeMapping"),
- ("TM_conformance_mv", "TypeMapping"),
- ("TM_core", "TypeMapping"),
- ])
- transformation_add_MANUAL({"Requirements": "Requirements"}, {"Requirements": "Requirements"}, "revise_req")
- transformation_add_MANUAL({"Requirements": "Requirements", "PW_Environment": "PW_Environment"}, {"PW_Environment": "PW_Environment"}, "revise_environment")
- transformation_add_MANUAL({"Requirements": "Requirements", "PW_Plant": "PW_Plant"}, {"PW_Plant": "PW_Plant"}, "revise_plant")
- transformation_add_MANUAL({"Requirements": "Requirements", "PW_Control": "PW_Control"}, {"PW_Control": "PW_Control"}, "revise_control")
- transformation_add_MANUAL({"Requirements": "Requirements", "Query": "Query"}, {"Query": "Query"}, "revise_query")
- transformation_add_MANUAL({"Requirements": "Requirements", "Architecture": "Architecture"}, {"Architecture": "Architecture"}, "revise_architecture")
- def tracability_CTRL2EPN():
- instantiate(None, "Association", ("PW_Control/State", "Encapsulated_PetriNet/Place"), ID="CTRL2EPN_link")
- instantiate(None, "Association", ("PW_Control/Transition", "Encapsulated_PetriNet/Transition"), ID="CTRL2EPN_tlink")
- def tracability_PLANT2EPN():
- instantiate(None, "Association", ("PW_Plant/State", "Encapsulated_PetriNet/Place"), ID="PLANT2EPN_link")
- instantiate(None, "Association", ("PW_Plant/Transition", "Encapsulated_PetriNet/Transition"), ID="PLANT2EPN_tlink")
- def tracability_ENV2EPN():
- instantiate(None, "Association", ("PW_Environment/Event", "Encapsulated_PetriNet/Place"), ID="ENV2EPN_link")
- def tracability_EPN2PN():
- instantiate(None, "Association", ("Encapsulated_PetriNet/Place", "PetriNet/Place"), ID="EPN2PN_transition_link")
- instantiate(None, "Association", ("Encapsulated_PetriNet/Transition", "PetriNet/Transition"), ID="EPN2PN_place_link")
- transformation_add_MT({}, {"PW_Plant": "PW_Plant", "PW_Environment": "PW_Environment", "PW_Control": "PW_Control", "Query": "Query", "Architecture": "Architecture", "Requirements": "Requirements"}, "make_initial_models", open("models/initialize.mvc", 'r').read())
- transformation_add_MT({"PW_Plant": "PW_Plant"}, {"Encapsulated_PetriNet": "Encapsulated_PetriNet"}, "plant_to_EPN", open("models/plant_to_EPN.mvc", 'r').read(), tracability_PLANT2EPN)
- transformation_add_MT({"PW_Control": "PW_Control"}, {"Encapsulated_PetriNet": "Encapsulated_PetriNet"}, "control_to_EPN", open("models/control_to_EPN.mvc", 'r').read(), tracability_CTRL2EPN)
- transformation_add_MT({"PW_Environment": "PW_Environment"}, {"Encapsulated_PetriNet": "Encapsulated_PetriNet"}, "environment_to_EPN", open("models/environment_to_EPN.mvc", 'r').read(), tracability_ENV2EPN)
- transformation_add_MT({"Encapsulated_PetriNet": "Encapsulated_PetriNet", "Architecture": "Architecture"}, {"PetriNet": "PetriNet"}, "combine_EPN", open("models/combine_EPN.mvc", 'r').read(), tracability_EPN2PN)
- transformation_add_MT({"ReachabilityGraph": "ReachabilityGraph", "Query": "Query"}, {}, "match", open("models/matches.mvc", 'r').read())
- transformation_add_AL({"PetriNet": "PetriNet"}, {"ReachabilityGraph": "ReachabilityGraph"}, "reachability", open("models/reachability.alc", 'r').read())
- transformation_add_AL({"ReachabilityGraph": "ReachabilityGraph"}, {}, "bfs", open("models/bfs.alc", 'r').read())
- transformation_add_AL({"EPN_Plant": "Encapsulated_PetriNet", "EPN_Control": "Encapsulated_PetriNet", "EPN_Environment": "Encapsulated_PetriNet"}, {"Encapsulated_PetriNet": "Encapsulated_PetriNet"}, "merge_EPN", open("models/merge_EPN.alc", 'r').read())
- global called
- called = 0
- def get_function(filename):
- def func():
- print("Uploading " + filename)
- global called
- if called > len(callbacks):
- raise Exception("Seemingly called some operation twice!")
- else:
- called += 1
- model_overwrite(None, open(filename, "r").read())
- return func
- cb_req = get_function("models/requirements_model.mvc")
- cb_plant = get_function("models/plant_model.mvc")
- cb_env = get_function("models/environment_model.mvc")
- cb_ctrl = get_function("models/control_model.mvc")
- cb_query = get_function("models/query_model.mvc")
- cb_arch = get_function("models/architecture_model.mvc")
- callbacks = {
- "revise_req": cb_req,
- "revise_plant": cb_plant,
- "revise_environment": cb_env,
- "revise_control": cb_ctrl,
- "revise_query": cb_query,
- "revise_architecture": cb_arch,
- }
- try:
- process_execute("pm_powerwindow", "pm_", callbacks)
- except:
- import traceback
- print(traceback.format_exc())
- if called != 6:
- print(called)
- raise Exception("Not executed sufficiently:" + str(called))
- @slow
- def test_process_powerwindow_debug(self):
- model_add("ReachabilityGraph", "SimpleClassDiagrams", open("models/reachability_graph.mvc", "r").read())
- model_add("PetriNet", "SimpleClassDiagrams", open("integration/code/pn_design.mvc", 'r').read())
- model_add("Encapsulated_PetriNet", "SimpleClassDiagrams", open("models/petrinet_ports.mvc", 'r').read())
- model_add("PW_Plant", "SimpleClassDiagrams", open("models/plant_PW.mvc", 'r').read())
- model_add("PW_Environment", "SimpleClassDiagrams", open("models/environment_PW.mvc", 'r').read())
- model_add("PW_Control", "SimpleClassDiagrams", open("models/control_PW.mvc", 'r').read())
- model_add("Requirements", "SimpleClassDiagrams", open("models/requirements.mvc", 'r').read())
- model_add("Query", "SimpleClassDiagrams", open("models/query.mvc", 'r').read())
- model_add("Architecture", "SimpleClassDiagrams", open("models/architecture.mvc", 'r').read())
- model_add("pm_powerwindow", "ProcessModel", open("models/pm_req_analyse.mvc", 'r').read())
- assert model_list() == set([\
- ("ReachabilityGraph", "SimpleClassDiagrams"),
- ("PetriNet", "SimpleClassDiagrams"),
- ("Encapsulated_PetriNet", "SimpleClassDiagrams"),
- ("PW_Plant", "SimpleClassDiagrams"),
- ("PW_Environment", "SimpleClassDiagrams"),
- ("PW_Control", "SimpleClassDiagrams"),
- ("Requirements", "SimpleClassDiagrams"),
- ("Query", "SimpleClassDiagrams"),
- ("Architecture", "SimpleClassDiagrams"),
- ("pm_powerwindow", "ProcessModel"),
- ("SimpleClassDiagrams", "SimpleClassDiagrams"),
- ("TypeMapping", "SimpleClassDiagrams"),
- ("CoreFormalism", "SimpleClassDiagrams"),
- ("ManualOperation", "SimpleClassDiagrams"),
- ("bottom", "SimpleClassDiagrams"),
- ("ActionLanguage", "SimpleClassDiagrams"),
- ("ProcessModel", "SimpleClassDiagrams"),
- ("Tracability", "SimpleClassDiagrams"),
- ("conformance_mv", "ActionLanguage"),
- ("core", "CoreFormalism"),
- ("TM_ReachabilityGraph", "TypeMapping"),
- ("TM_PetriNet", "TypeMapping"),
- ("TM_Encapsulated_PetriNet", "TypeMapping"),
- ("TM_PW_Plant", "TypeMapping"),
- ("TM_PW_Environment", "TypeMapping"),
- ("TM_PW_Control", "TypeMapping"),
- ("TM_Requirements", "TypeMapping"),
- ("TM_Query", "TypeMapping"),
- ("TM_Architecture", "TypeMapping"),
- ("TM_pm_powerwindow", "TypeMapping"),
- ("TM_SimpleClassDiagrams", "TypeMapping"),
- ("TM_TypeMapping", "TypeMapping"),
- ("TM_CoreFormalism", "TypeMapping"),
- ("TM_ManualOperation", "TypeMapping"),
- ("TM_bottom", "TypeMapping"),
- ("TM_ActionLanguage", "TypeMapping"),
- ("TM_ProcessModel", "TypeMapping"),
- ("TM_Tracability", "TypeMapping"),
- ("TM_conformance_mv", "TypeMapping"),
- ("TM_core", "TypeMapping"),
- ])
- transformation_add_MANUAL({"Requirements": "Requirements"}, {"Requirements": "Requirements"}, "revise_req")
- transformation_add_MANUAL({"Requirements": "Requirements", "PW_Environment": "PW_Environment"}, {"PW_Environment": "PW_Environment"}, "revise_environment")
- transformation_add_MANUAL({"Requirements": "Requirements", "PW_Plant": "PW_Plant"}, {"PW_Plant": "PW_Plant"}, "revise_plant")
- transformation_add_MANUAL({"Requirements": "Requirements", "PW_Control": "PW_Control"}, {"PW_Control": "PW_Control"}, "revise_control")
- transformation_add_MANUAL({"Requirements": "Requirements", "Query": "Query"}, {"Query": "Query"}, "revise_query")
- transformation_add_MANUAL({"Requirements": "Requirements", "Architecture": "Architecture"}, {"Architecture": "Architecture"}, "revise_architecture")
- def tracability_CTRL2EPN():
- instantiate(None, "Association", ("PW_Control/State", "Encapsulated_PetriNet/Place"), ID="CTRL2EPN_link")
- instantiate(None, "Association", ("PW_Control/Transition", "Encapsulated_PetriNet/Transition"), ID="CTRL2EPN_tlink")
- def tracability_PLANT2EPN():
- instantiate(None, "Association", ("PW_Plant/State", "Encapsulated_PetriNet/Place"), ID="PLANT2EPN_link")
- instantiate(None, "Association", ("PW_Plant/Transition", "Encapsulated_PetriNet/Transition"), ID="PLANT2EPN_tlink")
- def tracability_ENV2EPN():
- instantiate(None, "Association", ("PW_Environment/Event", "Encapsulated_PetriNet/Place"), ID="ENV2EPN_link")
- def tracability_EPN2PN():
- instantiate(None, "Association", ("Encapsulated_PetriNet/Place", "PetriNet/Place"), ID="EPN2PN_transition_link")
- instantiate(None, "Association", ("Encapsulated_PetriNet/Transition", "PetriNet/Transition"), ID="EPN2PN_place_link")
- transformation_add_MT({}, {"PW_Plant": "PW_Plant", "PW_Environment": "PW_Environment", "PW_Control": "PW_Control", "Query": "Query", "Architecture": "Architecture", "Requirements": "Requirements"}, "make_initial_models", open("models/initialize.mvc", 'r').read())
- transformation_add_MT({"PW_Plant": "PW_Plant"}, {"Encapsulated_PetriNet": "Encapsulated_PetriNet"}, "plant_to_EPN", open("models/plant_to_EPN.mvc", 'r').read(), tracability_PLANT2EPN)
- transformation_add_MT({"PW_Control": "PW_Control"}, {"Encapsulated_PetriNet": "Encapsulated_PetriNet"}, "control_to_EPN", open("models/control_to_EPN.mvc", 'r').read(), tracability_CTRL2EPN)
- transformation_add_MT({"PW_Environment": "PW_Environment"}, {"Encapsulated_PetriNet": "Encapsulated_PetriNet"}, "environment_to_EPN", open("models/environment_to_EPN.mvc", 'r').read(), tracability_ENV2EPN)
- transformation_add_MT({"Encapsulated_PetriNet": "Encapsulated_PetriNet", "Architecture": "Architecture"}, {"PetriNet": "PetriNet"}, "combine_EPN", open("models/combine_EPN.mvc", 'r').read(), tracability_EPN2PN)
- transformation_add_MT({"ReachabilityGraph": "ReachabilityGraph", "Query": "Query"}, {}, "match", open("models/matches.mvc", 'r').read())
- transformation_add_AL({"PetriNet": "PetriNet"}, {"ReachabilityGraph": "ReachabilityGraph"}, "reachability", open("models/reachability.alc", 'r').read())
- transformation_add_AL({"ReachabilityGraph": "ReachabilityGraph"}, {}, "bfs", open("models/bfs.alc", 'r').read())
- transformation_add_AL({"EPN_Plant": "Encapsulated_PetriNet", "EPN_Control": "Encapsulated_PetriNet", "EPN_Environment": "Encapsulated_PetriNet"}, {"Encapsulated_PetriNet": "Encapsulated_PetriNet"}, "merge_EPN", open("models/merge_EPN.alc", 'r').read())
- global called
- called = 0
- def get_function(filename, fixed=None):
- def func():
- global called
- if called > len(callbacks) * 2:
- raise Exception("Seemingly called some operation twice!")
- called += 1
- if called > len(callbacks) and fixed is not None:
- model_overwrite(None, open(fixed, "r").read())
- else:
- model_overwrite(None, open(filename, "r").read())
- return func
- cb_req = get_function("models/requirements_model.mvc")
- cb_plant = get_function("models/plant_model.mvc")
- cb_env = get_function("models/environment_model.mvc")
- cb_ctrl = get_function("models/control_model_wrong.mvc", "models/control_model.mvc")
- cb_query = get_function("models/query_model.mvc")
- cb_arch = get_function("models/architecture_model.mvc")
- callbacks = {
- "revise_req": cb_req,
- "revise_plant": cb_plant,
- "revise_environment": cb_env,
- "revise_control": cb_ctrl,
- "revise_query": cb_query,
- "revise_architecture": cb_arch,
- }
- try:
- process_execute("pm_powerwindow", "pm_", callbacks)
- except:
- import traceback
- print(traceback.format_exc())
- if called != 11:
- print(called)
- raise Exception("Not executed sufficiently:" + str(called))
|