diff options
author | Richard van der Hoff <richard@matrix.org> | 2019-01-22 20:28:48 +0000 |
---|---|---|
committer | Richard van der Hoff <richard@matrix.org> | 2019-01-22 20:35:12 +0000 |
commit | d02c4532c068efc54c6abce77e9ec55018b2d444 (patch) | |
tree | 1d4ac0f142619b3f841c2a55a33f0792c4861d6a /tests/server.py | |
parent | put resolve_service in an object (diff) | |
download | synapse-d02c4532c068efc54c6abce77e9ec55018b2d444.tar.xz |
Add a test for MatrixFederationAgent
Diffstat (limited to 'tests/server.py')
-rw-r--r-- | tests/server.py | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/tests/server.py b/tests/server.py index db43fa0db8..3a4aa55645 100644 --- a/tests/server.py +++ b/tests/server.py @@ -1,4 +1,5 @@ import json +import logging from io import BytesIO from six import text_type @@ -22,6 +23,8 @@ from synapse.util import Clock from tests.utils import setup_test_homeserver as _sth +logger = logging.getLogger(__name__) + class TimedOutException(Exception): """ @@ -414,6 +417,11 @@ class FakeTransport(object): self.buffer = self.buffer + byt def _write(): + if not self.buffer: + # nothing to do. Don't write empty buffers: it upsets the + # TLSMemoryBIOProtocol + return + if getattr(self.other, "transport") is not None: self.other.dataReceived(self.buffer) self.buffer = b"" @@ -421,7 +429,10 @@ class FakeTransport(object): self._reactor.callLater(0.0, _write) - _write() + # always actually do the write asynchronously. Some protocols (notably the + # TLSMemoryBIOProtocol) get very confused if a read comes back while they are + # still doing a write. Doing a callLater here breaks the cycle. + self._reactor.callLater(0.0, _write) def writeSequence(self, seq): for x in seq: |