Skip to content

Commit

Permalink
test(pubsublite): refactor out common code for main_test.go (#3276)
Browse files Browse the repository at this point in the history
Since main_test.go needs to be cloned into every package that needs to use the mock server, refactor the bulk of the common code to keep it minimal.
  • Loading branch information
tmdiep committed Dec 4, 2020
1 parent d5b3e10 commit 5337043
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 33 deletions.
33 changes: 22 additions & 11 deletions pubsublite/internal/test/mock.go
Expand Up @@ -16,11 +16,13 @@ package test
import (
"context"
"io"
"log"
"reflect"
"sync"

"cloud.google.com/go/internal/testutil"
"cloud.google.com/go/internal/uid"
"google.golang.org/api/option"
"google.golang.org/grpc"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
Expand All @@ -29,12 +31,6 @@ import (
pb "google.golang.org/genproto/googleapis/cloud/pubsublite/v1"
)

// Server is a mock Pub/Sub Lite server that can be used for unit testing.
type Server struct {
LiteServer MockServer
gRPCServer *testutil.Server
}

// MockServer is an in-memory mock implementation of a Pub/Sub Lite service,
// which allows unit tests to inspect requests received by the server and send
// fake responses.
Expand All @@ -48,6 +44,12 @@ type MockServer interface {
OnTestEnd()
}

// Server is a mock Pub/Sub Lite server that can be used for unit testing.
type Server struct {
LiteServer MockServer
gRPCServer *testutil.Server
}

// NewServer creates a new mock Pub/Sub Lite server.
func NewServer() (*Server, error) {
srv, err := testutil.NewServer()
Expand All @@ -64,6 +66,20 @@ func NewServer() (*Server, error) {
return &Server{LiteServer: liteServer, gRPCServer: srv}, nil
}

// NewServerWithConn creates a new mock Pub/Sub Lite server along with client
// options to connect to it.
func NewServerWithConn() (*Server, []option.ClientOption) {
testServer, err := NewServer()
if err != nil {
log.Fatal(err)
}
conn, err := grpc.Dial(testServer.Addr(), grpc.WithInsecure())
if err != nil {
log.Fatal(err)
}
return testServer, []option.ClientOption{option.WithGRPCConn(conn)}
}

// Addr returns the address that the server is listening on.
func (s *Server) Addr() string {
return s.gRPCServer.Addr
Expand All @@ -74,11 +90,6 @@ func (s *Server) Close() {
s.gRPCServer.Close()
}

type streamHolder struct {
stream grpc.ServerStream
verifier *RPCVerifier
}

// mockLiteServer implements the MockServer interface.
type mockLiteServer struct {
pb.AdminServiceServer
Expand Down
13 changes: 2 additions & 11 deletions pubsublite/internal/wire/main_test.go
Expand Up @@ -15,13 +15,11 @@ package wire

import (
"flag"
"log"
"os"
"testing"

"cloud.google.com/go/pubsublite/internal/test"
"google.golang.org/api/option"
"google.golang.org/grpc"
)

var (
Expand All @@ -33,16 +31,9 @@ var (
func TestMain(m *testing.M) {
flag.Parse()

testServer, err := test.NewServer()
if err != nil {
log.Fatal(err)
}
testServer, clientOpts := test.NewServerWithConn()
mockServer = testServer.LiteServer
conn, err := grpc.Dial(testServer.Addr(), grpc.WithInsecure())
if err != nil {
log.Fatal(err)
}
testClientOpts = []option.ClientOption{option.WithGRPCConn(conn)}
testClientOpts = clientOpts

exit := m.Run()
testServer.Close()
Expand Down
13 changes: 2 additions & 11 deletions pubsublite/main_test.go
Expand Up @@ -15,13 +15,11 @@ package pubsublite

import (
"flag"
"log"
"os"
"testing"

"cloud.google.com/go/pubsublite/internal/test"
"google.golang.org/api/option"
"google.golang.org/grpc"
)

var (
Expand All @@ -33,16 +31,9 @@ var (
func TestMain(m *testing.M) {
flag.Parse()

testServer, err := test.NewServer()
if err != nil {
log.Fatal(err)
}
testServer, clientOpts := test.NewServerWithConn()
mockServer = testServer.LiteServer
conn, err := grpc.Dial(testServer.Addr(), grpc.WithInsecure())
if err != nil {
log.Fatal(err)
}
testClientOpts = []option.ClientOption{option.WithGRPCConn(conn)}
testClientOpts = clientOpts

exit := m.Run()
testServer.Close()
Expand Down

0 comments on commit 5337043

Please sign in to comment.