Documentation ¶
Index ¶
- Variables
- func DebugSchema() map[string]Table
- func DebugVars() map[string]interface{}
- func FetchInt(vars map[string]interface{}, tags string) int
- func FetchJSON(urlPath string) map[string]interface{}
- func FetchURL(urlPath string) string
- func FetchVal(vars map[string]interface{}, tags string) interface{}
- func QueryStats() map[string]QueryStat
- func RowsToStrings(qr *sqltypes.Result) [][]string
- func StartServer(connParams, connAppDebugParams mysql.ConnParams, dbName string) error
- func StopServer()
- func StreamTerminate(connID int) error
- type MultiCase
- type QueryCatcher
- type QueryClient
- func (client *QueryClient) Begin(clientFoundRows bool) error
- func (client *QueryClient) BeginExecute(query string, bindvars map[string]*querypb.BindVariable) (*sqltypes.Result, error)
- func (client *QueryClient) Commit() error
- func (client *QueryClient) CommitPrepared(dtid string) error
- func (client *QueryClient) ConcludeTransaction(dtid string) error
- func (client *QueryClient) CreateTransaction(dtid string, participants []*querypb.Target) error
- func (client *QueryClient) Execute(query string, bindvars map[string]*querypb.BindVariable) (*sqltypes.Result, error)
- func (client *QueryClient) ExecuteBatch(queries []*querypb.BoundQuery, asTransaction bool) ([]sqltypes.Result, error)
- func (client *QueryClient) ExecuteWithOptions(query string, bindvars map[string]*querypb.BindVariable, ...) (*sqltypes.Result, error)
- func (client *QueryClient) MessageAck(name string, ids []string) (int64, error)
- func (client *QueryClient) MessageStream(name string, callback func(*sqltypes.Result) error) (err error)
- func (client *QueryClient) Prepare(dtid string) error
- func (client *QueryClient) ReadTransaction(dtid string) (*querypb.TransactionMetadata, error)
- func (client *QueryClient) Rollback() error
- func (client *QueryClient) RollbackPrepared(dtid string, originalID int64) error
- func (client *QueryClient) SetRollback(dtid string, transactionID int64) error
- func (client *QueryClient) SetServingType(tabletType topodatapb.TabletType) error
- func (client *QueryClient) StartCommit(dtid string) error
- func (client *QueryClient) Stream(query string, bindvars map[string]*querypb.BindVariable, ...) error
- func (client *QueryClient) StreamExecute(query string, bindvars map[string]*querypb.BindVariable) (*sqltypes.Result, error)
- func (client *QueryClient) StreamExecuteWithOptions(query string, bindvars map[string]*querypb.BindVariable, ...) (*sqltypes.Result, error)
- type QueryStat
- type StreamQuery
- type Table
- type TableColumn
- type TestCase
- type TestQuery
- type Testable
- type TxCatcher
Constants ¶
This section is empty.
Variables ¶
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) )
Functions ¶
func DebugSchema ¶
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 ¶
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 ¶
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 ¶
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 ¶
FetchVal fetches the specified slash-separated tag and returns the value as an interface. It returns nil on error, or if not found.
func QueryStats ¶
QueryStats parses /debug/query_stats and returns a map of the query stats keyed by the query.
func RowsToStrings ¶
RowsToStrings converts qr.Rows to [][]string.
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 StreamTerminate ¶
StreamTerminate terminates the specified streaming query.
Types ¶
type MultiCase ¶
MultiCase groups a number of test cases under a name. A MultiCase is also Testable. So, it can be recursive.
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 retuns a QueryCatcher. You must call Close when done.
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 NewClientWithContext ¶
func NewClientWithContext(ctx context.Context) *QueryClient
NewClientWithContext creates a new client for Server with the provided context.
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) (*sqltypes.Result, error)
BeginExecute performs a BeginExecute.
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) 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) 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) 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'.
type QueryStat ¶
type QueryStat struct {
Query, Table, Plan string
QueryCount, Time, MysqlTime, RowCount, ErrorCount int
}
QueryStat contains the stats for one query.
type StreamQuery ¶
type StreamQuery struct { Query string ContextHTML string Start time.Time Duration int64 ConnID int State string ShowTerminateLink bool }
StreamQuery contains the streaming query info.
func StreamQueryz ¶
func StreamQueryz() []StreamQuery
StreamQueryz returns the contents of /streamqueryz?format=json. as a []StreamQuery. The function returns an empty list on error.
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 ¶
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 // Rows affected can be nil or an int. RowsAffected 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.
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.
type Testable ¶
type Testable interface {
Test(name string, 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) Next ¶
func (tc *TxCatcher) Next() (*tabletserver.TxConnection, error)
Next fetches the next captured transaction. If the wait is longer than one second, it returns an error.