framework

package
v0.10.1 Latest Latest
Warning

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

Go to latest
Published: May 4, 2021 License: Apache-2.0 Imports: 28 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// Target is the target info for the server.
	Target querypb.Target
	// Server is the TabletServer for the framework.
	Server *tabletserver.TabletServer
	// ServerAddress is the http URL for the server.
	ServerAddress string
	// ResolveChan is the channel that sends dtids that are to be resolved.
	ResolveChan = make(chan string, 1)
	// TopoServer is the topology for the server
	TopoServer *topo.Server
)

Functions

func DebugSchema

func DebugSchema() map[string]Table

DebugSchema parses /debug/schema and returns a map of the tables keyed by the table name.

func DebugVars

func DebugVars() map[string]interface{}

DebugVars parses /debug/vars and returns a map. The function returns an empty map on error.

func FetchInt

func FetchInt(vars map[string]interface{}, tags string) int

FetchInt fetches the specified slash-separated tag and returns the value as an int. It returns 0 on error, or if not found.

func FetchJSON

func FetchJSON(urlPath string) map[string]interface{}

FetchJSON fetches JSON content from the specified URL path and returns it as a map. The function returns an empty map on error.

func FetchURL

func FetchURL(urlPath string) string

FetchURL fetches the content from the specified URL path and returns it as a string. The function returns an empty string on error.

func FetchVal

func FetchVal(vars map[string]interface{}, tags string) interface{}

FetchVal fetches the specified slash-separated tag and returns the value as an interface. It returns nil on error, or if not found.

func PostJSON added in v0.9.0

func PostJSON(urlPath string, values map[string]string) map[string]interface{}

PostJSON performs a post and fetches JSON content from the specified URL path and returns it as a map. The function returns an empty map on error.

func QueryStats

func QueryStats() map[string]QueryStat

QueryStats parses /debug/query_stats and returns a map of the query stats keyed by the query.

func RowsToStrings

func RowsToStrings(qr *sqltypes.Result) [][]string

RowsToStrings converts qr.Rows to [][]string.

func StartCustomServer added in v0.8.0

func StartCustomServer(connParams, connAppDebugParams mysql.ConnParams, dbName string, config *tabletenv.TabletConfig) error

StartCustomServer starts the server and initializes all the global variables. This function should only be called once at the beginning of the test.

func StartServer

func StartServer(connParams, connAppDebugParams mysql.ConnParams, dbName string) error

StartServer starts the server and initializes all the global variables. This function should only be called once at the beginning of the test.

func StopServer

func StopServer()

StopServer must be called once all the tests are done.

func StreamTerminate

func StreamTerminate(connID int) error

StreamTerminate terminates the specified streaming query.

Types

type LiveQuery added in v0.9.0

type LiveQuery struct {
	Type              string
	Query             string
	ContextHTML       string
	Start             time.Time
	Duration          int64
	ConnID            int
	State             string
	ShowTerminateLink bool
}

LiveQuery contains the streaming query info.

func LiveQueryz added in v0.9.0

func LiveQueryz() []LiveQuery

OLAPQueryz returns the contents of /livequeryz?format=json. as a []LiveQuery. The function returns an empty list on error.

type MultiCase

type MultiCase struct {
	Name  string
	Cases []Testable
}

MultiCase groups a number of test cases under a name. A MultiCase is also Testable. So, it can be recursive.

func (*MultiCase) Benchmark added in v0.10.0

func (mc *MultiCase) Benchmark(client *QueryClient) error

Benchmark executes the test cases in MultiCase and discards the results without validating them.

func (*MultiCase) Test

func (mc *MultiCase) Test(name string, client *QueryClient) error

Test executes the test cases in MultiCase. The test is interrupted if there is a failure. The name parameter is used if MultiCase doesn't have a Name.

type QueryCatcher

type QueryCatcher struct {
	// contains filtered or unexported fields
}

QueryCatcher allows you to capture and fetch queries that are being executed by TabletServer.

func NewQueryCatcher

func NewQueryCatcher() QueryCatcher

NewQueryCatcher sets up the capture and returns a QueryCatcher. You must call Close when done.

func (*QueryCatcher) Close

func (qc *QueryCatcher) Close()

Close closes the QueryCatcher.

func (*QueryCatcher) Next

func (qc *QueryCatcher) Next() (*tabletenv.LogStats, error)

Next fetches the next captured query. If the wait is longer than one second, it returns an error.

type QueryClient

type QueryClient struct {
	// contains filtered or unexported fields
}

