diff options
author | Richard van der Hoff <richard@matrix.org> | 2018-07-23 17:15:12 +0100 |
---|---|---|
committer | Richard van der Hoff <richard@matrix.org> | 2018-07-23 17:15:12 +0100 |
commit | 4f5cc8e4e796153cbdc09517e521fc3a23eb66c2 (patch) | |
tree | ccaa25ba8cec666b88ac217f6495cf59663550b0 /tests/util/test_linearizer.py | |
parent | Remove redundant checks on room forgottenness (diff) | |
parent | Merge pull request #3582 from matrix-org/erikj/fixup_stateless (diff) | |
download | synapse-4f5cc8e4e796153cbdc09517e521fc3a23eb66c2.tar.xz |
Merge remote-tracking branch 'origin/develop' into rav/remove_who_forgot_in_room
Diffstat (limited to 'tests/util/test_linearizer.py')
-rw-r--r-- | tests/util/test_linearizer.py | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/util/test_linearizer.py b/tests/util/test_linearizer.py index c9563124f9..4729bd5a0a 100644 --- a/tests/util/test_linearizer.py +++ b/tests/util/test_linearizer.py @@ -17,6 +17,7 @@ from six.moves import range from twisted.internet import defer, reactor +from twisted.internet.defer import CancelledError from synapse.util import Clock, logcontext from synapse.util.async import Linearizer @@ -112,3 +113,33 @@ class LinearizerTestCase(unittest.TestCase): d6 = limiter.queue(key) with (yield d6): pass + + @defer.inlineCallbacks + def test_cancellation(self): + linearizer = Linearizer() + + key = object() + + d1 = linearizer.queue(key) + cm1 = yield d1 + + d2 = linearizer.queue(key) + self.assertFalse(d2.called) + + d3 = linearizer.queue(key) + self.assertFalse(d3.called) + + d2.cancel() + + with cm1: + pass + + self.assertTrue(d2.called) + try: + yield d2 + self.fail("Expected d2 to raise CancelledError") + except CancelledError: + pass + + with (yield d3): + pass |