run_MvC_server.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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. #obj = subprocess.Popen([sys.executable, "run_mvk_server.py", str(MVK_PORT), "--kernel=legacy-interpreter"], cwd="hybrid_server")
  20. # Compile all MvC code
  21. subprocess.call([sys.executable, "scripts/execute_model.py", address, SETUP_USER, "bootstrap/*.alc", "core/*.alc", "core/*.mvc"])
  22. # Set the admin taskname and password
  23. urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "set_input", "value": '"%s"' % ADMIN_USER, "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": '"%s"' % ADMIN_PASSWORD, "taskname": SETUP_USER}))).read()
  26. urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "set_input", "value": '"exit"', "taskname": SETUP_USER}))).read()
  27. while 1:
  28. time.sleep(1)
  29. finally:
  30. try:
  31. obj.terminate()
  32. time.sleep(1)
  33. if not obj.poll():
  34. obj.kill()
  35. except:
  36. pass