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

Function buildResolverForTarget

internal/xds/resolver/helpers_test.go:100–139  ·  view source on GitHub ↗

buildResolverForTarget builds an xDS resolver for the given target. If the bootstrap contents are provided, it build the xDS resolver using them otherwise, it uses the default xDS resolver. It returns the following: - a channel to read updates from the resolver - a channel to read errors from the r

(t *testing.T, target resolver.Target, bootstrapContents []byte)

Source from the content-addressed store, hash-verified

98// - a channel to read errors from the resolver
99// - the newly created xDS resolver
100func buildResolverForTarget(t *testing.T, target resolver.Target, bootstrapContents []byte) (chan resolver.State, chan error, resolver.Resolver) {
101 t.Helper()
102
103 var builder resolver.Builder
104 if bootstrapContents != nil {
105 // Create an xDS resolver with the provided bootstrap configuration.
106 var err error
107 builder, err = internal.NewXDSResolverWithConfigForTesting.(func([]byte) (resolver.Builder, error))(bootstrapContents)
108 if err != nil {
109 t.Fatalf("Failed to create xDS resolver for testing: %v", err)
110 }
111 } else {
112 builder = resolver.Get(xdsresolver.Scheme)
113 if builder == nil {
114 t.Fatalf("Scheme %q is not registered", xdsresolver.Scheme)
115 }
116 }
117
118 stateCh := make(chan resolver.State, 1)
119 updateStateF := func(s resolver.State) error {
120 stateCh <- s
121 return nil
122 }
123 errCh := make(chan error, 1)
124 reportErrorF := func(err error) {
125 select {
126 case errCh <- err:
127 default:
128 }
129 }
130 tcc := &testutils.ResolverClientConn{Logger: t, UpdateStateF: updateStateF, ReportErrorF: reportErrorF}
131 r, err := builder.Build(target, tcc, resolver.BuildOptions{
132 Authority: url.PathEscape(target.Endpoint()),
133 })
134 if err != nil {
135 t.Fatalf("Failed to build xDS resolver for target %q: %v", target, err)
136 }
137 t.Cleanup(r.Close)
138 return stateCh, errCh, r
139}
140
141// verifyUpdateFromResolver waits for the resolver to push an update to the fake
142// resolver.ClientConn and verifies that update matches the provided service

Calls 4

BuildMethod · 0.95
GetFunction · 0.92
EndpointMethod · 0.80
FatalfMethod · 0.65

Tested by

no test coverage detected