run_MvC_server.py 1.8 KB

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