main.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #!/usr/bin/env python
  2. import sys
  3. sys.path.append("wrappers")
  4. from modelverse import *
  5. from subprocess import Popen, PIPE
  6. import json
  7. init(sys.argv[1])
  8. login("test_service", "my_password")
  9. def lola_service(port):
  10. json_input = service_get(port)
  11. input_data = json.loads(json_input)
  12. print input_data['petrinet']
  13. print input_data['query']
  14. query_formula = "--formula=EF ("+ input_data['query']+")"
  15. lola = Popen(["lola", "--path=path_output", query_formula, "--json=output.json"], stdin=PIPE, stdout=PIPE).communicate(input=input_data['petrinet'])
  16. output_file = open('output.json', 'r')
  17. result = json.load(output_file)
  18. output_file.close()
  19. # If safety query is violated resulting True in output
  20. path = ''
  21. if result['analysis']['result']:
  22. with open('path_output') as f:
  23. for transition in f:
  24. transition = transition.replace('\n',',')
  25. path = path + transition
  26. #json_result = '{"analysis_result": True , "path":\"'+path.rstrip(',') + '\"}'
  27. service_set(port, result['analysis']['result'])
  28. service_set(port, path.rstrip(','))
  29. service_register("lola", lola_service)
  30. while raw_input() != "STOP":
  31. # Stay active, as we shouldn't exit while the service is running!
  32. pass
  33. service_stop()