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

Function buildResolverWithTestClientConn

internal/resolver/dns/dns_resolver_test.go:135–168  ·  view source on GitHub ↗

Builds a DNS resolver for target and returns a couple of channels to read the state and error pushed by the resolver respectively.

(t *testing.T, target string)

Source from the content-addressed store, hash-verified

133// Builds a DNS resolver for target and returns a couple of channels to read the
134// state and error pushed by the resolver respectively.
135func buildResolverWithTestClientConn(t *testing.T, target string) (resolver.Resolver, chan resolver.State, chan error) {
136 t.Helper()
137
138 b := resolver.Get("dns")
139 if b == nil {
140 t.Fatalf("Resolver for dns:/// scheme not registered")
141 }
142
143 stateCh := make(chan resolver.State, 1)
144 updateStateF := func(s resolver.State) error {
145 select {
146 case stateCh <- s:
147 default:
148 }
149 return nil
150 }
151
152 errCh := make(chan error, 1)
153 reportErrorF := func(err error) {
154 select {
155 case errCh <- err:
156 default:
157 }
158 }
159
160 tcc := &testutils.ResolverClientConn{Logger: t, UpdateStateF: updateStateF, ReportErrorF: reportErrorF}
161 r, err := b.Build(resolver.Target{URL: *testutils.MustParseURL(fmt.Sprintf("dns:///%s", target))}, tcc, resolver.BuildOptions{})
162 if err != nil {
163 t.Fatalf("Failed to build DNS resolver for target %q: %v\n", target, err)
164 }
165 t.Cleanup(func() { r.Close() })
166
167 return r, stateCh, errCh
168}
169
170// resolverUpdate holds required components of a resolver state for validation.
171type resolverUpdate struct {

Callers 9

TestDNSResolver_BasicMethod · 0.85
TestIPResolverMethod · 0.85
TestTXTErrorMethod · 0.85
TestReportErrorMethod · 0.85
TestResolveTimeoutMethod · 0.85

Calls 5

GetFunction · 0.92
MustParseURLFunction · 0.92
FatalfMethod · 0.65
BuildMethod · 0.65
CloseMethod · 0.65

Tested by

no test coverage detected