summary refs log tree commit diff
path: root/tests/server.py
diff options
context:
space:
mode:
authorRichard van der Hoff <1389908+richvdh@users.noreply.github.com>2018-08-17 14:58:45 +0100
committerGitHub <noreply@github.com>2018-08-17 14:58:45 +0100
commit63260397c6ab6925da0ba3bd24d398001cd8208b (patch)
tree3ef57e48328cd2364afee5810f83d550e0304f8a /tests/server.py
parentMerge pull request #3700 from matrix-org/rav/wait_for_producers (diff)
parentchangelog (diff)
downloadsynapse-63260397c6ab6925da0ba3bd24d398001cd8208b.tar.xz
Merge pull request #3701 from matrix-org/rav/use_producer_for_responses
Use a producer to stream back responses
Diffstat (limited to 'tests/server.py')
-rw-r--r--tests/server.py23
1 files changed, 19 insertions, 4 deletions
diff --git a/tests/server.py b/tests/server.py

index beb24cf032..c63b2c3100 100644 --- a/tests/server.py +++ b/tests/server.py
@@ -24,6 +24,7 @@ class FakeChannel(object): """ result = attr.ib(default=attr.Factory(dict)) + _producer = None @property def json_body(self): @@ -49,6 +50,15 @@ class FakeChannel(object): self.result["body"] += content + def registerProducer(self, producer, streaming): + self._producer = producer + + def unregisterProducer(self): + if self._producer is None: + return + + self._producer = None + def requestDone(self, _self): self.result["done"] = True @@ -111,14 +121,19 @@ def make_request(method, path, content=b""): return req, channel -def wait_until_result(clock, channel, timeout=100): +def wait_until_result(clock, request, timeout=100): """ - Wait until the channel has a result. + Wait until the request is finished. """ clock.run() x = 0 - while not channel.result: + while not request.finished: + + # If there's a producer, tell it to resume producing so we get content + if request._channel._producer: + request._channel._producer.resumeProducing() + x += 1 if x > timeout: @@ -129,7 +144,7 @@ def wait_until_result(clock, channel, timeout=100): def render(request, resource, clock): request.render(resource) - wait_until_result(clock, request._channel) + wait_until_result(clock, request) class ThreadedMemoryReactorClock(MemoryReactorClock):