QueryClient provides a convenient wrapper for TabletServer's query service. It's not thread safe, but you can create multiple clients that point to the same server.

func NewClient

func NewClient() *QueryClient

NewClient creates a new client for Server.

func NewClientWithContext

func NewClientWithContext(ctx context.Context) *QueryClient

NewClientWithContext creates a new client for Server with the provided context.

func NewClientWithTabletType

func NewClientWithTabletType(tabletType topodatapb.TabletType) *QueryClient

NewClientWithTabletType creates a new client for Server with the provided tablet type.

func (*QueryClient) Begin

func (client *QueryClient) Begin(clientFoundRows bool) error

Begin begins a transaction.

func (*QueryClient) BeginExecute

func (client *QueryClient) BeginExecute(query string, bindvars map[string]*querypb.BindVariable, preQueries []string) (*sqltypes.Result, error)

BeginExecute performs a BeginExecute.

func (*QueryClient) BeginExecuteBatch

func (client *QueryClient) BeginExecuteBatch(queries []*querypb.BoundQuery, asTransaction bool) ([]sqltypes.Result, error)

BeginExecuteBatch performs a BeginExecuteBatch.

func (*QueryClient) Commit

func (client *QueryClient) Commit() error

Commit commits the current transaction.

func (*QueryClient) CommitPrepared

func (client *QueryClient) CommitPrepared(dtid string) error

CommitPrepared commits a prepared transaction.

func (*QueryClient) ConcludeTransaction

func (client *QueryClient) ConcludeTransaction(dtid string) error

ConcludeTransaction issues a ConcludeTransaction to TabletServer.

func (*QueryClient) CreateTransaction

func (client *QueryClient) CreateTransaction(dtid string, participants []*querypb.Target) error

CreateTransaction issues a CreateTransaction to TabletServer.

func (*QueryClient) Execute

func (client *QueryClient) Execute(query string, bindvars map[string]*querypb.BindVariable) (*sqltypes.Result, error)

Execute executes a query.

func (*QueryClient) ExecuteBatch

func (client *QueryClient) ExecuteBatch(queries []*querypb.BoundQuery, asTransaction bool) ([]sqltypes.Result, error)

ExecuteBatch executes a batch of queries.

func (*QueryClient) ExecuteWithOptions

func (client *QueryClient) ExecuteWithOptions(query string, bindvars map[string]*querypb.BindVariable, options *querypb.ExecuteOptions) (*sqltypes.Result, error)

ExecuteWithOptions executes a query using 'options'.

func (*QueryClient) MessageAck

func (client *QueryClient) MessageAck(name string, ids []string) (int64, error)

MessageAck acks messages

func (*QueryClient) MessageStream

func (client *QueryClient) MessageStream(name string, callback func(*sqltypes.Result) error) (err error)

MessageStream streams messages from the message table.

func (*QueryClient) Prepare

func (client *QueryClient) Prepare(dtid string) error

Prepare executes a prepare on the current transaction.

func (*QueryClient) ReadTransaction

func (client *QueryClient) ReadTransaction(dtid string) (*querypb.TransactionMetadata, error)

ReadTransaction returns the transaction metadata.

func (*QueryClient) Release

func (client *QueryClient) Release() error

Release performs a Release.

func (*QueryClient) ReserveBeginExecute

func (client *QueryClient) ReserveBeginExecute(query string, preQueries []string, bindvars map[string]*querypb.BindVariable) (*sqltypes.Result, error)

ReserveBeginExecute performs a ReserveBeginExecute.

func (*QueryClient) ReserveExecute

func (client *QueryClient) ReserveExecute(query string, preQueries []string, bindvars map[string]*querypb.BindVariable) (*sqltypes.Result, error)

ReserveExecute performs a ReserveExecute.

func (*QueryClient) ReservedID

func (client *QueryClient) ReservedID() int64

ReservedID returns reservedID

func (*QueryClient) Rollback

func (client *QueryClient) Rollback() error

Rollback rolls back the current transaction.

func (*QueryClient) RollbackPrepared

func (client *QueryClient) RollbackPrepared(dtid string, originalID int64) error

RollbackPrepared rollsback a prepared transaction.

func (*QueryClient) SetReservedID

func (client *QueryClient) SetReservedID(id int64)

SetReservedID does what it says

func (*QueryClient) SetRollback

func (client *QueryClient) SetRollback(dtid string, transactionID int64) error

SetRollback issues a SetRollback to TabletServer.

func (*QueryClient) SetServingType

func (client *QueryClient) SetServingType(tabletType topodatapb.TabletType) error

SetServingType is for testing transitions. It currently supports only master->replica and back.

