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