main.py 1.3 KB

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