summary refs log tree commit diff
path: root/tests/util/test_linearizer.py
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2020-05-27 20:06:29 +0100
committerGitHub <noreply@github.com>2020-05-27 20:06:29 +0100
commit8c5f88fa4d80f48d3080c7d240aa7ceaf454d690 (patch)
tree305d2c1325e730ceb275824cd0b4c6b1bb0d718c /tests/util/test_linearizer.py
parentallow emails to be passed through SAML (#7385) (diff)
parentEnsure we persist and ack the same token (diff)
downloadsynapse-8c5f88fa4d80f48d3080c7d240aa7ceaf454d690.tar.xz
Merge pull request #7584 from matrix-org/erikj/save_and_send_fed_token_in_bg
Speed up processing of federation stream RDATA rows.
Diffstat (limited to 'tests/util/test_linearizer.py')
-rw-r--r--tests/util/test_linearizer.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/util/test_linearizer.py b/tests/util/test_linearizer.py

index 852ef23185..ca3858b184 100644 --- a/tests/util/test_linearizer.py +++ b/tests/util/test_linearizer.py
@@ -45,6 +45,38 @@ class LinearizerTestCase(unittest.TestCase): with (yield d2): pass + @defer.inlineCallbacks + def test_linearizer_is_queued(self): + linearizer = Linearizer() + + key = object() + + d1 = linearizer.queue(key) + cm1 = yield d1 + + # Since d1 gets called immediately, "is_queued" should return false. + self.assertFalse(linearizer.is_queued(key)) + + d2 = linearizer.queue(key) + self.assertFalse(d2.called) + + # Now d2 is queued up behind successful completion of cm1 + self.assertTrue(linearizer.is_queued(key)) + + with cm1: + self.assertFalse(d2.called) + + # cm1 still not done, so d2 still queued. + self.assertTrue(linearizer.is_queued(key)) + + # And now d2 is called and nothing is in the queue again + self.assertFalse(linearizer.is_queued(key)) + + with (yield d2): + self.assertFalse(linearizer.is_queued(key)) + + self.assertFalse(linearizer.is_queued(key)) + def test_lots_of_queued_things(self): # we have one slow thing, and lots of fast things queued up behind it. # it should *not* explode the stack.