Package spannertest contains test helpers for working with Cloud Spanner.
This package is EXPERIMENTAL, and is lacking several features. See the README.md file in this directory for more details.
In-memory fake
This package has an in-memory fake implementation of spanner. To use it, create a Server, and then connect to it with no security:
srv , err := spannertest . NewServer ( "localhost:0" ) ... conn , err := grpc . DialContext ( ctx , srv . Addr , grpc . WithTransportCredentials ( insecure . NewCredentials ())) ... client , err := spanner . NewClient ( ctx , db , option . WithGRPCConn ( conn )) ...
Alternatively, create a Server, then set the SPANNER_EMULATOR_HOST environment variable and use the regular spanner.NewClient:
srv , err := spannertest . NewServer ( "localhost:0" ) ... os . Setenv ( "SPANNER_EMULATOR_HOST" , srv . Addr ) client , err := spanner . NewClient ( ctx , db ) ...
The same server also supports database admin operations for use with the cloud.google.com/go/spanner/admin/database/apiv1 package. This only simulates the existence of a single database; its name is ignored.
Logger
type
Logger
func
(
format
string
,
args
...
interface
{})
Logger is something that can be used for logging. It is matched by log.Printf and testing.T.Logf.
Server
type
Server
struct
{
Addr
string
// contains filtered or unexported fields
}
Server is an in-memory Cloud Spanner fake. It is unauthenticated, non-performant, and only a rough approximation.
func NewServer
NewServer creates a new Server. The Server will be listening for gRPC connections, without TLS, on the provided TCP address. The resolved address is available in the Addr field.
func (*Server) Close
func
(
s
*
Server
)
Close
()
Close shuts down the server.
func (*Server) SetLogger
SetLogger sets a logger for the server. You can use a *testing.T as this argument to collate extra information from the execution of the server.
func (*Server) UpdateDDL
UpdateDDL applies the given DDL to the server.
This is a convenience method for tests that may assume an existing schema. The more general approach is to dial this server using an admin client, and use the UpdateDatabaseDdl RPC method.

