directbuilder_test.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package resolver
  2. import (
  3. "fmt"
  4. "strconv"
  5. "strings"
  6. "testing"
  7. "github.com/stretchr/testify/assert"
  8. "github.com/tal-tech/go-zero/core/lang"
  9. "github.com/tal-tech/go-zero/core/mathx"
  10. "google.golang.org/grpc/resolver"
  11. )
  12. func TestDirectBuilder_Build(t *testing.T) {
  13. tests := []int{
  14. 0,
  15. 1,
  16. 2,
  17. subsetSize / 2,
  18. subsetSize,
  19. subsetSize * 2,
  20. }
  21. for _, test := range tests {
  22. t.Run(strconv.Itoa(test), func(t *testing.T) {
  23. var servers []string
  24. for i := 0; i < test; i++ {
  25. servers = append(servers, fmt.Sprintf("localhost:%d", i))
  26. }
  27. var b directBuilder
  28. cc := new(mockedClientConn)
  29. _, err := b.Build(resolver.Target{
  30. Scheme: DirectScheme,
  31. Endpoint: strings.Join(servers, ","),
  32. }, cc, resolver.BuildOptions{})
  33. assert.Nil(t, err)
  34. size := mathx.MinInt(test, subsetSize)
  35. assert.Equal(t, size, len(cc.state.Addresses))
  36. m := make(map[string]lang.PlaceholderType)
  37. for _, each := range cc.state.Addresses {
  38. m[each.Addr] = lang.Placeholder
  39. }
  40. assert.Equal(t, size, len(m))
  41. })
  42. }
  43. }
  44. func TestDirectBuilder_Scheme(t *testing.T) {
  45. var b directBuilder
  46. assert.Equal(t, DirectScheme, b.Scheme())
  47. }