MCPcopy
hub / github.com/grpc/grpc-go / TestResolverBalancerInteraction

Method TestResolverBalancerInteraction

resolver_balancer_ext_test.go:53–86  ·  view source on GitHub ↗

TestResolverBalancerInteraction tests: 1. resolver.Builder.Build() -> 2. resolver.ClientConn.UpdateState() -> 3. balancer.Balancer.UpdateClientConnState() -> 4. balancer.ClientConn.ResolveNow() -> 5. resolver.Resolver.ResolveNow() ->

(t *testing.T)

Source from the content-addressed store, hash-verified

51// 4. balancer.ClientConn.ResolveNow() ->
52// 5. resolver.Resolver.ResolveNow() ->
53func (s) TestResolverBalancerInteraction(t *testing.T) {
54 name := strings.ReplaceAll(strings.ToLower(t.Name()), "/", "")
55 bf := stub.BalancerFuncs{
56 UpdateClientConnState: func(bd *stub.BalancerData, _ balancer.ClientConnState) error {
57 bd.ClientConn.ResolveNow(resolver.ResolveNowOptions{})
58 return nil
59 },
60 }
61 stub.Register(name, bf)
62
63 rb := manual.NewBuilderWithScheme(name)
64 rb.BuildCallback = func(_ resolver.Target, cc resolver.ClientConn, _ resolver.BuildOptions) {
65 sc := cc.ParseServiceConfig(`{"loadBalancingConfig": [{"` + name + `":{}}]}`)
66 cc.UpdateState(resolver.State{
67 Addresses: []resolver.Address{{Addr: "test"}},
68 ServiceConfig: sc,
69 })
70 }
71 rnCh := make(chan struct{})
72 rb.ResolveNowCallback = func(resolver.ResolveNowOptions) { close(rnCh) }
73 resolver.Register(rb)
74
75 cc, err := grpc.NewClient(name+":///", grpc.WithTransportCredentials(insecure.NewCredentials()))
76 if err != nil {
77 t.Fatalf("grpc.NewClient error: %v", err)
78 }
79 defer cc.Close()
80 cc.Connect()
81 select {
82 case <-rnCh:
83 case <-time.After(defaultTestTimeout):
84 t.Fatalf("timed out waiting for resolver.ResolveNow")
85 }
86}
87
88type resolverBuilderWithErr struct {
89 resolver.Resolver

Callers

nothing calls this directly

Calls 13

RegisterFunction · 0.92
NewBuilderWithSchemeFunction · 0.92
RegisterFunction · 0.92
NewClientFunction · 0.92
WithTransportCredentialsFunction · 0.92
NewCredentialsFunction · 0.92
NameMethod · 0.65
ResolveNowMethod · 0.65
ParseServiceConfigMethod · 0.65
UpdateStateMethod · 0.65
FatalfMethod · 0.65
CloseMethod · 0.65

Tested by

no test coverage detected