sandboxconn

package
v0.14.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 26, 2022 License: Apache-2.0 Imports: 14 Imported by: 2

Documentation

Overview

Package sandboxconn provides a fake QueryService implementation for tests. It can return real results, and simulate error cases.

Index

Constants

This section is empty.

Variables

View Source
var SandboxSQRowCount = int64(10)

SandboxSQRowCount is the default number of fake splits returned.

View Source
var SingleRowResult = &sqltypes.Result{
	Fields: []*querypb.Field{
		{Name: "id", Type: sqltypes.Int32},
		{Name: "value", Type: sqltypes.VarChar},
	},
	InsertID: 0,
	Rows: [][]sqltypes.Value{{
		sqltypes.NewInt32(1),
		sqltypes.NewVarChar("foo"),
	}},
	StatusFlags: sqltypes.ServerStatusAutocommit,
}

SingleRowResult is returned when there is no pre-stored result.

View Source
var StreamRowResult = &sqltypes.Result{
	Fields: []*querypb.Field{
		{Name: "id", Type: sqltypes.Int32},
		{Name: "value", Type: sqltypes.VarChar},
	},
	Rows: [][]sqltypes.Value{{
		sqltypes.NewInt32(1),
		sqltypes.NewVarChar("foo"),
	}},
}

StreamRowResult is SingleRowResult with RowsAffected set to 0.

Functions

This section is empty.

Types

type SandboxConn

type SandboxConn struct {

	// These errors work for all functions.
	MustFailCodes map[vtrpcpb.Code]int

	// These errors are triggered only for specific functions.
	// For now these are just for the 2PC functions.
	MustFailPrepare             int
	MustFailCommitPrepared      int
	MustFailRollbackPrepared    int
	MustFailCreateTransaction   int
	MustFailStartCommit         int
	MustFailSetRollback         int
	MustFailConcludeTransaction int
	// MustFailExecute is keyed by the statement type and stores the number
	// of times to fail when it sees that statement type.
	// Once, exhausted it will start returning non-error response.
	MustFailExecute map[sqlparser.StatementType]int

	// These Count vars report how often the corresponding
	// functions were called.
	ExecCount                sync2.AtomicInt64
	BeginCount               sync2.AtomicInt64
	CommitCount              sync2.AtomicInt64
	RollbackCount            sync2.AtomicInt64
	AsTransactionCount       sync2.AtomicInt64
	PrepareCount             sync2.AtomicInt64
	CommitPreparedCount      sync2.AtomicInt64
	RollbackPreparedCount    sync2.AtomicInt64
	CreateTransactionCount   sync2.AtomicInt64
	StartCommitCount         sync2.AtomicInt64
	SetRollbackCount         sync2.AtomicInt64
	ConcludeTransactionCount sync2.AtomicInt64
	ReadTransactionCount     sync2.AtomicInt64
	ReserveCount             sync2.AtomicInt64
	ReleaseCount             sync2.AtomicInt64

	// Queries stores the non-batch requests received.
	Queries []*querypb.BoundQuery

	// BatchQueries stores the batch requests received
	// Each batch request is inlined as a slice of Queries.
	BatchQueries [][]*querypb.BoundQuery

	// Options stores the options received by all calls.
	Options []*querypb.ExecuteOptions

	// ReadTransactionResults is used for returning results for ReadTransaction.
	ReadTransactionResults []*querypb.TransactionMetadata

	MessageIDs []*querypb.Value

	// vstream expectations.
	StartPos      string
	VStreamEvents [][]*binlogdatapb.VEvent
	VStreamErrors []error
	VStreamCh     chan *binlogdatapb.VEvent

	// transaction id generator
	TransactionID sync2.AtomicInt64

	// reserve id generator
	ReserveID sync2.AtomicInt64

	// this error will only happen once
	EphemeralShardErr error

	NotServing bool
	// contains filtered or unexported fields
}

SandboxConn satisfies the QueryService interface

func NewSandboxConn

func NewSandboxConn(t *topodatapb.Tablet) *SandboxConn

NewSandboxConn returns a new SandboxConn targeted to the provided tablet.

func (*SandboxConn) AddVStreamEvents

func (sbc *SandboxConn) AddVStreamEvents(events []*binlogdatapb.VEvent, err error)

AddVStreamEvents adds a set of VStream events to be returned.

func (*SandboxConn) Begin

Begin is part of the QueryService interface.

