discovery: try to fix timeout
Try to fix test timeout failure.
(Not sure yet whether this would fix it.)
Change-Id: Ib9457d4bde8f17e134ac0160c768dc1660dc6302
diff --git a/lib/discovery/plugins/testutil/util.go b/lib/discovery/plugins/testutil/util.go
index abf743b..5178542 100644
--- a/lib/discovery/plugins/testutil/util.go
+++ b/lib/discovery/plugins/testutil/util.go
@@ -35,7 +35,12 @@
func Scan(ctx *context.T, p idiscovery.Plugin, interfaceName string) (<-chan *idiscovery.AdInfo, func(), error) {
ctx, cancel := context.WithCancel(ctx)
scanCh := make(chan *idiscovery.AdInfo)
- callback := func(ad *idiscovery.AdInfo) { scanCh <- ad }
+ callback := func(ad *idiscovery.AdInfo) {
+ select {
+ case scanCh <- ad:
+ case <-ctx.Done():
+ }
+ }
var wg sync.WaitGroup
wg.Add(1)
if err := p.Scan(ctx, interfaceName, callback, wg.Done); err != nil {
diff --git a/lib/discovery/test/directory_test.go b/lib/discovery/test/directory_test.go
index 914923b..8b2422b 100644
--- a/lib/discovery/test/directory_test.go
+++ b/lib/discovery/test/directory_test.go
@@ -153,7 +153,13 @@
}
updateCh := make(chan *idiscovery.AdInfo)
- if err = mockPlugin.Scan(ctx, "", func(ad *idiscovery.AdInfo) { updateCh <- ad }, func() {}); err != nil {
+ callback := func(ad *idiscovery.AdInfo) {
+ select {
+ case updateCh <- ad:
+ case <-ctx.Done():
+ }
+ }
+ if err = mockPlugin.Scan(ctx, "", callback, func() {}); err != nil {
t.Fatal(err)
}
<-updateCh