|
@@ -1,12 +1,58 @@
|
|
package internal
|
|
package internal
|
|
|
|
|
|
import (
|
|
import (
|
|
|
|
+ "fmt"
|
|
|
|
+ "net/url"
|
|
|
|
+ "strings"
|
|
"testing"
|
|
"testing"
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
+ "go.etcd.io/etcd/client/v3/mock/mockserver"
|
|
|
|
+ "google.golang.org/grpc/resolver"
|
|
|
|
+ "google.golang.org/grpc/serviceconfig"
|
|
)
|
|
)
|
|
|
|
|
|
func TestDiscovBuilder_Scheme(t *testing.T) {
|
|
func TestDiscovBuilder_Scheme(t *testing.T) {
|
|
var b discovBuilder
|
|
var b discovBuilder
|
|
assert.Equal(t, DiscovScheme, b.Scheme())
|
|
assert.Equal(t, DiscovScheme, b.Scheme())
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+func TestDiscovBuilder_Build(t *testing.T) {
|
|
|
|
+ servers, err := mockserver.StartMockServers(2)
|
|
|
|
+ assert.NoError(t, err)
|
|
|
|
+ t.Cleanup(func() {
|
|
|
|
+ servers.Stop()
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ var addrs []string
|
|
|
|
+ for _, server := range servers.Servers {
|
|
|
|
+ addrs = append(addrs, server.Address)
|
|
|
|
+ }
|
|
|
|
+ u, err := url.Parse(fmt.Sprintf("%s://%s", DiscovScheme, strings.Join(addrs, ",")))
|
|
|
|
+ assert.NoError(t, err)
|
|
|
|
+
|
|
|
|
+ var b discovBuilder
|
|
|
|
+ _, err = b.Build(resolver.Target{
|
|
|
|
+ URL: *u,
|
|
|
|
+ }, mockClientConn{}, resolver.BuildOptions{})
|
|
|
|
+ assert.Error(t, err)
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+type mockClientConn struct{}
|
|
|
|
+
|
|
|
|
+func (m mockClientConn) UpdateState(_ resolver.State) error {
|
|
|
|
+ return nil
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func (m mockClientConn) ReportError(_ error) {
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func (m mockClientConn) NewAddress(_ []resolver.Address) {
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func (m mockClientConn) NewServiceConfig(_ string) {
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func (m mockClientConn) ParseServiceConfig(_ string) *serviceconfig.ParseResult {
|
|
|
|
+ return nil
|
|
|
|
+}
|