run_MvC_server.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import subprocess
  2. import sys
  3. import threading
  4. import time
  5. import random
  6. import urllib
  7. import urllib2
  8. MVK_PORT = 8001
  9. MVK_ADDRESS = "http://localhost"
  10. ADMIN_USER = "admin"
  11. ADMIN_PASSWORD = "admin"
  12. SETUP_USER = "setup_task"
  13. address = "%s:%s" % (MVK_ADDRESS, MVK_PORT)
  14. # Compile the Statechart first
  15. subprocess.check_call([sys.executable, "-m", "sccd.compiler.sccdc", "-p", "threads", "server.xml"], cwd="hybrid_server")
  16. # Start up the MvK as a subprocess
  17. try:
  18. obj = subprocess.Popen([sys.executable, "run_mvk_server.py", str(MVK_PORT), "--kernel=baseline-jit"], cwd="hybrid_server")
  19. # Compile all MvC code
  20. subprocess.call([sys.executable, "scripts/execute_model.py", address, SETUP_USER, "bootstrap/*.alc", "core/*.alc", "core/*.mvc"])
  21. # Set the admin taskname and password
  22. urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "set_input", "value": '"%s"' % ADMIN_USER, "taskname": SETUP_USER}))).read()
  23. urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "set_input", "value": '"%s"' % ADMIN_PASSWORD, "taskname": SETUP_USER}))).read()
  24. urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "set_input", "value": '"%s"' % ADMIN_PASSWORD, "taskname": SETUP_USER}))).read()
  25. urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "set_input", "value": '"exit"', "taskname": SETUP_USER}))).read()
  26. while 1:
  27. time.sleep(1)
  28. finally:
  29. try:
  30. obj.terminate()
  31. time.sleep(1)
  32. if not obj.poll():
  33. obj.kill()
  34. except:
  35. pass