summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPedro Alvarez <pedro.alvarez@codethink.co.uk>2016-03-04 17:46:43 +0000
committerPedro Alvarez <pedro.alvarez@codethink.co.uk>2016-03-27 11:53:01 +0000
commit1656803e515bb65bc3a292b4317c6e4a3f0c4a33 (patch)
tree6f38ccae980f8806980c7240160003a4608c8003
parent45e39e81698df91251c7fac5a642e211e98d834b (diff)
downloadmorph-1656803e515bb65bc3a292b4317c6e4a3f0c4a33.tar.gz
mocking things
Change-Id: I8c8a82947acbdccde3d8ee3ac6c78301d4521630
-rw-r--r--gear/client.py63
-rw-r--r--gear/worker.py31
2 files changed, 94 insertions, 0 deletions
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)
+