@@ -167,6 +167,42 @@ def get_values(*args, **kwargs):
167
167
# more strict test with worse error message
168
168
self .assertEqual (fake_api .get_namespaces .mock_calls , calls )
169
169
170
+ def test_watch_resource_version_with_bookmark (self ):
171
+ """
172
+ test the resource_version get updated for bookmark events
173
+
174
+ """
175
+ fake_resp = Mock ()
176
+ fake_resp .close = Mock ()
177
+ fake_resp .release_conn = Mock ()
178
+ values = [
179
+ '{"type": "ADDED", "object": {"metadata": {"name": "test1",'
180
+ '"resourceVersion": "1"}, "spec": {}, "status": {}}}\n ' ,
181
+ '{ "type": "BOOKMARK", "object": {"kind": "Pod", "apiVersion": "v1",'
182
+ '"metadata": {"resourceVersion": "3"} }}\n ' ,
183
+ '{"type": "ADDED", "object": {"metadata": {"name": "test3",'
184
+ '"resourceVersion": "4"}, "spec": {}, "status": {}}}\n ' ]
185
+
186
+ def get_values (* args , ** kwargs ):
187
+ return values
188
+
189
+ fake_resp .stream = Mock (
190
+ side_effect = get_values )
191
+
192
+ fake_api = Mock ()
193
+ fake_api .get_namespaces = Mock (return_value = fake_resp )
194
+ fake_api .get_namespaces .__doc__ = ':return: V1NamespaceList'
195
+
196
+ w = Watch ()
197
+ iterations = 3
198
+
199
+ for c , e in enumerate (w .stream (fake_api .get_namespaces ,
200
+ resource_version = "0" )):
201
+ self .assertEqual (w .resource_version ,
202
+ e ['raw_object' ]['metadata' ]['resourceVersion' ])
203
+ if c == len (values ) * iterations :
204
+ w .stop ()
205
+
170
206
def test_watch_stream_twice (self ):
171
207
w = Watch (float )
172
208
for step in ['first' , 'second' ]:
@@ -263,10 +299,8 @@ def test_unmarshal_with_bookmark(self):
263
299
'"metadata":{},"spec":{"containers":null}}},"status":{}}}' ,
264
300
'V1Job' )
265
301
self .assertEqual ("BOOKMARK" , event ['type' ])
266
- # Watch.resource_version is *not* updated, as BOOKMARK is treated the
267
- # same as ERROR for a quick fix of decoding exception,
268
- # resource_version in BOOKMARK is *not* used at all.
269
- self .assertEqual (None , w .resource_version )
302
+
303
+ self .assertEqual ("1" , w .resource_version )
270
304
271
305
def test_watch_with_exception (self ):
272
306
fake_resp = Mock ()
0 commit comments