diff options
author | Erik Johnston <erik@matrix.org> | 2016-08-19 11:18:26 +0100 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2016-08-19 14:17:07 +0100 |
commit | 4161ff2fc45781dd69623f95721533e0a594f807 (patch) | |
tree | 9df8f3b1f590e4a6e32ad90be4a93455d307cac3 /tests/storage | |
parent | Merge pull request #1026 from matrix-org/paul/thirdpartylookup (diff) | |
download | synapse-4161ff2fc45781dd69623f95721533e0a594f807.tar.xz |
Add concept of cache contexts
Diffstat (limited to 'tests/storage')
-rw-r--r-- | tests/storage/test__base.py | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/tests/storage/test__base.py b/tests/storage/test__base.py index 96b7dba5fe..9d99eea8d0 100644 --- a/tests/storage/test__base.py +++ b/tests/storage/test__base.py @@ -199,3 +199,69 @@ class CacheDecoratorTestCase(unittest.TestCase): self.assertEquals(a.func("foo").result, d.result) self.assertEquals(callcount[0], 0) + + @defer.inlineCallbacks + def test_invalidate_context(self): + callcount = [0] + callcount2 = [0] + + class A(object): + @cached() + def func(self, key): + callcount[0] += 1 + return key + + @cached() + def func2(self, key, cache_context): + callcount2[0] += 1 + return self.func(key, cache_context=cache_context) + + a = A() + yield a.func2("foo") + + self.assertEquals(callcount[0], 1) + self.assertEquals(callcount2[0], 1) + + a.func.invalidate(("foo",)) + yield a.func("foo") + + self.assertEquals(callcount[0], 2) + self.assertEquals(callcount2[0], 1) + + yield a.func2("foo") + + self.assertEquals(callcount[0], 2) + self.assertEquals(callcount2[0], 2) + + @defer.inlineCallbacks + def test_eviction_context(self): + callcount = [0] + callcount2 = [0] + + class A(object): + @cached(max_entries=2) + def func(self, key): + callcount[0] += 1 + return key + + @cached() + def func2(self, key, cache_context): + callcount2[0] += 1 + return self.func(key, cache_context=cache_context) + + a = A() + yield a.func2("foo") + yield a.func2("foo2") + + self.assertEquals(callcount[0], 2) + self.assertEquals(callcount2[0], 2) + + yield a.func("foo3") + + self.assertEquals(callcount[0], 3) + self.assertEquals(callcount2[0], 2) + + yield a.func2("foo") + + self.assertEquals(callcount[0], 4) + self.assertEquals(callcount2[0], 3) |