execute_model.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import random
  2. import sys
  3. import multiprocessing
  4. from compile import do_compile
  5. from link_and_load import link_and_load
  6. models = []
  7. code = []
  8. address = sys.argv[1]
  9. username = sys.argv[2]
  10. for f in sys.argv[3:]:
  11. if f.endswith(".mvc"):
  12. models.append(f)
  13. elif f.endswith(".alc"):
  14. code.append(f)
  15. else:
  16. print("Unknown file format for file " + f)
  17. print("Requires either .mvc or .alc")
  18. def do_compile_wrapper(filename, mode, grammar):
  19. do_compile(address, filename, str(random.random()), filename, mode, ["--debug"], grammar=grammar)
  20. def initialize_SCD():
  21. import urllib2
  22. import urllib
  23. import json
  24. username = random.random()
  25. urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "set_input", "value": '"%s"' % username, "username": "user_manager"}))).read()
  26. data = []
  27. data.append('4')
  28. data.append('"initialize_SCD"')
  29. data.append('"models/SimpleClassDiagrams"')
  30. data.append('"exit"')
  31. data.append('2')
  32. print("Initializing SCD")
  33. urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "set_input", "data": json.dumps(data), "username": username}))).read()
  34. urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "get_output", "username": username}))).read()
  35. print("Initialized!")
  36. for f in models:
  37. # Parse all models and upload them
  38. initialize_SCD()
  39. for m in models:
  40. do_compile_wrapper(f, "MO", "grammars/modelling.g")
  41. p = multiprocessing.Pool(multiprocessing.cpu_count() * 2)
  42. p.map(lambda i: do_compile_wrapper(i, "PO", grammar="grammars/actionlanguage.g"), code)
  43. link_and_load(address, username, code)