func (*QueryClient) SetTransactionID

func (client *QueryClient) SetTransactionID(id int64)

SetTransactionID does what it says

func (*QueryClient) StartCommit

func (client *QueryClient) StartCommit(dtid string) error

StartCommit issues a StartCommit to TabletServer for the current transaction.

func (*QueryClient) Stream

func (client *QueryClient) Stream(query string, bindvars map[string]*querypb.BindVariable, sendFunc func(*sqltypes.Result) error) error

Stream streams the results of a query.

func (*QueryClient) StreamExecute

func (client *QueryClient) StreamExecute(query string, bindvars map[string]*querypb.BindVariable) (*sqltypes.Result, error)

StreamExecute executes a query & returns the results.

func (*QueryClient) StreamExecuteWithOptions

func (client *QueryClient) StreamExecuteWithOptions(query string, bindvars map[string]*querypb.BindVariable, options *querypb.ExecuteOptions) (*sqltypes.Result, error)

StreamExecuteWithOptions executes a query & returns the results using 'options'.

func (*QueryClient) TransactionID

func (client *QueryClient) TransactionID() int64

TransactionID returns transactionID

type QueryStat

type QueryStat struct {
	Query, Table, Plan                                                  string
	QueryCount, Time, MysqlTime, RowsAffected, RowsReturned, ErrorCount int
}

QueryStat contains the stats for one query.

type Table

type Table struct {
	Name    string
	Columns []TableColumn
	Type    int
}

Table is a subset of schema.Table. TODO(sougou): I'm getting a json parsing error on the 'Default' field of schema.TabletColumn. Otherwise, we should just be able to decode the json output into a schema.Table.

type TableColumn

type TableColumn struct {
	Name     string
	Category int
	IsAuto   bool
}

TableColumn contains info about a table's column.

type TestCase

type TestCase struct {
	// Name gives a name to the test case. It will be used
	// for reporting failures.
	Name string

	// Query and BindVars are the input.
	Query    string
	BindVars map[string]*querypb.BindVariable

	// Result is the list of rows that must be returned.
	// It's represented as 2-d strings. They byte values
	// will be compared against The bytes returned by the
	// query. The check is skipped if Result is nil.
	Result [][]string

	// RowsAffected affected can be nil or an int.
	RowsAffected interface{}

	// 	RowsReturned affected can be nil or an int.
	RowsReturned interface{}

	// Rewritten specifies how the query should have be rewritten.
	Rewritten []string

	// Plan specifies the plan type that was used. It will be matched
	// against tabletserver.PlanType(val).String().
	Plan string

	// If Table is specified, then the framework will validate the
	// cache stats for that table. If the stat values are nil, then
	// the check is skipped.
	Table         string
	Hits          interface{}
	Misses        interface{}
	Absent        interface{}
	Invalidations interface{}
}

TestCase represents one test case. It will execute the query and verify its results and effects against what must be expected. Expected fields are optional.

func (*TestCase) Benchmark added in v0.10.0

func (tc *TestCase) Benchmark(client *QueryClient) error

Benchmark executes the test case and discards the results without verifying them

func (*TestCase) Test

func (tc *TestCase) Test(name string, client *QueryClient) error

Test executes the test case and returns an error if it failed. The name parameter is used if the test case doesn't have a name.

type TestQuery

type TestQuery string

TestQuery represents a plain query. It will be executed without a bind variable. The framework will check for errors, but nothing beyond. Statements like 'begin', etc. will be converted to the corresponding transaction commands.

func (TestQuery) Benchmark added in v0.10.0

func (tq TestQuery) Benchmark(client *QueryClient) error

Benchmark executes the query and discards the results

func (TestQuery) Test

func (tq TestQuery) Test(name string, client *QueryClient) error

Test executes the query and returns an error if it failed.

type Testable

type Testable interface {
	Test(name string, client *QueryClient) error
	Benchmark(client *QueryClient) error
}

Testable restricts the types that can be added to a test case.

type TxCatcher

type TxCatcher struct {
	// contains filtered or unexported fields
}

TxCatcher allows you to capture and fetch transactions that are being executed by TabletServer.

func NewTxCatcher

func NewTxCatcher() TxCatcher

NewTxCatcher sets up the capture and returns a new TxCatcher. You must call Close when done.

func (*TxCatcher) Close

func (tc *TxCatcher) Close()

Close closes the TxCatcher.

func (*TxCatcher) Next

Next fetches the next captured transaction. If the wait is longer than one second, it returns an error.

Jump to

Keyboard shortcuts

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