40 lines
1001 B
Go
40 lines
1001 B
Go
package grpc
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"google.golang.org/grpc/naming"
|
|
|
|
"github.com/letsencrypt/boulder/test"
|
|
)
|
|
|
|
func TestStaticResolver(t *testing.T) {
|
|
names := []string{"test:443"}
|
|
sr := newStaticResolver(names)
|
|
watcher, err := sr.Resolve("")
|
|
test.AssertNotError(t, err, "staticResolver.Resolve failed")
|
|
|
|
// Make sure doing this doesn't break anything (since it does nothing)
|
|
watcher.Close()
|
|
|
|
updates, err := watcher.Next()
|
|
test.AssertNotError(t, err, "staticwatcher.Next failed")
|
|
test.AssertEquals(t, len(names), len(updates))
|
|
test.AssertEquals(t, updates[0].Addr, "test:443")
|
|
test.AssertEquals(t, updates[0].Op, naming.Add)
|
|
test.AssertEquals(t, updates[0].Metadata, nil)
|
|
|
|
returned := make(chan struct{}, 1)
|
|
go func() {
|
|
_, err = watcher.Next()
|
|
test.AssertNotError(t, err, "watcher.Next failed")
|
|
returned <- struct{}{}
|
|
}()
|
|
select {
|
|
case <-returned:
|
|
t.Fatal("staticWatcher.Next returned something after the first call")
|
|
case <-time.After(time.Millisecond * 500):
|
|
}
|
|
}
|