discovbuilder_test.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package internal
  2. import (
  3. "fmt"
  4. "net/url"
  5. "strings"
  6. "testing"
  7. "github.com/stretchr/testify/assert"
  8. "go.etcd.io/etcd/client/v3/mock/mockserver"
  9. "google.golang.org/grpc/resolver"
  10. "google.golang.org/grpc/serviceconfig"
  11. )
  12. func TestDiscovBuilder_Scheme(t *testing.T) {
  13. var b discovBuilder
  14. assert.Equal(t, DiscovScheme, b.Scheme())
  15. }
  16. func TestDiscovBuilder_Build(t *testing.T) {
  17. servers, err := mockserver.StartMockServers(2)
  18. assert.NoError(t, err)
  19. t.Cleanup(func() {
  20. servers.Stop()
  21. })
  22. var addrs []string
  23. for _, server := range servers.Servers {
  24. addrs = append(addrs, server.Address)
  25. }
  26. u, err := url.Parse(fmt.Sprintf("%s://%s", DiscovScheme, strings.Join(addrs, ",")))
  27. assert.NoError(t, err)
  28. var b discovBuilder
  29. _, err = b.Build(resolver.Target{
  30. URL: *u,
  31. }, mockClientConn{}, resolver.BuildOptions{})
  32. assert.Error(t, err)
  33. }
  34. type mockClientConn struct{}
  35. func (m mockClientConn) UpdateState(_ resolver.State) error {
  36. return nil
  37. }
  38. func (m mockClientConn) ReportError(_ error) {
  39. }
  40. func (m mockClientConn) NewAddress(_ []resolver.Address) {
  41. }
  42. func (m mockClientConn) NewServiceConfig(_ string) {
  43. }
  44. func (m mockClientConn) ParseServiceConfig(_ string) *serviceconfig.ParseResult {
  45. return nil
  46. }