@@ -487,8 +487,49 @@ func Test_Listeners(t *testing.T) {
487
487
So (result2 .Service .Hostname , ShouldEqual , hostname )
488
488
})
489
489
490
- Reset (func () {
491
- state = NewServicesState ()
490
+ Convey ("GetListeners() returns all the listeners" , func () {
491
+ state .AddListener (listener )
492
+ state .AddListener (listener2 )
493
+
494
+ So (len (state .GetListeners ()), ShouldEqual , 2 )
495
+ })
496
+
497
+ Convey ("containsListener() finds a listener if present" , func () {
498
+ listeners := []Listener {listener , listener2 }
499
+ So (containsListener (listeners , "listener1" ), ShouldBeTrue )
500
+ })
501
+
502
+ Convey ("Tracking dynamic listeners" , func () {
503
+ Convey ("Adds new listeners that are discovered" , func () {
504
+ looper := director .NewFreeLooper (director .ONCE , nil )
505
+ listeners := []Listener {listener , listener2 }
506
+ state .TrackLocalListeners (func () []Listener { return listeners }, looper )
507
+
508
+ So (len (state .listeners ), ShouldEqual , 2 )
509
+ })
510
+
511
+ Convey ("Removes listeners that have gone away" , func () {
512
+ // Add some and track them
513
+ looper := director .NewFreeLooper (director .ONCE , nil )
514
+ listeners := []Listener {listener , listener2 }
515
+ listenFunc := func () []Listener { return listeners }
516
+ listener .managed = true
517
+ listener2 .managed = true
518
+
519
+ state .TrackLocalListeners (listenFunc , looper )
520
+ So (len (state .listeners ), ShouldEqual , 2 )
521
+
522
+ // Discovery now returns only the first one
523
+ listeners = []Listener {listener }
524
+ looper = director .NewFreeLooper (director .ONCE , nil )
525
+
526
+ state .TrackLocalListeners (listenFunc , looper )
527
+ So (len (state .listeners ), ShouldEqual , 1 )
528
+
529
+ found , ok := state .listeners [listener .Name ()]
530
+ So (ok , ShouldBeTrue )
531
+ So (found , ShouldResemble , listener )
532
+ })
492
533
})
493
534
})
494
535
}
0 commit comments