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



    This section is empty.


    View Source
    var SandboxSQRowCount = int64(10)

      SandboxSQRowCount is the default number of fake splits returned.

      View Source
      var SingleRowResult = &sqltypes.Result{
      	Fields: []*querypb.Field{
      		{"id", sqltypes.Int32},
      		{"value", sqltypes.VarChar},
      	RowsAffected: 1,
      	InsertID:     0,
      	Rows: [][]sqltypes.Value{{
      		sqltypes.MakeTrusted(sqltypes.Int32, []byte("1")),
      		sqltypes.MakeTrusted(sqltypes.VarChar, []byte("foo")),

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


        This section is empty.


        type SandboxConn

        type SandboxConn struct {
        	MustFailRetry  int
        	MustFailFatal  int
        	MustFailServer int
        	MustFailConn   int
        	MustFailTxPool int
        	MustFailNotTx  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
        	// Queries stores the non-batch requests received.
        	Queries []querytypes.BoundQuery
        	// BatchQueries stores the batch requests received
        	// Each batch request is inlined as a slice of Queries.
        	BatchQueries [][]querytypes.BoundQuery
        	// transaction id generator
        	TransactionID sync2.AtomicInt64
        	// contains filtered or unexported fields

          SandboxConn satisfies the TabletConn interface

          func NewSandboxConn

          func NewSandboxConn(t *topodatapb.Tablet) *SandboxConn

            NewSandboxConn returns a new SandboxConn targeted to the provided tablet.

            func (*SandboxConn) Begin

            func (sbc *SandboxConn) Begin(ctx context.Context) (int64, error)

              Begin is part of the TabletConn interface.

              func (*SandboxConn) BeginExecute

              func (sbc *SandboxConn) BeginExecute(ctx context.Context, query string, bindVars map[string]interface{}) (*sqltypes.Result, int64, error)

                BeginExecute is part of the TabletConn interface.

                func (*SandboxConn) BeginExecuteBatch

                func (sbc *SandboxConn) BeginExecuteBatch(ctx context.Context, queries []querytypes.BoundQuery, asTransaction bool) ([]sqltypes.Result, int64, error)

                  BeginExecuteBatch is part of the TabletConn interface.

                  func (*SandboxConn) Close

                  func (sbc *SandboxConn) Close()

                    Close does not change ExecCount

                    func (*SandboxConn) Commit

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

                      Commit is part of the TabletConn interface.

                      func (*SandboxConn) Execute

                      func (sbc *SandboxConn) Execute(ctx context.Context, query string, bindVars map[string]interface{}, transactionID int64) (*sqltypes.Result, error)

                        Execute is part of the TabletConn interface.

                        func (*SandboxConn) ExecuteBatch

                        func (sbc *SandboxConn) ExecuteBatch(ctx context.Context, queries []querytypes.BoundQuery, asTransaction bool, transactionID int64) ([]sqltypes.Result, error)

                          ExecuteBatch is part of the TabletConn interface.

                          func (*SandboxConn) Rollback

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

                            Rollback is part of the TabletConn interface.

                            func (*SandboxConn) SetResults

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

                              SetResults sets what this con should return next time.

                              func (*SandboxConn) SetTarget

                              func (sbc *SandboxConn) SetTarget(keyspace, shard string, tabletType topodatapb.TabletType) error

                                SetTarget is part of the TabletConn interface.

                                func (*SandboxConn) SplitQuery

                                func (sbc *SandboxConn) SplitQuery(ctx context.Context, query querytypes.BoundQuery, splitColumn string, splitCount int64) ([]querytypes.QuerySplit, error)

                                  SplitQuery creates splits from the original query by appending the split index as a comment to the SQL. RowCount is always SandboxSQRowCount

                                  func (*SandboxConn) SplitQueryV2

                                  func (sbc *SandboxConn) SplitQueryV2(
                                  	ctx context.Context,
                                  	query querytypes.BoundQuery,
                                  	splitColumns []string,
                                  	splitCount int64,
                                  	numRowsPerQueryPart int64,
                                  	algorithm querypb.SplitQueryRequest_Algorithm) ([]querytypes.QuerySplit, error)

                                    SplitQueryV2 returns a single QuerySplit whose 'sql' field describes the received arguments. TODO(erez): Rename to SplitQuery after the migration to SplitQuery V2 is done.

                                    func (*SandboxConn) StreamExecute

                                    func (sbc *SandboxConn) StreamExecute(ctx context.Context, query string, bindVars map[string]interface{}) (sqltypes.ResultStream, error)

                                      StreamExecute is part of the TabletConn interface.

                                      func (*SandboxConn) StreamHealth

                                      func (sbc *SandboxConn) StreamHealth(ctx context.Context) (tabletconn.StreamHealthReader, error)

                                        StreamHealth is not implemented.

                                        func (*SandboxConn) Tablet

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

                                          Tablet is part of the TabletConn interface.

                                          Source Files