@@ -30,6 +30,7 @@ import (
30
30
k8sruntime "k8s.io/apimachinery/pkg/runtime"
31
31
"k8s.io/apimachinery/pkg/util/wait"
32
32
"k8s.io/client-go/kubernetes/scheme"
33
+ restclient "k8s.io/client-go/rest"
33
34
ref "k8s.io/client-go/tools/reference"
34
35
)
35
36
@@ -299,51 +300,72 @@ func TestRefreshExistingEventSeries(t *testing.T) {
299
300
t .Fatal (err )
300
301
}
301
302
LastObservedTime := metav1.MicroTime {Time : time .Now ().Add (- 9 * time .Minute )}
302
-
303
303
createEvent := make (chan * v1beta1.Event , 10 )
304
304
updateEvent := make (chan * v1beta1.Event , 10 )
305
305
patchEvent := make (chan * v1beta1.Event , 10 )
306
- testEvents := testEventSeriesSink {
307
- OnCreate : func (event * v1beta1.Event ) (* v1beta1.Event , error ) {
308
- createEvent <- event
309
- return event , nil
310
- },
311
- OnUpdate : func (event * v1beta1.Event ) (* v1beta1.Event , error ) {
312
- updateEvent <- event
313
- return event , nil
306
+
307
+ table := []struct {
308
+ patchFunc func (event * v1beta1.Event , patch []byte ) (* v1beta1.Event , error )
309
+ }{
310
+ {
311
+ patchFunc : func (event * v1beta1.Event , patch []byte ) (* v1beta1.Event , error ) {
312
+ // event we receive is already patched, usually the sink uses it
313
+ //only to retrieve the name and namespace, here we'll use it directly.
314
+ patchEvent <- event
315
+ return event , nil
316
+ },
314
317
},
315
- OnPatch : func (event * v1beta1.Event , patch []byte ) (* v1beta1.Event , error ) {
316
- // event we receive is already patched, usually the sink uses it
317
- //only to retrieve the name and namespace, here we'll use it directly.
318
- patchEvent <- event
319
- return event , nil
318
+ {
319
+ patchFunc : func (event * v1beta1.Event , patch []byte ) (* v1beta1.Event , error ) {
320
+ // we simulate an apiserver error here
321
+ patchEvent <- nil
322
+ return nil , & restclient.RequestConstructionError {}
323
+ },
320
324
},
321
325
}
322
- cache := map [eventKey ]* v1beta1.Event {}
323
- eventBroadcaster := newBroadcaster (& testEvents , 0 , cache ).(* eventBroadcasterImpl )
324
- recorder := eventBroadcaster .NewRecorder (scheme .Scheme , "k8s.io/kube-foo" ).(* recorderImpl )
325
- cachedEvent := recorder .makeEvent (regarding , related , metav1.MicroTime {time .Now ()}, v1 .EventTypeNormal , "test" , "some verbose message: 1" , "eventTest" , "eventTest-" + hostname , "started" )
326
- cachedEvent .Series = & v1beta1.EventSeries {
327
- Count : 10 ,
328
- LastObservedTime : LastObservedTime ,
329
- }
330
- cacheKey := getKey (cachedEvent )
331
- cache [cacheKey ] = cachedEvent
332
-
333
- eventBroadcaster .refreshExistingEventSeries ()
334
- select {
335
- case <- patchEvent :
336
- t .Logf ("validating event affected by patch request" )
337
- eventBroadcaster .mu .Lock ()
338
- defer eventBroadcaster .mu .Unlock ()
339
- if len (cache ) != 1 {
340
- t .Errorf ("cache should be with same size, but instead got a size of %v" , len (cache ))
326
+ for _ , item := range table {
327
+ testEvents := testEventSeriesSink {
328
+ OnCreate : func (event * v1beta1.Event ) (* v1beta1.Event , error ) {
329
+ createEvent <- event
330
+ return event , nil
331
+ },
332
+ OnUpdate : func (event * v1beta1.Event ) (* v1beta1.Event , error ) {
333
+ updateEvent <- event
334
+ return event , nil
335
+ },
336
+ OnPatch : item .patchFunc ,
341
337
}
342
- // check that we emitted only one event
343
- if len (patchEvent ) != 0 || len (createEvent ) != 0 || len (updateEvent ) != 0 {
344
- t .Errorf ("exactly one event should be emitted, but got %v" , len (patchEvent ))
338
+ cache := map [eventKey ]* v1beta1.Event {}
339
+ eventBroadcaster := newBroadcaster (& testEvents , 0 , cache ).(* eventBroadcasterImpl )
340
+ recorder := eventBroadcaster .NewRecorder (scheme .Scheme , "k8s.io/kube-foo" ).(* recorderImpl )
341
+ cachedEvent := recorder .makeEvent (regarding , related , metav1.MicroTime {time .Now ()}, v1 .EventTypeNormal , "test" , "some verbose message: 1" , "eventTest" , "eventTest-" + hostname , "started" )
342
+ cachedEvent .Series = & v1beta1.EventSeries {
343
+ Count : 10 ,
344
+ LastObservedTime : LastObservedTime ,
345
+ }
346
+ cacheKey := getKey (cachedEvent )
347
+ cache [cacheKey ] = cachedEvent
348
+
349
+ eventBroadcaster .refreshExistingEventSeries ()
350
+ select {
351
+ case <- patchEvent :
352
+ t .Logf ("validating event affected by patch request" )
353
+ eventBroadcaster .mu .Lock ()
354
+ defer eventBroadcaster .mu .Unlock ()
355
+ if len (cache ) != 1 {
356
+ t .Errorf ("cache should be with same size, but instead got a size of %v" , len (cache ))
357
+ }
358
+ // check that we emitted only one event
359
+ if len (patchEvent ) != 0 || len (createEvent ) != 0 || len (updateEvent ) != 0 {
360
+ t .Errorf ("exactly one event should be emitted, but got %v" , len (patchEvent ))
361
+ }
362
+ cacheEvent , exists := cache [cacheKey ]
363
+
364
+ if cacheEvent == nil || ! exists {
365
+ t .Errorf ("expected event to exist and not being nil, but instead event: %v and exists: %v" , cacheEvent , exists )
366
+ }
367
+ case <- time .After (wait .ForeverTestTimeout ):
368
+ t .Fatalf ("timeout after %v" , wait .ForeverTestTimeout )
345
369
}
346
- case <- time .After (wait .ForeverTestTimeout ):
347
- t .Fatalf ("timeout after %v" , wait .ForeverTestTimeout )
348
370
}
349
371
}
0 commit comments