execute_model.py 1.6 KB

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