Test ensures one Endpoint is created for each entry in resolver.State.Addresses automatically. The test calls the deprecated NewAddresses API to send a list of addresses to the channel.
(t *testing.T)
| 148 | // resolver.State.Addresses automatically. The test calls the deprecated |
| 149 | // NewAddresses API to send a list of addresses to the channel. |
| 150 | func (s) TestResolverAddressesToEndpointsUsingNewAddresses(t *testing.T) { |
| 151 | ctx, cancel := context.WithTimeout(context.Background(), defaultTestTimeout) |
| 152 | defer cancel() |
| 153 | |
| 154 | const scheme = "testresolveraddressestoendpoints" |
| 155 | r := manual.NewBuilderWithScheme(scheme) |
| 156 | |
| 157 | stateCh := make(chan balancer.ClientConnState, 1) |
| 158 | bf := stub.BalancerFuncs{ |
| 159 | UpdateClientConnState: func(_ *stub.BalancerData, ccs balancer.ClientConnState) error { |
| 160 | stateCh <- ccs |
| 161 | return nil |
| 162 | }, |
| 163 | } |
| 164 | balancerName := "stub-balancer-" + scheme |
| 165 | stub.Register(balancerName, bf) |
| 166 | |
| 167 | a1 := attributes.New("x", "y") |
| 168 | a2 := attributes.New("a", "b") |
| 169 | addrs := []resolver.Address{ |
| 170 | {Addr: "addr1", BalancerAttributes: a1}, |
| 171 | {Addr: "addr2", BalancerAttributes: a2}, |
| 172 | } |
| 173 | |
| 174 | cc, err := NewClient(r.Scheme()+":///", |
| 175 | WithTransportCredentials(insecure.NewCredentials()), |
| 176 | WithResolvers(r), |
| 177 | WithDefaultServiceConfig(fmt.Sprintf(`{"loadBalancingConfig": [{"%s":{}}]}`, balancerName))) |
| 178 | if err != nil { |
| 179 | t.Fatalf("NewClient() failed: %v", err) |
| 180 | } |
| 181 | cc.Connect() |
| 182 | defer cc.Close() |
| 183 | r.CC().NewAddress(addrs) |
| 184 | |
| 185 | select { |
| 186 | case got := <-stateCh: |
| 187 | want := []resolver.Endpoint{ |
| 188 | {Addresses: []resolver.Address{{Addr: "addr1"}}, Attributes: a1}, |
| 189 | {Addresses: []resolver.Address{{Addr: "addr2"}}, Attributes: a2}, |
| 190 | } |
| 191 | if diff := cmp.Diff(got.ResolverState.Endpoints, want); diff != "" { |
| 192 | t.Errorf("Did not receive expected endpoints. Diff (-got +want):\n%v", diff) |
| 193 | } |
| 194 | case <-ctx.Done(): |
| 195 | t.Fatalf("timed out waiting for endpoints") |
| 196 | } |
| 197 | } |
nothing calls this directly
no test coverage detected