From 1656803e515bb65bc3a292b4317c6e4a3f0c4a33 Mon Sep 17 00:00:00 2001 From: Pedro Alvarez Date: Fri, 4 Mar 2016 17:46:43 +0000 Subject: mocking things Change-Id: I8c8a82947acbdccde3d8ee3ac6c78301d4521630 --- gear/client.py | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ gear/worker.py | 31 +++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 gear/client.py create mode 100644 gear/worker.py diff --git a/gear/client.py b/gear/client.py new file mode 100644 index 00000000..4ef06d26 --- /dev/null +++ b/gear/client.py @@ -0,0 +1,63 @@ +import gear +import sys +import json +import distbuild + +gear.Server() + +class aGearmanClient(gear.Client): + def __init__(self): + super(aGearmanClient, self).__init__() + print "init" + self.finished = False + + def handleWorkComplete(self, packet): + job = super(aGearmanClient, self).handleWorkComplete(packet) + print "workcomplete" + self.finished = True + artifact = distbuild.decode_artifact_reference(job.data[-1]) + print artifact.dependencies[0].dependencies + return job + + def handleWorkData(self, packet): + job = super(aGearmanClient, self).handleWorkData(packet) + print job.data[-1] + job.data = [] + return job + + def handleWorkFail(self, packet): + job = super(aGearmanClient, self).handleWorkFail(packet) + print "workfail" + return job + + def handleWorkException(self, packet): + job = super(aGearmanClient, self).handleWorkException(packet) + print "workexception" + return job + + def handleDisconnect(self, job): + job = super(aGearmanClient, self).handleDisconnect(job) + print "disconnect" + +client = aGearmanClient() +client.addServer('localhost') +client.waitForServer() # Wait for at least one server to be connected +print "server connected" +#job = gear.Job("reverse", "test string") +build_graph_request = {} +build_graph_request['repo'] = "baserock:baserock/definitions" +build_graph_request['ref'] = "master" +build_graph_request['system'] = "systems/minimal-system-x86_64-generic.morph" + +s=json.dumps(build_graph_request) + +print s +print "json produced" + +job = gear.Job("build-graph", s) +client.submitJob(job) + +# loop so that client doesn't die +while True: + import time + time.sleep(2) diff --git a/gear/worker.py b/gear/worker.py new file mode 100644 index 00000000..1c02a112 --- /dev/null +++ b/gear/worker.py @@ -0,0 +1,31 @@ +import gear +worker = gear.Worker('reverser') +worker.addServer('localhost') +worker.registerFunction("reverse") +worker.registerFunction("build-graph") +import time +import json +from subprocess import Popen, PIPE, STDOUT + + +while True: + print "waiting for job" + job = worker.getJob() + print "received job" + if job.name == "reverse": + for x in range(0, 100000): + job.sendWorkData("This is: %s" % x) + job.sendWorkComplete("answer") + elif job.name == "build-graph": + bg_request=json.loads(job.arguments) + print "build graph!!!" + print bg_request['repo'] + print bg_request['ref'] + print bg_request['system'] + cmd = ['morph', 'calculate-build-graph', '--quiet', bg_request['repo'], bg_request['ref'], bg_request['system']] + print cmd + p = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True) + output = p.stdout.read() + print "finished computing build graph" + job.sendWorkComplete(output) + -- cgit v1.2.1