Mercurial > code > home > repos > homeauto
changeset 1411:21d0cd98ef7a
mock output mode
Ignore-this: a7b9dd184a2f3c811cd7c1d3ca4a002c
darcs-hash:af6eb3949372201ed9b414ce038849c4ce8423cf
author | drewp <drewp@bigasterisk.com> |
---|---|
date | Wed, 24 Jul 2019 00:34:41 -0700 |
parents | dc70ee50c981 |
children | 302063bfb8ff |
files | service/reasoning/actions.py service/reasoning/reasoning.py service/reasoning/tasks.py |
diffstat | 3 files changed, 28 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/service/reasoning/actions.py Tue Jul 23 17:40:55 2019 -0700 +++ b/service/reasoning/actions.py Wed Jul 24 00:34:41 2019 -0700 @@ -2,6 +2,8 @@ from twisted.internet import reactor import logging import urllib +import json +import time import treq log = logging.getLogger('output') @@ -11,8 +13,9 @@ REASONING = Namespace("http://projects.bigasterisk.com/ns/reasoning/") class HttpPutOutput(object): - def __init__(self, url): + def __init__(self, url, mockOutput=False): self.url = url + self.mockOutput = mockOutput self.payload = None self.foafAgent = None self.nextCall = None @@ -37,8 +40,12 @@ self.nextCall = None self.lastErr = None log.debug("PUT %s payload=%s agent=%s", self.url, self.payload, self.foafAgent) - self.currentRequest = treq.put(self.url, data=self.payload, headers=h, timeout=3) - self.currentRequest.addCallback(self.onResponse).addErrback(self.onError) + if not self.mockOutput: + self.currentRequest = treq.put(self.url, data=self.payload, headers=h, timeout=3) + self.currentRequest.addCallback(self.onResponse).addErrback(self.onError) + else: + reactor.callLater(.2, self.onResponse, None) + self.numRequests += 1 def onResponse(self, resp): @@ -55,17 +62,19 @@ class HttpPutOutputs(object): """these grow forever""" - def __init__(self): + def __init__(self, mockOutput=False): + self.mockOutput = mockOutput self.state = {} # url: HttpPutOutput def put(self, url, payload, foafAgent): if url not in self.state: - self.state[url] = HttpPutOutput(url) + self.state[url] = HttpPutOutput(url, mockOutput=self.mockOutput) self.state[url].setPayload(payload, foafAgent) class Actions(object): - def __init__(self, sendToLiveClients): - self.putOutputs = HttpPutOutputs() + def __init__(self, sendToLiveClients, mockOutput=False): + self.mockOutput = mockOutput + self.putOutputs = HttpPutOutputs(mockOutput=mockOutput) self.sendToLiveClients = sendToLiveClients def putResults(self, deviceGraph, inferred): @@ -178,7 +187,8 @@ self.sendToLiveClients({"s":s, "p":p, "o":postTarget}) log.debug(" POST %s", postTarget) - treq.post(postTarget, timeout=2).addErrback(err) + if not self.mockOutput: + treq.post(postTarget, timeout=2).addErrback(err) def _putDevices(self, deviceGraph, inferred): activated = set()
--- a/service/reasoning/reasoning.py Tue Jul 23 17:40:55 2019 -0700 +++ b/service/reasoning/reasoning.py Wed Jul 24 00:34:41 2019 -0700 @@ -49,10 +49,10 @@ ) class Reasoning(object): - def __init__(self): + def __init__(self, mockOutput=False): self.prevGraph = None - self.actions = Actions(sendToLiveClients) + self.actions = Actions(sendToLiveClients, mockOutput=mockOutput) self.rulesN3 = "(not read yet)" self.inferred = Graph() # gets replaced in each graphChanged call @@ -304,9 +304,10 @@ -r Verbose log on the reasoning phase and web stuff -o Verbose log on the actions/output phase -v Everywhere verbose + --mockoutput Don't make outgoing requests """) - - r = Reasoning() + + r = Reasoning(arg['--mockoutput']) configLogging(arg) reactor.listenTCP(9071, Application(r), interface='::') reactor.run()
--- a/service/reasoning/tasks.py Tue Jul 23 17:40:55 2019 -0700 +++ b/service/reasoning/tasks.py Wed Jul 24 00:34:41 2019 -0700 @@ -15,12 +15,16 @@ @task def shell(ctx): - ctx.run(f'docker run --rm -it --cap-add SYS_PTRACE --dns 10.2.0.1 --dns-search bigasterisk.com --net=host {TAG} /bin/bash', pty=True) + ctx.run(f'docker run --rm -it --cap-add SYS_PTRACE -v `pwd`:/mnt --dns 10.2.0.1 --dns-search bigasterisk.com --net=host {TAG} /bin/bash', pty=True) @task(pre=[build_image]) def local_run(ctx): ctx.run(f'docker run --rm -it -p {PORT}:{PORT} -v `pwd`:/mnt --dns 10.2.0.1 --dns-search bigasterisk.com --net=host {TAG} python /mnt/{JOB}.py -iro', pty=True) +@task(pre=[build_image]) +def local_run_mock(ctx): + ctx.run(f'docker run --rm -it -p {PORT}:{PORT} -v `pwd`:/mnt --dns 10.2.0.1 --dns-search bigasterisk.com --net=host {TAG} python /mnt/{JOB}.py -iro --mockoutput', pty=True) + @task(pre=[push_image]) def redeploy(ctx): ctx.run(f'supervisorctl -s http://bang:9001/ restart {JOB}_{PORT}')