Skip to content

Commit 8c807c2

Browse files
committed
update OverrideListenerResourceName document and simplify the test
1 parent e9b5060 commit 8c807c2

2 files changed

Lines changed: 17 additions & 32 deletions

File tree

internal/xds/server/server_options.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,13 @@ func ApplyServerOptions(opts []grpc.ServerOption, so *Options) {
5555
}
5656

5757
// OverrideListenerResourceName returns a server option that overrides the LDS
58-
// resource name selected for an xDS server listener.
58+
// resource name selected for an xDS server listener. The supplied function is
59+
// called by Serve with the address returned by the listener's Addr method, and
60+
// its return value is used as-is as the LDS listener resource name.
61+
//
62+
// The function is called once for each Serve invocation that gets past listener
63+
// validation and the server-stopped check. If Serve is called concurrently, the
64+
// function may be called concurrently and must be safe for concurrent use.
5965
func OverrideListenerResourceName(f func(net.Addr) string) grpc.ServerOption {
6066
return NewServerOption(func(o *Options) {
6167
o.OverrideListenerResourceName = f

xds/server_test.go

Lines changed: 10 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -238,8 +238,7 @@ func (s) TestServer_OverrideListenerResourceNameOverridesMissingTemplate(t *test
238238
ldsResourceNameReceived := grpcsync.NewEvent()
239239
mgmtServer := e2e.StartManagementServer(t, e2e.ManagementServerOptions{
240240
OnStreamRequest: func(_ int64, req *v3discoverypb.DiscoveryRequest) error {
241-
if req.GetTypeUrl() == version.V3ListenerURL &&
242-
cmp.Equal(req.GetResourceNames(), []string{wantResourceName}) {
241+
if req.GetTypeUrl() == version.V3ListenerURL && cmp.Equal(req.GetResourceNames(), []string{wantResourceName}) {
243242
ldsResourceNameReceived.Fire()
244243
}
245244
return nil
@@ -262,36 +261,28 @@ func (s) TestServer_OverrideListenerResourceNameOverridesMissingTemplate(t *test
262261
newGRPCServer = func(...grpc.ServerOption) grpcServer { return fs }
263262
defer func() { newGRPCServer = origNewGRPCServer }()
264263

265-
addrCh := make(chan net.Addr, 1)
266-
srv, err := NewGRPCServer(
267-
internalserver.OverrideListenerResourceName(func(addr net.Addr) string {
268-
addrCh <- addr
269-
return wantResourceName
270-
}),
271-
BootstrapContentsForTesting(bs),
272-
)
264+
lisAddrCh := make(chan net.Addr, 1)
265+
resourceNameOpt := internalserver.OverrideListenerResourceName(func(addr net.Addr) string {
266+
lisAddrCh <- addr
267+
return wantResourceName
268+
})
269+
srv, err := NewGRPCServer(resourceNameOpt, BootstrapContentsForTesting(bs))
273270
if err != nil {
274271
t.Fatalf("NewGRPCServer() failed: %v", err)
275272
}
276-
stopped := false
277-
defer func() {
278-
if !stopped {
279-
srv.Stop()
280-
}
281-
}()
273+
defer srv.Stop()
282274

283275
lis, err := testutils.LocalTCPListener()
284276
if err != nil {
285277
t.Fatalf("testutils.LocalTCPListener() failed: %v", err)
286278
}
287-
serveErrCh := make(chan error, 1)
288-
go func() { serveErrCh <- srv.Serve(lis) }()
279+
go func() { _ = srv.Serve(lis) }()
289280

290281
ctx, cancel := context.WithTimeout(context.Background(), defaultTestTimeout)
291282
defer cancel()
292283
// Verify that OverrideListenerResourceName receives the listener address.
293284
select {
294-
case gotAddr := <-addrCh:
285+
case gotAddr := <-lisAddrCh:
295286
if gotAddr.String() != lis.Addr().String() {
296287
t.Fatalf("OverrideListenerResourceName() called with address %q, want %q", gotAddr, lis.Addr())
297288
}
@@ -305,18 +296,6 @@ func (s) TestServer_OverrideListenerResourceNameOverridesMissingTemplate(t *test
305296
case <-ctx.Done():
306297
t.Fatal("Timeout waiting for an LDS request with the overridden resource name")
307298
}
308-
309-
srv.Stop()
310-
stopped = true
311-
// Verify that Serve returns after the server is stopped.
312-
select {
313-
case err := <-serveErrCh:
314-
if err != nil {
315-
t.Fatalf("Serve() returned error: %v", err)
316-
}
317-
case <-ctx.Done():
318-
t.Fatal("Timeout waiting for Serve() to return")
319-
}
320299
}
321300

322301
func (s) TestRegisterService(t *testing.T) {

0 commit comments

Comments
 (0)