go: cloud.google.com/go/spanner/spannertest Index | Files

package spannertest

import "cloud.google.com/go/spanner/spannertest"

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.WithInsecure())
...
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.

Index

Package Files

db.go db_eval.go db_query.go funcs.go inmem.go

type Logger Uses

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.

type Server Uses

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 Uses

func NewServer(laddr string) (*Server, error)

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 Uses

func (s *Server) Close()

Close shuts down the server.

func (*Server) SetLogger Uses

func (s *Server) SetLogger(l Logger)

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 Uses

func (s *Server) UpdateDDL(ddl *spansql.DDL) error

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.

Package spannertest imports 30 packages (graph) and is imported by 2 packages. Updated 2021-01-14. Refresh now. Tools for package owners.