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 sqldb.ConnParams) error
- func StopServer()
- func StreamTerminate(connID int) error
- type MultiCase
- type QueryCatcher
- type QueryClient
- func (client *QueryClient) Begin() 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]interface{}) (*sqltypes.Result, error)
- func (client *QueryClient) ExecuteBatch(queries []querytypes.BoundQuery, asTransaction bool) ([]sqltypes.Result, error)
- func (client *QueryClient) ExecuteWithOptions(query string, bindvars map[string]interface{}, options *querypb.ExecuteOptions) (*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]interface{}, ...) error
- func (client *QueryClient) StreamExecute(query string, bindvars map[string]interface{}) (*sqltypes.Result, error)
- func (client *QueryClient) StreamExecuteWithOptions(query string, bindvars map[string]interface{}, options *querypb.ExecuteOptions) (*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 sqldb.ConnParams) 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 (*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]interface{}) (*sqltypes.Result, error)
Execute executes a query.
func (*QueryClient) ExecuteBatch ¶
func (client *QueryClient) ExecuteBatch(queries []querytypes.BoundQuery, asTransaction bool) ([]sqltypes.Result, error)
ExecuteBatch executes a batch of queries.
func (*QueryClient) ExecuteWithOptions ¶
func (client *QueryClient) ExecuteWithOptions(query string, bindvars map[string]interface{}, 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]interface{}, 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]interface{}) (*sqltypes.Result, error)
StreamExecute executes a query & returns the results.
func (*QueryClient) StreamExecuteWithOptions ¶
func (client *QueryClient) StreamExecuteWithOptions(query string, bindvars map[string]interface{}, 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]interface{} // 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.