mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-02 14:56:42 -04:00
Make @cached cache deferreds rather than the deferreds' values
This commit is contained in:
parent
39e21ea51c
commit
7eea3e356f
3 changed files with 22 additions and 19 deletions
|
@ -17,6 +17,8 @@
|
|||
from tests import unittest
|
||||
from twisted.internet import defer
|
||||
|
||||
from synapse.util.async import ObservableDeferred
|
||||
|
||||
from synapse.storage._base import Cache, cached
|
||||
|
||||
|
||||
|
@ -178,19 +180,20 @@ class CacheDecoratorTestCase(unittest.TestCase):
|
|||
self.assertTrue(callcount[0] >= 14,
|
||||
msg="Expected callcount >= 14, got %d" % (callcount[0]))
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def test_prefill(self):
|
||||
callcount = [0]
|
||||
|
||||
d = defer.succeed(123)
|
||||
|
||||
class A(object):
|
||||
@cached()
|
||||
def func(self, key):
|
||||
callcount[0] += 1
|
||||
return key
|
||||
return d
|
||||
|
||||
a = A()
|
||||
|
||||
a.func.prefill("foo", 123)
|
||||
a.func.prefill("foo", ObservableDeferred(d))
|
||||
|
||||
self.assertEquals((yield a.func("foo")), 123)
|
||||
self.assertEquals(a.func("foo").result, d.result)
|
||||
self.assertEquals(callcount[0], 0)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue