Documentation ¶
Overview ¶
Package testlib contains utility methods to include in unit tests to deal with topology common tasks, like fake tablets and action loops.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type FakeTablet ¶
type FakeTablet struct { // Tablet and FakeMysqlDaemon are populated at NewFakeTablet time. // We also create the RPCServer, so users can register more services // before calling StartActionLoop(). Tablet *topodatapb.Tablet FakeMysqlDaemon *mysqlctl.FakeMysqlDaemon RPCServer *grpc.Server // The following fields are created when we start the event loop for // the tablet, and closed / cleared when we stop it. // The Listener is used by the gRPC server. TM *tabletmanager.TabletManager Listener net.Listener // These optional fields are used if the tablet also needs to // listen on the 'vt' port. StartHTTPServer bool HTTPListener net.Listener HTTPServer *http.Server }
FakeTablet keeps track of a fake tablet in memory. It has: - a Tablet record (used for creating the tablet, kept for user's information) - a FakeMysqlDaemon (used by the fake event loop) - a 'done' channel (used to terminate the fake event loop)
func NewFakeTablet ¶
func NewFakeTablet(t *testing.T, wr *wrangler.Wrangler, cell string, uid uint32, tabletType topodatapb.TabletType, db *fakesqldb.DB, options ...TabletOption) *FakeTablet
NewFakeTablet creates the test tablet in the topology. 'uid' has to be between 0 and 99. All the tablet info will be derived from that. Look at the implementation if you need values. Use TabletOption implementations if you need to change values at creation. 'db' can be nil if the test doesn't use a database at all.
func (*FakeTablet) StartActionLoop ¶
func (ft *FakeTablet) StartActionLoop(t *testing.T, wr *wrangler.Wrangler)
StartActionLoop will start the action loop for a fake tablet, using ft.FakeMysqlDaemon as the backing mysqld.
func (*FakeTablet) StopActionLoop ¶
func (ft *FakeTablet) StopActionLoop(t *testing.T)
StopActionLoop will stop the Action Loop for the given FakeTablet
func (*FakeTablet) Target ¶
func (ft *FakeTablet) Target() *querypb.Target
Target returns the keyspace/shard/type info of this tablet as Target.
type TabletOption ¶
type TabletOption func(tablet *topodatapb.Tablet)
TabletOption is an interface for changing tablet parameters. It's a way to pass multiple parameters to NewFakeTablet without making it too cumbersome.
func ForceInitTablet ¶
func ForceInitTablet() TabletOption
ForceInitTablet is the tablet option to set the 'force' flag during InitTablet
func StartHTTPServer ¶
func StartHTTPServer() TabletOption
StartHTTPServer is the tablet option to start the HTTP server when starting a tablet.
func TabletKeyspaceShard ¶
func TabletKeyspaceShard(t *testing.T, keyspace, shard string) TabletOption
TabletKeyspaceShard is the option to set the tablet keyspace and shard
type VtctlPipe ¶
type VtctlPipe struct {
// contains filtered or unexported fields
}
VtctlPipe is a vtctl server based on a topo server, and a client that is connected to it via gRPC.
func NewVtctlPipe ¶
NewVtctlPipe creates a new VtctlPipe based on the given topo server.
func (*VtctlPipe) Close ¶
func (vp *VtctlPipe) Close()
Close will stop listening and free up all resources.
func (*VtctlPipe) Run ¶
Run executes the provided command remotely, logs the output in the test logs, and returns the command error.
func (*VtctlPipe) RunAndOutput ¶
RunAndOutput is similar to Run, but returns the output as a multi-line string instead of logging it.
func (*VtctlPipe) RunAndStreamOutput ¶
func (vp *VtctlPipe) RunAndStreamOutput(args []string) (logutil.EventStream, error)
RunAndStreamOutput returns the output of the vtctl command as a channel. When the channcel is closed, the command did finish.