13
13
# limitations under the License.
14
14
15
15
from functools import partial
16
+ from typing import List , Tuple
16
17
17
18
from twisted .internet import defer
18
19
22
23
23
24
24
25
class DeferredCacheTestCase (TestCase ):
25
- def test_empty (self ):
26
- cache = DeferredCache ("test" )
26
+ def test_empty (self ) -> None :
27
+ cache : DeferredCache [ str , int ] = DeferredCache ("test" )
27
28
with self .assertRaises (KeyError ):
28
29
cache .get ("foo" )
29
30
30
- def test_hit (self ):
31
- cache = DeferredCache ("test" )
31
+ def test_hit (self ) -> None :
32
+ cache : DeferredCache [ str , int ] = DeferredCache ("test" )
32
33
cache .prefill ("foo" , 123 )
33
34
34
35
self .assertEqual (self .successResultOf (cache .get ("foo" )), 123 )
35
36
36
- def test_hit_deferred (self ):
37
- cache = DeferredCache ("test" )
38
- origin_d = defer .Deferred ()
37
+ def test_hit_deferred (self ) -> None :
38
+ cache : DeferredCache [ str , int ] = DeferredCache ("test" )
39
+ origin_d : "defer.Deferred[int]" = defer .Deferred ()
39
40
set_d = cache .set ("k1" , origin_d )
40
41
41
42
# get should return an incomplete deferred
42
43
get_d = cache .get ("k1" )
43
44
self .assertFalse (get_d .called )
44
45
45
46
# add a callback that will make sure that the set_d gets called before the get_d
46
- def check1 (r ) :
47
+ def check1 (r : str ) -> str :
47
48
self .assertTrue (set_d .called )
48
49
return r
49
50
@@ -55,16 +56,16 @@ def check1(r):
55
56
self .assertEqual (self .successResultOf (set_d ), 99 )
56
57
self .assertEqual (self .successResultOf (get_d ), 99 )
57
58
58
- def test_callbacks (self ):
59
+ def test_callbacks (self ) -> None :
59
60
"""Invalidation callbacks are called at the right time"""
60
- cache = DeferredCache ("test" )
61
+ cache : DeferredCache [ str , int ] = DeferredCache ("test" )
61
62
callbacks = set ()
62
63
63
64
# start with an entry, with a callback
64
65
cache .prefill ("k1" , 10 , callback = lambda : callbacks .add ("prefill" ))
65
66
66
67
# now replace that entry with a pending result
67
- origin_d = defer .Deferred ()
68
+ origin_d : "defer.Deferred[int]" = defer .Deferred ()
68
69
set_d = cache .set ("k1" , origin_d , callback = lambda : callbacks .add ("set" ))
69
70
70
71
# ... and also make a get request
@@ -89,15 +90,15 @@ def test_callbacks(self):
89
90
cache .prefill ("k1" , 30 )
90
91
self .assertEqual (callbacks , {"set" , "get" })
91
92
92
- def test_set_fail (self ):
93
- cache = DeferredCache ("test" )
93
+ def test_set_fail (self ) -> None :
94
+ cache : DeferredCache [ str , int ] = DeferredCache ("test" )
94
95
callbacks = set ()
95
96
96
97
# start with an entry, with a callback
97
98
cache .prefill ("k1" , 10 , callback = lambda : callbacks .add ("prefill" ))
98
99
99
100
# now replace that entry with a pending result
100
- origin_d = defer .Deferred ()
101
+ origin_d : defer . Deferred = defer .Deferred ()
101
102
set_d = cache .set ("k1" , origin_d , callback = lambda : callbacks .add ("set" ))
102
103
103
104
# ... and also make a get request
@@ -126,9 +127,9 @@ def test_set_fail(self):
126
127
cache .prefill ("k1" , 30 )
127
128
self .assertEqual (callbacks , {"prefill" , "get2" })
128
129
129
- def test_get_immediate (self ):
130
- cache = DeferredCache ("test" )
131
- d1 = defer .Deferred ()
130
+ def test_get_immediate (self ) -> None :
131
+ cache : DeferredCache [ str , int ] = DeferredCache ("test" )
132
+ d1 : "defer.Deferred[int]" = defer .Deferred ()
132
133
cache .set ("key1" , d1 )
133
134
134
135
# get_immediate should return default
@@ -142,27 +143,27 @@ def test_get_immediate(self):
142
143
v = cache .get_immediate ("key1" , 1 )
143
144
self .assertEqual (v , 2 )
144
145
145
- def test_invalidate (self ):
146
- cache = DeferredCache ("test" )
146
+ def test_invalidate (self ) -> None :
147
+ cache : DeferredCache [ Tuple [ str ], int ] = DeferredCache ("test" )
147
148
cache .prefill (("foo" ,), 123 )
148
149
cache .invalidate (("foo" ,))
149
150
150
151
with self .assertRaises (KeyError ):
151
152
cache .get (("foo" ,))
152
153
153
- def test_invalidate_all (self ):
154
- cache = DeferredCache ("testcache" )
154
+ def test_invalidate_all (self ) -> None :
155
+ cache : DeferredCache [ str , str ] = DeferredCache ("testcache" )
155
156
156
157
callback_record = [False , False ]
157
158
158
- def record_callback (idx ) :
159
+ def record_callback (idx : int ) -> None :
159
160
callback_record [idx ] = True
160
161
161
162
# add a couple of pending entries
162
- d1 = defer .Deferred ()
163
+ d1 : "defer.Deferred[str]" = defer .Deferred ()
163
164
cache .set ("key1" , d1 , partial (record_callback , 0 ))
164
165
165
- d2 = defer .Deferred ()
166
+ d2 : "defer.Deferred[str]" = defer .Deferred ()
166
167
cache .set ("key2" , d2 , partial (record_callback , 1 ))
167
168
168
169
# lookup should return pending deferreds
@@ -193,8 +194,8 @@ def record_callback(idx):
193
194
with self .assertRaises (KeyError ):
194
195
cache .get ("key1" , None )
195
196
196
- def test_eviction (self ):
197
- cache = DeferredCache (
197
+ def test_eviction (self ) -> None :
198
+ cache : DeferredCache [ int , str ] = DeferredCache (
198
199
"test" , max_entries = 2 , apply_cache_factor_from_config = False
199
200
)
200
201
@@ -208,8 +209,8 @@ def test_eviction(self):
208
209
cache .get (2 )
209
210
cache .get (3 )
210
211
211
- def test_eviction_lru (self ):
212
- cache = DeferredCache (
212
+ def test_eviction_lru (self ) -> None :
213
+ cache : DeferredCache [ int , str ] = DeferredCache (
213
214
"test" , max_entries = 2 , apply_cache_factor_from_config = False
214
215
)
215
216
@@ -227,8 +228,8 @@ def test_eviction_lru(self):
227
228
cache .get (1 )
228
229
cache .get (3 )
229
230
230
- def test_eviction_iterable (self ):
231
- cache = DeferredCache (
231
+ def test_eviction_iterable (self ) -> None :
232
+ cache : DeferredCache [ int , List [ str ]] = DeferredCache (
232
233
"test" ,
233
234
max_entries = 3 ,
234
235
apply_cache_factor_from_config = False ,
0 commit comments