In [3]:
import docker, json, os
import urllib.request
from RSPClient import RSPClient
client = docker.DockerClient(base_url='http://rspcollector.westeurope.cloudapp.azure.com:2375')
In [3]:
tobserve = []
rsp = None
experiment_execution={}
def w(p, i):
experiment_execution[p] = i
webURL= urllib.request.urlopen('https://rsplab.blob.core.windows.net/experiments/experiment.json')
data = webURL.read()
encoding = webURL.info().get_content_charset('utf-8')
experiment = json.loads(data.decode(encoding))
print(json.dumps(experiment, indent=4, sort_keys=True))
print(experiment['engine'])
print(experiment['engine']['port'])
rsp = RSPClient(experiment['engine']['host'], experiment['engine']['port'])
experiment_execution['Experiment'] = experiment
experiment_execution['E'] = rsp.engine()
experiment_execution['D'] = None
experiment_execution['S'] = None
experiment_execution['Q'] = []
experiment_execution['K'] = None # save the KPIs
experiment_execution['R'] = None # save the result location
root = experiment_execution['E']['runUUID']
datasets=[]
for d in experiment['datasets']:
print("Registering dataset: " + str(d['name']))
datasets.append(rsp.register_dataset( d['name'], d['location'], d['serialization'],d['default']))
streams=[]
for s in experiment['streams']:
print("Registering stream: " + str(s['name']))
streams.append(rsp.register_stream( s['name'], s['location'] ))
w('S',streams)
for q in experiment['queries']:
print("Registering query " + q['name'] +" "+ str(q['repeat']) + " times.")
for i in range(0,q['repeat']):
print(rsp.register_query(q['name'], q['type'], q['body']))
for o in q['observers']:
print("Registering observers for "+q['name']+ " : " + o['name'])
ro = rsp.new_observer(q['name'], o['name'], o);
if o['persist']:
tobserve.append((q,ro));
w('Q', rsp.queries());
pretty=json.dumps(experiment_execution, indent=4, sort_keys=True)
for (q,ro) in tobserve:
print(ro)
client.containers.run("rspsink", name=ro['@id']+"_collector",
command=[ro['sld:streamLocation'], q['name'], "./data/"+root+"/"+q["result_path"]+ro['@id']+"/", str(experiment['metadata']['duration']), pretty],
volumes={'resultsdata': {'bind': '/usr/src/app/data', 'mode': 'rw'}},
detach=True)
client.containers.list()
print("END")
In [13]:
Out[13]:
In [16]:
Out[16]:
In [7]:
!ls
In [5]:
for c in client.containers.list():
print(c.name)
In [1]:
from altair import tutorial
tutorial()
In [ ]: