execute_model.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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. # Parse all models and upload them
  37. initialize_SCD()
  38. for m in models:
  39. do_compile_wrapper(m, "MO", "grammars/modelling.g")
  40. p = multiprocessing.Pool(multiprocessing.cpu_count() * 2)
  41. p.map(lambda i: do_compile_wrapper(i, "PO", grammar="grammars/actionlanguage.g"), code)
  42. link_and_load(address, username, code)