mirror of https://github.com/grpc/grpc-go.git
test/xds: remove redundant server when using stubserver in tests (#7846)
This commit is contained in:
parent
8b70aeb896
commit
dcba136b36
|
@ -310,6 +310,7 @@ func setupGRPCServerWithModeChangeChannelAndServe(t *testing.T, bootstrapContent
|
||||||
updateCh <- args.Mode
|
updateCh <- args.Mode
|
||||||
})
|
})
|
||||||
stub := &stubserver.StubServer{
|
stub := &stubserver.StubServer{
|
||||||
|
Listener: lis,
|
||||||
EmptyCallF: func(ctx context.Context, in *testpb.Empty) (*testpb.Empty, error) {
|
EmptyCallF: func(ctx context.Context, in *testpb.Empty) (*testpb.Empty, error) {
|
||||||
return &testpb.Empty{}, nil
|
return &testpb.Empty{}, nil
|
||||||
},
|
},
|
||||||
|
@ -321,17 +322,10 @@ func setupGRPCServerWithModeChangeChannelAndServe(t *testing.T, bootstrapContent
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Failed to create an xDS enabled gRPC server: %v", err)
|
t.Fatalf("Failed to create an xDS enabled gRPC server: %v", err)
|
||||||
}
|
}
|
||||||
t.Cleanup(server.Stop)
|
|
||||||
|
|
||||||
stub.S = server
|
stub.S = server
|
||||||
stubserver.StartTestService(t, stub)
|
t.Cleanup(stub.S.Stop)
|
||||||
|
|
||||||
// Serve.
|
stubserver.StartTestService(t, stub)
|
||||||
go func() {
|
|
||||||
if err := server.Serve(lis); err != nil {
|
|
||||||
t.Errorf("Serve() failed: %v", err)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
|
|
||||||
return updateCh
|
return updateCh
|
||||||
}
|
}
|
||||||
|
|
|
@ -158,27 +158,21 @@ func (s) TestServerSideXDS_WithNoCertificateProvidersInBootstrap_Failure(t *test
|
||||||
close(servingModeCh)
|
close(servingModeCh)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
server, err := xds.NewGRPCServer(grpc.Creds(creds), modeChangeOpt, xds.BootstrapContentsForTesting(bs))
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("Failed to create an xDS enabled gRPC server: %v", err)
|
|
||||||
}
|
|
||||||
defer server.Stop()
|
|
||||||
|
|
||||||
stub := &stubserver.StubServer{}
|
// Create a local listener and assign it to the stub server.
|
||||||
stub.S = server
|
|
||||||
stubserver.StartTestService(t, stub)
|
|
||||||
|
|
||||||
// Create a local listener and pass it to Serve().
|
|
||||||
lis, err := testutils.LocalTCPListener()
|
lis, err := testutils.LocalTCPListener()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("testutils.LocalTCPListener() failed: %v", err)
|
t.Fatalf("testutils.LocalTCPListener() failed: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
go func() {
|
stub := &stubserver.StubServer{
|
||||||
if err := server.Serve(lis); err != nil {
|
Listener: lis,
|
||||||
t.Errorf("Serve() failed: %v", err)
|
|
||||||
}
|
}
|
||||||
}()
|
if stub.S, err = xds.NewGRPCServer(grpc.Creds(creds), modeChangeOpt, xds.BootstrapContentsForTesting(bs)); err != nil {
|
||||||
|
t.Fatalf("Failed to create an xDS enabled gRPC server: %v", err)
|
||||||
|
}
|
||||||
|
defer stub.S.Stop()
|
||||||
|
stubserver.StartTestService(t, stub)
|
||||||
|
|
||||||
// Create an inbound xDS listener resource for the server side that contains
|
// Create an inbound xDS listener resource for the server side that contains
|
||||||
// mTLS security configuration. Since the received certificate provider
|
// mTLS security configuration. Since the received certificate provider
|
||||||
|
@ -288,30 +282,10 @@ func (s) TestServerSideXDS_WithValidAndInvalidSecurityConfiguration(t *testing.T
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
stub := &stubserver.StubServer{
|
stub1 := createStubServer(t, lis1, creds, modeChangeOpt, bootstrapContents)
|
||||||
EmptyCallF: func(ctx context.Context, in *testpb.Empty) (*testpb.Empty, error) {
|
defer stub1.S.Stop()
|
||||||
return &testpb.Empty{}, nil
|
stub2 := createStubServer(t, lis2, creds, modeChangeOpt, bootstrapContents)
|
||||||
},
|
defer stub2.S.Stop()
|
||||||
}
|
|
||||||
server, err := xds.NewGRPCServer(grpc.Creds(creds), modeChangeOpt, xds.BootstrapContentsForTesting(bootstrapContents))
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("Failed to create an xDS enabled gRPC server: %v", err)
|
|
||||||
}
|
|
||||||
defer server.Stop()
|
|
||||||
|
|
||||||
stub.S = server
|
|
||||||
stubserver.StartTestService(t, stub)
|
|
||||||
|
|
||||||
go func() {
|
|
||||||
if err := server.Serve(lis1); err != nil {
|
|
||||||
t.Errorf("Serve() failed: %v", err)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
go func() {
|
|
||||||
if err := server.Serve(lis2); err != nil {
|
|
||||||
t.Errorf("Serve() failed: %v", err)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
|
|
||||||
// Create inbound xDS listener resources for the server side that contains
|
// Create inbound xDS listener resources for the server side that contains
|
||||||
// mTLS security configuration.
|
// mTLS security configuration.
|
||||||
|
|
|
@ -111,12 +111,10 @@ func setupGRPCServer(t *testing.T, bootstrapContents []byte) (net.Listener, func
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
server, err := xds.NewGRPCServer(grpc.Creds(creds), testModeChangeServerOption(t), xds.BootstrapContentsForTesting(bootstrapContents))
|
if stub.S, err = xds.NewGRPCServer(grpc.Creds(creds), testModeChangeServerOption(t), xds.BootstrapContentsForTesting(bootstrapContents)); err != nil {
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("Failed to create an xDS enabled gRPC server: %v", err)
|
t.Fatalf("Failed to create an xDS enabled gRPC server: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
stub.S = server
|
|
||||||
stubserver.StartTestService(t, stub)
|
stubserver.StartTestService(t, stub)
|
||||||
|
|
||||||
// Create a local listener and pass it to Serve().
|
// Create a local listener and pass it to Serve().
|
||||||
|
@ -131,7 +129,7 @@ func setupGRPCServer(t *testing.T, bootstrapContents []byte) (net.Listener, func
|
||||||
}
|
}
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
if err := server.Serve(readyLis); err != nil {
|
if err := stub.S.Serve(readyLis); err != nil {
|
||||||
t.Errorf("Serve() failed: %v", err)
|
t.Errorf("Serve() failed: %v", err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
@ -144,7 +142,7 @@ func setupGRPCServer(t *testing.T, bootstrapContents []byte) (net.Listener, func
|
||||||
}
|
}
|
||||||
|
|
||||||
return lis, func() {
|
return lis, func() {
|
||||||
server.Stop()
|
stub.S.Stop()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,7 @@ import (
|
||||||
|
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
"google.golang.org/grpc/connectivity"
|
"google.golang.org/grpc/connectivity"
|
||||||
|
"google.golang.org/grpc/credentials"
|
||||||
"google.golang.org/grpc/credentials/insecure"
|
"google.golang.org/grpc/credentials/insecure"
|
||||||
xdscreds "google.golang.org/grpc/credentials/xds"
|
xdscreds "google.golang.org/grpc/credentials/xds"
|
||||||
"google.golang.org/grpc/internal/stubserver"
|
"google.golang.org/grpc/internal/stubserver"
|
||||||
|
@ -65,19 +66,8 @@ func (s) TestServerSideXDS_RedundantUpdateSuppression(t *testing.T) {
|
||||||
|
|
||||||
// Initialize a test gRPC server, assign it to the stub server, and start
|
// Initialize a test gRPC server, assign it to the stub server, and start
|
||||||
// the test service.
|
// the test service.
|
||||||
stub := &stubserver.StubServer{
|
stub := createStubServer(t, lis, creds, modeChangeOpt, bootstrapContents)
|
||||||
EmptyCallF: func(ctx context.Context, in *testpb.Empty) (*testpb.Empty, error) {
|
defer stub.S.Stop()
|
||||||
return &testpb.Empty{}, nil
|
|
||||||
},
|
|
||||||
}
|
|
||||||
server, err := xds.NewGRPCServer(grpc.Creds(creds), modeChangeOpt, xds.BootstrapContentsForTesting(bootstrapContents))
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("Failed to create an xDS enabled gRPC server: %v", err)
|
|
||||||
}
|
|
||||||
defer server.Stop()
|
|
||||||
|
|
||||||
stub.S = server
|
|
||||||
stubserver.StartTestService(t, stub)
|
|
||||||
|
|
||||||
// Setup the management server to respond with the listener resources.
|
// Setup the management server to respond with the listener resources.
|
||||||
host, port, err := hostPortFromListener(lis)
|
host, port, err := hostPortFromListener(lis)
|
||||||
|
@ -95,12 +85,6 @@ func (s) TestServerSideXDS_RedundantUpdateSuppression(t *testing.T) {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
go func() {
|
|
||||||
if err := server.Serve(lis); err != nil {
|
|
||||||
t.Errorf("Serve() failed: %v", err)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
|
|
||||||
// Wait for the listener to move to "serving" mode.
|
// Wait for the listener to move to "serving" mode.
|
||||||
select {
|
select {
|
||||||
case <-ctx.Done():
|
case <-ctx.Done():
|
||||||
|
@ -217,19 +201,10 @@ func (s) TestServerSideXDS_ServingModeChanges(t *testing.T) {
|
||||||
|
|
||||||
// Initialize a test gRPC server, assign it to the stub server, and start
|
// Initialize a test gRPC server, assign it to the stub server, and start
|
||||||
// the test service.
|
// the test service.
|
||||||
stub := &stubserver.StubServer{
|
stub1 := createStubServer(t, lis1, creds, modeChangeOpt, bootstrapContents)
|
||||||
EmptyCallF: func(ctx context.Context, in *testpb.Empty) (*testpb.Empty, error) {
|
defer stub1.S.Stop()
|
||||||
return &testpb.Empty{}, nil
|
stub2 := createStubServer(t, lis2, creds, modeChangeOpt, bootstrapContents)
|
||||||
},
|
defer stub2.S.Stop()
|
||||||
}
|
|
||||||
server, err := xds.NewGRPCServer(grpc.Creds(creds), modeChangeOpt, xds.BootstrapContentsForTesting(bootstrapContents))
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("Failed to create an xDS enabled gRPC server: %v", err)
|
|
||||||
}
|
|
||||||
defer server.Stop()
|
|
||||||
|
|
||||||
stub.S = server
|
|
||||||
stubserver.StartTestService(t, stub)
|
|
||||||
|
|
||||||
// Setup the management server to respond with server-side Listener
|
// Setup the management server to respond with server-side Listener
|
||||||
// resources for both listeners.
|
// resources for both listeners.
|
||||||
|
@ -251,17 +226,6 @@ func (s) TestServerSideXDS_ServingModeChanges(t *testing.T) {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
go func() {
|
|
||||||
if err := server.Serve(lis1); err != nil {
|
|
||||||
t.Errorf("Serve() failed: %v", err)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
go func() {
|
|
||||||
if err := server.Serve(lis2); err != nil {
|
|
||||||
t.Errorf("Serve() failed: %v", err)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
|
|
||||||
// Wait for both listeners to move to "serving" mode.
|
// Wait for both listeners to move to "serving" mode.
|
||||||
select {
|
select {
|
||||||
case <-ctx.Done():
|
case <-ctx.Done():
|
||||||
|
@ -384,6 +348,22 @@ func (s) TestServerSideXDS_ServingModeChanges(t *testing.T) {
|
||||||
waitForSuccessfulRPC(ctx, t, cc2)
|
waitForSuccessfulRPC(ctx, t, cc2)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func createStubServer(t *testing.T, lis net.Listener, creds credentials.TransportCredentials, modeChangeOpt grpc.ServerOption, bootstrapContents []byte) *stubserver.StubServer {
|
||||||
|
stub := &stubserver.StubServer{
|
||||||
|
Listener: lis,
|
||||||
|
EmptyCallF: func(ctx context.Context, in *testpb.Empty) (*testpb.Empty, error) {
|
||||||
|
return &testpb.Empty{}, nil
|
||||||
|
},
|
||||||
|
}
|
||||||
|
server, err := xds.NewGRPCServer(grpc.Creds(creds), modeChangeOpt, xds.BootstrapContentsForTesting(bootstrapContents))
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Failed to create an xDS enabled gRPC server: %v", err)
|
||||||
|
}
|
||||||
|
stub.S = server
|
||||||
|
stubserver.StartTestService(t, stub)
|
||||||
|
return stub
|
||||||
|
}
|
||||||
|
|
||||||
func waitForSuccessfulRPC(ctx context.Context, t *testing.T, cc *grpc.ClientConn) {
|
func waitForSuccessfulRPC(ctx context.Context, t *testing.T, cc *grpc.ClientConn) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,7 @@ import (
|
||||||
"google.golang.org/grpc/codes"
|
"google.golang.org/grpc/codes"
|
||||||
"google.golang.org/grpc/connectivity"
|
"google.golang.org/grpc/connectivity"
|
||||||
"google.golang.org/grpc/credentials/insecure"
|
"google.golang.org/grpc/credentials/insecure"
|
||||||
|
xdscreds "google.golang.org/grpc/credentials/xds"
|
||||||
"google.golang.org/grpc/internal/grpcsync"
|
"google.golang.org/grpc/internal/grpcsync"
|
||||||
"google.golang.org/grpc/internal/stubserver"
|
"google.golang.org/grpc/internal/stubserver"
|
||||||
"google.golang.org/grpc/internal/testutils"
|
"google.golang.org/grpc/internal/testutils"
|
||||||
|
@ -93,26 +94,15 @@ func (s) TestServeLDSRDS(t *testing.T) {
|
||||||
serving.Fire()
|
serving.Fire()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
// Configure xDS credentials with an insecure fallback to be used on the
|
||||||
stub := &stubserver.StubServer{
|
// server-side.
|
||||||
EmptyCallF: func(ctx context.Context, in *testpb.Empty) (*testpb.Empty, error) {
|
creds, err := xdscreds.NewServerCredentials(xdscreds.ServerOptions{FallbackCreds: insecure.NewCredentials()})
|
||||||
return &testpb.Empty{}, nil
|
|
||||||
},
|
|
||||||
}
|
|
||||||
server, err := xds.NewGRPCServer(grpc.Creds(insecure.NewCredentials()), modeChangeOpt, xds.BootstrapContentsForTesting(bootstrapContents))
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Failed to create an xDS enabled gRPC server: %v", err)
|
t.Fatalf("failed to create server credentials: %v", err)
|
||||||
}
|
}
|
||||||
defer server.Stop()
|
stub := createStubServer(t, lis, creds, modeChangeOpt, bootstrapContents)
|
||||||
|
defer stub.S.Stop()
|
||||||
|
|
||||||
stub.S = server
|
|
||||||
stubserver.StartTestService(t, stub)
|
|
||||||
|
|
||||||
go func() {
|
|
||||||
if err := server.Serve(lis); err != nil {
|
|
||||||
t.Errorf("Serve() failed: %v", err)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
select {
|
select {
|
||||||
case <-ctx.Done():
|
case <-ctx.Done():
|
||||||
t.Fatal("timeout waiting for the xDS Server to go Serving")
|
t.Fatal("timeout waiting for the xDS Server to go Serving")
|
||||||
|
@ -210,25 +200,15 @@ func (s) TestRDSNack(t *testing.T) {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
stub := &stubserver.StubServer{
|
// Configure xDS credentials with an insecure fallback to be used on the
|
||||||
EmptyCallF: func(ctx context.Context, in *testpb.Empty) (*testpb.Empty, error) {
|
// server-side.
|
||||||
return &testpb.Empty{}, nil
|
creds, err := xdscreds.NewServerCredentials(xdscreds.ServerOptions{FallbackCreds: insecure.NewCredentials()})
|
||||||
},
|
|
||||||
}
|
|
||||||
server, err := xds.NewGRPCServer(grpc.Creds(insecure.NewCredentials()), modeChangeOpt, xds.BootstrapContentsForTesting(bootstrapContents))
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Failed to create an xDS enabled gRPC server: %v", err)
|
t.Fatalf("failed to create server credentials: %v", err)
|
||||||
}
|
}
|
||||||
defer server.Stop()
|
|
||||||
|
|
||||||
stub.S = server
|
stub := createStubServer(t, lis, creds, modeChangeOpt, bootstrapContents)
|
||||||
stubserver.StartTestService(t, stub)
|
defer stub.S.Stop()
|
||||||
|
|
||||||
go func() {
|
|
||||||
if err := server.Serve(lis); err != nil {
|
|
||||||
t.Errorf("Serve() failed: %v", err)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
|
|
||||||
cc, err := grpc.NewClient(lis.Addr().String(), grpc.WithTransportCredentials(insecure.NewCredentials()))
|
cc, err := grpc.NewClient(lis.Addr().String(), grpc.WithTransportCredentials(insecure.NewCredentials()))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -278,6 +258,7 @@ func (s) TestMultipleUpdatesImmediatelySwitch(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
stub := &stubserver.StubServer{
|
stub := &stubserver.StubServer{
|
||||||
|
Listener: lis,
|
||||||
EmptyCallF: func(ctx context.Context, in *testpb.Empty) (*testpb.Empty, error) {
|
EmptyCallF: func(ctx context.Context, in *testpb.Empty) (*testpb.Empty, error) {
|
||||||
return &testpb.Empty{}, nil
|
return &testpb.Empty{}, nil
|
||||||
},
|
},
|
||||||
|
@ -291,21 +272,12 @@ func (s) TestMultipleUpdatesImmediatelySwitch(t *testing.T) {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
server, err := xds.NewGRPCServer(grpc.Creds(insecure.NewCredentials()), testModeChangeServerOption(t), xds.BootstrapContentsForTesting(bootstrapContents))
|
if stub.S, err = xds.NewGRPCServer(grpc.Creds(insecure.NewCredentials()), testModeChangeServerOption(t), xds.BootstrapContentsForTesting(bootstrapContents)); err != nil {
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("Failed to create an xDS enabled gRPC server: %v", err)
|
t.Fatalf("Failed to create an xDS enabled gRPC server: %v", err)
|
||||||
}
|
}
|
||||||
defer server.Stop()
|
defer stub.S.Stop()
|
||||||
|
|
||||||
stub.S = server
|
|
||||||
stubserver.StartTestService(t, stub)
|
stubserver.StartTestService(t, stub)
|
||||||
|
|
||||||
go func() {
|
|
||||||
if err := server.Serve(lis); err != nil {
|
|
||||||
t.Errorf("Serve() failed: %v", err)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
|
|
||||||
cc, err := grpc.NewClient(lis.Addr().String(), grpc.WithTransportCredentials(insecure.NewCredentials()))
|
cc, err := grpc.NewClient(lis.Addr().String(), grpc.WithTransportCredentials(insecure.NewCredentials()))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("failed to dial local test server: %v", err)
|
t.Fatalf("failed to dial local test server: %v", err)
|
||||||
|
|
Loading…
Reference in New Issue