func (*SandboxConn) BeginExecute

func (sbc *SandboxConn) BeginExecute(ctx context.Context, target *querypb.Target, preQueries []string, query string, bindVars map[string]*querypb.BindVariable, reservedID int64, options *querypb.ExecuteOptions) (*sqltypes.Result, int64, *topodatapb.TabletAlias, error)

BeginExecute is part of the QueryService interface.

func (*SandboxConn) BeginStreamExecute added in v0.13.0

func (sbc *SandboxConn) BeginStreamExecute(ctx context.Context, target *querypb.Target, preQueries []string, sql string, bindVariables map[string]*querypb.BindVariable, reservedID int64, options *querypb.ExecuteOptions, callback func(*sqltypes.Result) error) (int64, *topodatapb.TabletAlias, error)

BeginStreamExecute is part of the QueryService interface.

func (*SandboxConn) ChangeTabletType added in v0.10.2

func (sbc *SandboxConn) ChangeTabletType(typ topodatapb.TabletType)

ChangeTabletType changes the tablet type.

func (*SandboxConn) Close

func (sbc *SandboxConn) Close(ctx context.Context) error

Close does not change ExecCount

func (*SandboxConn) Commit

func (sbc *SandboxConn) Commit(ctx context.Context, target *querypb.Target, transactionID int64) (int64, error)

Commit is part of the QueryService interface.

func (*SandboxConn) CommitPrepared

func (sbc *SandboxConn) CommitPrepared(ctx context.Context, target *querypb.Target, dtid string) (err error)

CommitPrepared commits the prepared transaction.

func (*SandboxConn) ConcludeTransaction

func (sbc *SandboxConn) ConcludeTransaction(ctx context.Context, target *querypb.Target, dtid string) (err error)

ConcludeTransaction deletes the 2pc transaction metadata essentially resolving it.

func (*SandboxConn) CreateTransaction

func (sbc *SandboxConn) CreateTransaction(ctx context.Context, target *querypb.Target, dtid string, participants []*querypb.Target) (err error)

CreateTransaction creates the metadata for a 2PC transaction.

func (*SandboxConn) Execute

func (sbc *SandboxConn) Execute(ctx context.Context, target *querypb.Target, query string, bindVars map[string]*querypb.BindVariable, transactionID, reservedID int64, options *querypb.ExecuteOptions) (*sqltypes.Result, error)

Execute is part of the QueryService interface.

func (*SandboxConn) ExpectVStreamStartPos

func (sbc *SandboxConn) ExpectVStreamStartPos(startPos string)

ExpectVStreamStartPos makes the conn verify that that the next vstream request has the right startPos.

func (*SandboxConn) HandlePanic

func (sbc *SandboxConn) HandlePanic(err *error)

HandlePanic is part of the QueryService interface.

func (*SandboxConn) MessageAck

func (sbc *SandboxConn) MessageAck(ctx context.Context, target *querypb.Target, name string, ids []*querypb.Value) (count int64, err error)

MessageAck is part of the QueryService interface.

func (*SandboxConn) MessageStream

func (sbc *SandboxConn) MessageStream(ctx context.Context, target *querypb.Target, name string, callback func(*sqltypes.Result) error) (err error)

MessageStream is part of the QueryService interface.

func (*SandboxConn) Prepare

func (sbc *SandboxConn) Prepare(ctx context.Context, target *querypb.Target, transactionID int64, dtid string) (err error)

Prepare prepares the specified transaction.

func (*SandboxConn) QueryServiceByAlias

func (sbc *SandboxConn) QueryServiceByAlias(_ *topodatapb.TabletAlias, _ *querypb.Target) (queryservice.QueryService, error)

QueryServiceByAlias is part of the Gateway interface.

func (*SandboxConn) ReadTransaction

func (sbc *SandboxConn) ReadTransaction(ctx context.Context, target *querypb.Target, dtid string) (metadata *querypb.TransactionMetadata, err error)

ReadTransaction returns the metadata for the sepcified dtid.

func (*SandboxConn) Release

func (sbc *SandboxConn) Release(ctx context.Context, target *querypb.Target, transactionID, reservedID int64) error

Release implements the QueryService interface

func (*SandboxConn) ReserveBeginExecute

func (sbc *SandboxConn) ReserveBeginExecute(ctx context.Context, target *querypb.Target, preQueries []string, postBeginQueries []string, sql string, bindVariables map[string]*querypb.BindVariable, options *querypb.ExecuteOptions) (*sqltypes.Result, int64, int64, *topodatapb.TabletAlias, error)

