|
@@ -0,0 +1,42 @@
|
|
|
|
+import subprocess
|
|
|
|
+import sys
|
|
|
|
+import threading
|
|
|
|
+import time
|
|
|
|
+import random
|
|
|
|
+import urllib
|
|
|
|
+import urllib2
|
|
|
|
+
|
|
|
|
+MVK_PORT = 8001
|
|
|
|
+MVK_ADDRESS = "http://localhost"
|
|
|
|
+ADMIN_USER = "admin"
|
|
|
|
+ADMIN_PASSWORD = "admin"
|
|
|
|
+SETUP_USER = "setup_user"
|
|
|
|
+
|
|
|
|
+address = "%s:%s" % (MVK_ADDRESS, MVK_PORT)
|
|
|
|
+
|
|
|
|
+# 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, "run_mvk_server.py", str(MVK_PORT), "--kernel=baseline-jit"], 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 username and password
|
|
|
|
+ urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "set_input", "value": '"%s"' % ADMIN_USER, "username": SETUP_USER}))).read()
|
|
|
|
+ urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "set_input", "value": '"%s"' % ADMIN_PASSWORD, "username": SETUP_USER}))).read()
|
|
|
|
+ urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "set_input", "value": '"%s"' % ADMIN_PASSWORD, "username": SETUP_USER}))).read()
|
|
|
|
+ urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "set_input", "value": '"exit"', "username": SETUP_USER}))).read()
|
|
|
|
+
|
|
|
|
+ while 1:
|
|
|
|
+ time.sleep(1)
|
|
|
|
+finally:
|
|
|
|
+ try:
|
|
|
|
+ obj.terminate()
|
|
|
|
+ time.sleep(1)
|
|
|
|
+ if not obj.poll():
|
|
|
|
+ obj.kill()
|
|
|
|
+ except:
|
|
|
|
+ pass
|