1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import subprocess
- import sys
- import threading
- import time
- import random
- import urllib
- import urllib2
- import sys
- if len(sys.argv) > 1:
- address = sys.argv[1]
- MVK_ADDRESS, MVK_PORT = address.rsplit(":", 1)
- else:
- MVK_PORT = 8001
- MVK_ADDRESS = "http://127.0.0.1"
- address = "%s:%s" % (MVK_ADDRESS, MVK_PORT)
- ADMIN_USER = "admin"
- ADMIN_PASSWORD = "admin"
- SETUP_USER = "setup_task"
- # Compile the Statechart first
- subprocess.check_call([sys.executable, "-m", "sccd.compiler.sccdc", "-p", "threads", "server.xml"], cwd="hybrid_server")
- # Start up the MvK as a subprocess
- try:
- obj = subprocess.Popen([sys.executable, "-u", "run_mvk_server.py", str(MVK_PORT)], cwd="hybrid_server", stdout=subprocess.PIPE)
- #obj = subprocess.Popen([sys.executable, "run_mvk_server.py", str(MVK_PORT), "--kernel=legacy-interpreter"], cwd="hybrid_server")
- # Compile all MvC code
- subprocess.call([sys.executable, "scripts/execute_model.py", address, SETUP_USER, "bootstrap/*.alc", "core/*.alc", "core/*.mvc"])
- # Set the admin taskname and password
- urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "set_input", "value": '"%s"' % ADMIN_USER, "taskname": SETUP_USER}))).read()
- urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "set_input", "value": '"%s"' % ADMIN_PASSWORD, "taskname": SETUP_USER}))).read()
- urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "set_input", "value": '"%s"' % ADMIN_PASSWORD, "taskname": SETUP_USER}))).read()
- urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "set_input", "value": '"exit"', "taskname": SETUP_USER}))).read()
- while 1:
- print(obj.stdout.readline().strip())
- finally:
- try:
- obj.terminate()
- time.sleep(1)
- if not obj.poll():
- obj.kill()
- except:
- pass
|