Documentation ¶
Index ¶
- Variables
- func DebugSchema() map[string]Table
- func DebugVars() map[string]interface{}
- func FetchInt(vars map[string]interface{}, tags string) int
- func FetchVal(vars map[string]interface{}, tags string) interface{}
- func QueryStats() map[string]QueryStat
- func RowsToStrings(qr *mproto.QueryResult) [][]string
- func StartServer(connParams sqldb.ConnParams, schemaOverrides []tabletserver.SchemaOverride) error
- func StopServer()
- func StreamTerminate(connID int) error
- func TableStats() map[string]TableStat
- type MultiCase
- type QueryCatcher
- type QueryClient
- func (client *QueryClient) Begin() error
- func (client *QueryClient) Commit() error
- func (client *QueryClient) Execute(query string, bindvars map[string]interface{}) (*mproto.QueryResult, error)
- func (client *QueryClient) ExecuteBatch(queries []proto.BoundQuery, asTransaction bool) (*proto.QueryResultList, error)
- func (client *QueryClient) Rollback() error
- func (client *QueryClient) Stream(query string, bindvars map[string]interface{}, ...) error
- func (client *QueryClient) StreamExecute(query string, bindvars map[string]interface{}) (*mproto.QueryResult, error)
- type QueryStat
- type StreamQuery
- type Table
- type TableColumn
- type TableStat
- type TestCase
- type TestQuery
- type Testable
- type TxCatcher
Constants ¶
This section is empty.
Variables ¶
var ( // BaseConfig is the base config of the server. BaseConfig tabletserver.Config // Target is the target info for the server. Target query.Target // Server is the TabletServer for the framework. Server *tabletserver.TabletServer // ServerAddress is the http URL for the server. ServerAddress string )
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 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 ¶
func RowsToStrings(qr *mproto.QueryResult) [][]string
RowsToStrings converts qr.Rows to [][]string.
func StartServer ¶
func StartServer(connParams sqldb.ConnParams, schemaOverrides []tabletserver.SchemaOverride) 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.
func TableStats ¶
TableStats parses /debug/table_stats and returns a map of the table stats keyed by the table name.
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.
func (*QueryCatcher) Next ¶
func (qc *QueryCatcher) Next() (*tabletserver.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 (*QueryClient) Commit ¶
func (client *QueryClient) Commit() error
Commit commits the current transaction.
func (*QueryClient) Execute ¶
func (client *QueryClient) Execute(query string, bindvars map[string]interface{}) (*mproto.QueryResult, error)
Execute executes a query.
func (*QueryClient) ExecuteBatch ¶
func (client *QueryClient) ExecuteBatch(queries []proto.BoundQuery, asTransaction bool) (*proto.QueryResultList, error)
ExecuteBatch executes a batch of queries.
func (*QueryClient) Rollback ¶
func (client *QueryClient) Rollback() error
Rollback rolls back the current transaction.
func (*QueryClient) Stream ¶
func (client *QueryClient) Stream(query string, bindvars map[string]interface{}, sendFunc func(*mproto.QueryResult) error) error
Stream streams the resutls of a query.
func (*QueryClient) StreamExecute ¶
func (client *QueryClient) StreamExecute(query string, bindvars map[string]interface{}) (*mproto.QueryResult, error)
StreamExecute executes a query & streams the results.
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 CacheType 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 TableStat ¶
type TableStat struct {
Hits, Absent, Misses, Invalidations int
}
TableStat contains the stats for one table.
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.