ReserveBeginExecute implements the QueryService interface

func (*SandboxConn) ReserveBeginStreamExecute added in v0.13.0

func (sbc *SandboxConn) ReserveBeginStreamExecute(ctx context.Context, target *querypb.Target, preQueries []string, postBeginQueries []string, sql string, bindVariables map[string]*querypb.BindVariable, options *querypb.ExecuteOptions, callback func(*sqltypes.Result) error) (int64, int64, *topodatapb.TabletAlias, error)

ReserveBeginStreamExecute is part of the QueryService interface.

func (*SandboxConn) ReserveExecute

func (sbc *SandboxConn) ReserveExecute(ctx context.Context, target *querypb.Target, preQueries []string, sql string, bindVariables map[string]*querypb.BindVariable, transactionID int64, options *querypb.ExecuteOptions) (*sqltypes.Result, int64, *topodatapb.TabletAlias, error)

ReserveExecute implements the QueryService interface

func (*SandboxConn) ReserveStreamExecute added in v0.13.0

func (sbc *SandboxConn) ReserveStreamExecute(ctx context.Context, target *querypb.Target, preQueries []string, sql string, bindVariables map[string]*querypb.BindVariable, transactionID int64, options *querypb.ExecuteOptions, callback func(*sqltypes.Result) error) (int64, *topodatapb.TabletAlias, error)

ReserveStreamExecute is part of the QueryService interface.

func (*SandboxConn) Rollback

func (sbc *SandboxConn) Rollback(ctx context.Context, target *querypb.Target, transactionID int64) (int64, error)

Rollback is part of the QueryService interface.

func (*SandboxConn) RollbackPrepared

func (sbc *SandboxConn) RollbackPrepared(ctx context.Context, target *querypb.Target, dtid string, originalID int64) (err error)

RollbackPrepared rolls back the prepared transaction.

func (*SandboxConn) SetResults

func (sbc *SandboxConn) SetResults(r []*sqltypes.Result)

SetResults sets what this con should return next time.

func (*SandboxConn) SetRollback

func (sbc *SandboxConn) SetRollback(ctx context.Context, target *querypb.Target, dtid string, transactionID int64) (err error)

SetRollback transitions the 2pc transaction to the Rollback state. If a transaction id is provided, that transaction is also rolled back.

func (*SandboxConn) StartCommit

func (sbc *SandboxConn) StartCommit(ctx context.Context, target *querypb.Target, transactionID int64, dtid string) (err error)

StartCommit atomically commits the transaction along with the decision to commit the associated 2pc transaction.

func (*SandboxConn) StreamExecute

func (sbc *SandboxConn) StreamExecute(ctx context.Context, target *querypb.Target, query string, bindVars map[string]*querypb.BindVariable, transactionID int64, reservedID int64, options *querypb.ExecuteOptions, callback func(*sqltypes.Result) error) error

StreamExecute is part of the QueryService interface.

func (*SandboxConn) StreamHealth

func (sbc *SandboxConn) StreamHealth(ctx context.Context, callback func(*querypb.StreamHealthResponse) error) error

StreamHealth is not implemented.

func (*SandboxConn) StringQueries

func (sbc *SandboxConn) StringQueries() []string

StringQueries returns the queries executed as a slice of strings

func (*SandboxConn) Tablet

func (sbc *SandboxConn) Tablet() *topodatapb.Tablet

Tablet is part of the QueryService interface.

func (*SandboxConn) VStream

func (sbc *SandboxConn) VStream(ctx context.Context, target *querypb.Target, startPos string, tablePKs []*binlogdatapb.TableLastPK, filter *binlogdatapb.Filter, send func([]*binlogdatapb.VEvent) error) error

VStream is part of the QueryService interface.

func (*SandboxConn) VStreamResults

func (sbc *SandboxConn) VStreamResults(ctx context.Context, target *querypb.Target, query string, send func(*binlogdatapb.VStreamResultsResponse) error) error

VStreamResults is part of the QueryService interface.

func (*SandboxConn) VStreamRows

func (sbc *SandboxConn) VStreamRows(ctx context.Context, target *querypb.Target, query string, lastpk *querypb.QueryResult, send func(*binlogdatapb.VStreamRowsResponse) error) error

VStreamRows is part of the QueryService interface.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL