diff options
author | Richard van der Hoff <1389908+richvdh@users.noreply.github.com> | 2018-08-17 14:58:45 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-17 14:58:45 +0100 |
commit | 63260397c6ab6925da0ba3bd24d398001cd8208b (patch) | |
tree | 3ef57e48328cd2364afee5810f83d550e0304f8a /tests/server.py | |
parent | Merge pull request #3700 from matrix-org/rav/wait_for_producers (diff) | |
parent | changelog (diff) | |
download | synapse-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.py | 23 |
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): |