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