execute_model.py 1.7 KB

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