@@ -405,6 +405,43 @@ var _ = Describe("Source", func() {
405
405
406
406
close (done )
407
407
})
408
+ It ("should be able to cope with events in the channel before the source is started" , func (done Done ) {
409
+ ch := make (chan event.GenericEvent , 1 )
410
+ processed := make (chan struct {})
411
+ evt := event.GenericEvent {}
412
+ ch <- evt
413
+
414
+ q := workqueue .NewNamedRateLimitingQueue (workqueue .DefaultControllerRateLimiter (), "test" )
415
+ // Add a handler to get distribution blocked
416
+ instance := & source.Channel {Source : ch }
417
+ instance .DestBufferSize = 1
418
+ Expect (inject .StopChannelInto (stop , instance )).To (BeTrue ())
419
+
420
+ err := instance .Start (handler.Funcs {
421
+ CreateFunc : func (event.CreateEvent , workqueue.RateLimitingInterface ) {
422
+ defer GinkgoRecover ()
423
+ Fail ("Unexpected CreateEvent" )
424
+ },
425
+ UpdateFunc : func (event.UpdateEvent , workqueue.RateLimitingInterface ) {
426
+ defer GinkgoRecover ()
427
+ Fail ("Unexpected UpdateEvent" )
428
+ },
429
+ DeleteFunc : func (event.DeleteEvent , workqueue.RateLimitingInterface ) {
430
+ defer GinkgoRecover ()
431
+ Fail ("Unexpected DeleteEvent" )
432
+ },
433
+ GenericFunc : func (evt event.GenericEvent , q2 workqueue.RateLimitingInterface ) {
434
+ defer GinkgoRecover ()
435
+
436
+ close (processed )
437
+ },
438
+ }, q )
439
+ Expect (err ).NotTo (HaveOccurred ())
440
+
441
+ <- processed
442
+
443
+ close (done )
444
+ })
408
445
It ("should get error if no source specified" , func (done Done ) {
409
446
q := workqueue .NewNamedRateLimitingQueue (workqueue .DefaultControllerRateLimiter (), "test" )
410
447
instance := & source.Channel { /*no source specified*/ }
0 commit comments