Documentation
¶
Index ¶
- Constants
- Variables
- func CreateCommandErrorResponse(ce CommandError) bson.D
- func CreateCursorResponse(cursorID int64, ns string, identifier BatchIdentifier, batch ...bson.D) bson.D
- func CreateSuccessResponse(elems ...bson.E) bson.D
- func CreateWriteConcernErrorResponse(wce WriteConcernError) bson.D
- func CreateWriteErrorsResponse(writeErrorrs ...WriteError) bson.D
- func Setup() error
- func Teardown() error
- type BatchIdentifier
- type ClientType
- type Collection
- type CommandError
- type FailPoint
- type FailPointData
- type FailPointMode
- type Options
- func (op *Options) Auth(auth bool) *Options
- func (op *Options) ClientOptions(opts *options.ClientOptions) *Options
- func (op *Options) ClientType(ct ClientType) *Options
- func (op *Options) CollectionCreateOptions(opts bson.D) *Options
- func (op *Options) CollectionName(collName string) *Options
- func (op *Options) CollectionOptions(opts *options.CollectionOptions) *Options
- func (op *Options) CreateClient(create bool) *Options
- func (op *Options) DatabaseName(dbName string) *Options
- func (op *Options) Enterprise(ent bool) *Options
- func (op *Options) MaxServerVersion(version string) *Options
- func (op *Options) MinServerVersion(version string) *Options
- func (op *Options) MockResponses(responses ...bson.D) *Options
- func (op *Options) RunOn(blocks ...RunOnBlock) *Options
- func (op *Options) ShareClient(share bool) *Options
- func (op *Options) Topologies(topos ...TopologyKind) *Options
- type RunOnBlock
- type T
- func (t *T) AddMockResponses(responses ...bson.D)
- func (t *T) AuthEnabled() bool
- func (t *T) ClearCollections()
- func (t *T) ClearEvents()
- func (t *T) ClearFailPoints()
- func (t *T) ClearMockResponses()
- func (t *T) CloneCollection(opts *options.CollectionOptions)
- func (t *T) CloneDatabase(opts *options.DatabaseOptions)
- func (t *T) Close()
- func (t *T) ConnString() string
- func (t *T) CreateCollection(coll Collection, createOnServer bool) *mongo.Collection
- func (t *T) FilterFailedEvents(filter func(*event.CommandFailedEvent) bool)
- func (t *T) FilterStartedEvents(filter func(*event.CommandStartedEvent) bool)
- func (t *T) FilterSucceededEvents(filter func(*event.CommandSucceededEvent) bool)
- func (t *T) GetAllFailedEvents() []*event.CommandFailedEvent
- func (t *T) GetAllStartedEvents() []*event.CommandStartedEvent
- func (t *T) GetAllSucceededEvents() []*event.CommandSucceededEvent
- func (t *T) GetFailedEvent() *event.CommandFailedEvent
- func (t *T) GetStartedEvent() *event.CommandStartedEvent
- func (t *T) GetSucceededEvent() *event.CommandSucceededEvent
- func (T) GlobalClient() *mongo.Client
- func (t *T) ResetClient(opts *options.ClientOptions)
- func (t *T) Run(name string, callback func(*T))
- func (t *T) RunOpts(name string, opts *Options, callback func(*T))
- func (t *T) SetFailPoint(fp FailPoint)
- func (t *T) TopologyKind() TopologyKind
- func (t *T) TrackFailPoint(fpName string)
- type TopologyKind
- type WriteConcernError
- type WriteConcernErrorData
- type WriteError
Constants ¶
const ( ReplicaSet TopologyKind = "replicaset" Sharded = "sharded" Single = "single" )
These constants specify valid values for TopologyKind
const (
// TestDb specifies the name of default test database.
TestDb = "test"
)
Variables ¶
var ( // Background is a no-op context. Background = context.Background() // MajorityWc is the majority write concern. MajorityWc = writeconcern.New(writeconcern.WMajority()) // PrimaryRp is the primary read preference. PrimaryRp = readpref.Primary() // LocalRc is the local read concern LocalRc = readconcern.Local() // MajorityRc is the majority read concern MajorityRc = readconcern.Majority() )
Functions ¶
func CreateCommandErrorResponse ¶
func CreateCommandErrorResponse(ce CommandError) bson.D
CreateCommandErrorResponse creates a response with a command error.
func CreateCursorResponse ¶
func CreateCursorResponse(cursorID int64, ns string, identifier BatchIdentifier, batch ...bson.D) bson.D
CreateCursorResponse creates a response for a cursor command.
func CreateSuccessResponse ¶
CreateSuccessResponse creates a response for a successful operation with the given elements.
func CreateWriteConcernErrorResponse ¶
func CreateWriteConcernErrorResponse(wce WriteConcernError) bson.D
CreateWriteConcernErrorResponse creates a response with a write concern error.
func CreateWriteErrorsResponse ¶
func CreateWriteErrorsResponse(writeErrorrs ...WriteError) bson.D
CreateWriteErrorsResponse creates a response with one or more write errors.
Types ¶
type BatchIdentifier ¶
type BatchIdentifier string
BatchIdentifier specifies the keyword to identify the batch in a cursor response.
const ( FirstBatch BatchIdentifier = "firstBatch" NextBatch BatchIdentifier = "nextBatch" )
These constants specify valid values for BatchIdentifier.
type ClientType ¶
type ClientType int
ClientType specifies the type of Client that should be created for a test.
const ( // Default specifies a client to the connection string in the MONGODB_URI env variable with command monitoring // enabled. Default ClientType = iota // Pinned specifies a client that is pinned to a single mongos in a sharded cluster. Pinned // Mock specifies a client that communicates with a mock deployment. Mock )
These constants specify valid values for ClientType
type Collection ¶
type Collection struct { Name string DB string // defaults to mt.DB.Name() if not specified Client *mongo.Client // defaults to mt.Client if not specified Opts *options.CollectionOptions CreateOpts bson.D }
Collection is used to configure a new collection created during a test.
type CommandError ¶
CommandError is a representation of a command error from the server.
type FailPoint ¶
type FailPoint struct { ConfigureFailPoint string `bson:"configureFailPoint"` // Mode should be a string, FailPointMode, or map[string]interface{} Mode interface{} `bson:"mode"` Data FailPointData `bson:"data"` }
FailPoint is a representation of a server fail point. See https://github.com/mongodb/specifications/tree/master/source/transactions/tests#server-fail-point for more information regarding fail points.
type FailPointData ¶
type FailPointData struct { FailCommands []string `bson:"failCommands,omitempty"` CloseConnection bool `bson:"closeConnection,omitempty"` ErrorCode int32 `bson:"errorCode,omitempty"` FailBeforeCommitExceptionCode int32 `bson:"failBeforeCommitExceptionCode,omitempty"` ErrorLabels *[]string `bson:"errorLabels,omitempty"` WriteConcernError *WriteConcernErrorData `bson:"writeConcernError,omitempty"` }
FailPointData is a representation of the FailPoint.Data field.
type FailPointMode ¶
FailPointMode is a representation of the Failpoint.Mode field.
type Options ¶
type Options struct {
// contains filtered or unexported fields
}
Options is the type used to configure a new T instance.
func (*Options) Auth ¶
Auth specifies whether or not auth should be enabled for this test to run. By default, a test will run regardless of whether or not auth is enabled.
func (*Options) ClientOptions ¶
func (op *Options) ClientOptions(opts *options.ClientOptions) *Options
ClientOptions sets the options to use when creating a client for a test.
func (*Options) ClientType ¶
func (op *Options) ClientType(ct ClientType) *Options
ClientType specifies the type of client that should be created for a test. This option will be propagated to all sub-tests.
func (*Options) CollectionCreateOptions ¶
CollectionCreateOptions sets the options to pass to the create command when creating a collection for a test. For example, if opts = {"capped": "true"}, the create command sent to the server will be {create: <collectionName>, foo: bar}.
func (*Options) CollectionName ¶
CollectionName specifies the name for the collection for the test.
func (*Options) CollectionOptions ¶
func (op *Options) CollectionOptions(opts *options.CollectionOptions) *Options
CollectionOptions sets the options to use when creating a collection for a test.
func (*Options) CreateClient ¶
CreateClient specifies whether or not a client and collection should be created for a test. This should be set to false when running a test that only runs other tests.
func (*Options) DatabaseName ¶
DatabaseName specifies the name of the database for the test.
func (*Options) Enterprise ¶
Enterprise specifies whether or not this test should only be run on enterprise server variants. Defaults to false.
func (*Options) MaxServerVersion ¶
MaxServerVersion specifies the maximum server version for the test.
func (*Options) MinServerVersion ¶
MinServerVersion specifies the minimum server version for the test.
func (*Options) MockResponses ¶
MockResponses specifies the responses returned by a mock deployment. This should only be used if the current test is being run with MockDeployment(true). Responses can also be added after a sub-test has already been created.
func (*Options) RunOn ¶
func (op *Options) RunOn(blocks ...RunOnBlock) *Options
RunOn specifies run-on blocks used to determine if a test should run. If a test's environment meets at least one of the given constraints, it will be run. Otherwise, it will be skipped.
func (*Options) ShareClient ¶
ShareClient specifies whether or not a test should pass its client down to sub-tests. This should be set when calling New() if the inheriting behavior is desired. This option must not be used if the test accesses command monitoring events.
func (*Options) Topologies ¶
func (op *Options) Topologies(topos ...TopologyKind) *Options
Topologies specifies a list of topologies that the test can run on.
type RunOnBlock ¶
type RunOnBlock struct { MinServerVersion string `bson:"minServerVersion"` MaxServerVersion string `bson:"maxServerVersion"` Topology []TopologyKind `bson:"topology"` }
RunOnBlock describes a constraint for a test.
type T ¶
type T struct { *testing.T Client *mongo.Client DB *mongo.Database Coll *mongo.Collection // contains filtered or unexported fields }
T is a wrapper around testing.T.
func New ¶
New creates a new T instance with the given options. If the current environment does not satisfy constraints specified in the options, the test will be skipped automatically.
func (*T) AddMockResponses ¶
AddMockResponses adds responses to be returned by the mock deployment. This should only be used if T is being run against a mock deployment.
func (*T) AuthEnabled ¶
AuthEnabled returns whether or not this test is running in an environment with auth.
func (*T) ClearCollections ¶
func (t *T) ClearCollections()
ClearCollections drops all collections previously created by this test.
func (*T) ClearEvents ¶
func (t *T) ClearEvents()
ClearEvents clears the existing command monitoring events.
func (*T) ClearFailPoints ¶
func (t *T) ClearFailPoints()
ClearFailPoints disables all previously set failpoints for this test.
func (*T) ClearMockResponses ¶
func (t *T) ClearMockResponses()
ClearMockResponses clears all responses in the mock deployment.
func (*T) CloneCollection ¶
func (t *T) CloneCollection(opts *options.CollectionOptions)
CloneCollection modifies the default collection for this test to match the given options.
func (*T) CloneDatabase ¶
func (t *T) CloneDatabase(opts *options.DatabaseOptions)
CloneDatabase modifies the default database for this test to match the given options.
func (*T) Close ¶
func (t *T) Close()
Close cleans up any resources associated with a T. There should be one Close corresponding to every New.
func (*T) ConnString ¶
ConnString returns the connection string used to create the client for this test.
func (*T) CreateCollection ¶
func (t *T) CreateCollection(coll Collection, createOnServer bool) *mongo.Collection
CreateCollection creates a new collection with the given configuration. The collection will be dropped after the test finishes running. If createOnServer is true, the function ensures that the collection has been created server-side by running the create command. The create command will appear in command monitoring channels.
func (*T) FilterFailedEvents ¶ added in v1.3.2
func (t *T) FilterFailedEvents(filter func(*event.CommandFailedEvent) bool)
FilterFailedEvents filters the existing CommandFailedEVent instances for this test using the provided filter callback. An event will be retained if the filter returns true. The list of filtered events will be used to overwrite the list of events for this test and will therefore change the output of t.GetAllFailedEvents().
func (*T) FilterStartedEvents ¶ added in v1.3.2
func (t *T) FilterStartedEvents(filter func(*event.CommandStartedEvent) bool)
FilterStartedEvents filters the existing CommandStartedEvent instances for this test using the provided filter callback. An event will be retained if the filter returns true. The list of filtered events will be used to overwrite the list of events for this test and will therefore change the output of t.GetAllStartedEvents().
func (*T) FilterSucceededEvents ¶ added in v1.3.2
func (t *T) FilterSucceededEvents(filter func(*event.CommandSucceededEvent) bool)
FilterSucceededEvents filters the existing CommandSucceededEvent instances for this test using the provided filter callback. An event will be retained if the filter returns true. The list of filtered events will be used to overwrite the list of events for this test and will therefore change the output of t.GetAllSucceededEvents().
func (*T) GetAllFailedEvents ¶
func (t *T) GetAllFailedEvents() []*event.CommandFailedEvent
GetAllFailedEvents returns a slice of all CommandFailedEvent instances for this test. This can be called multiple times.
func (*T) GetAllStartedEvents ¶
func (t *T) GetAllStartedEvents() []*event.CommandStartedEvent
GetAllStartedEvents returns a slice of all CommandStartedEvent instances for this test. This can be called multiple times.
func (*T) GetAllSucceededEvents ¶
func (t *T) GetAllSucceededEvents() []*event.CommandSucceededEvent
GetAllSucceededEvents returns a slice of all CommandSucceededEvent instances for this test. This can be called multiple times.
func (*T) GetFailedEvent ¶
func (t *T) GetFailedEvent() *event.CommandFailedEvent
GetFailedEvent returns the most recent CommandFailedEvent, or nil if one is not present. This can only be called once per event.
func (*T) GetStartedEvent ¶
func (t *T) GetStartedEvent() *event.CommandStartedEvent
GetStartedEvent returns the most recent CommandStartedEvent, or nil if one is not present. This can only be called once per event.
func (*T) GetSucceededEvent ¶
func (t *T) GetSucceededEvent() *event.CommandSucceededEvent
GetSucceededEvent returns the most recent CommandSucceededEvent, or nil if one is not present. This can only be called once per event.
func (T) GlobalClient ¶
GlobalClient returns a client configured with read concern majority, write concern majority, and read preference primary. The returned client is not tied to the receiver and is valid outside the lifetime of the receiver.
func (*T) ResetClient ¶
func (t *T) ResetClient(opts *options.ClientOptions)
ResetClient resets the existing client with the given options. If opts is nil, the existing options will be used. If t.Coll is not-nil, it will be reset to use the new client. Should only be called if the existing client is not nil. This will Disconnect the existing client but will not drop existing collections. To do so, ClearCollections must be called before calling ResetClient.
func (*T) Run ¶
Run creates a new T instance for a sub-test and runs the given callback. It also creates a new collection using the given name which is available to the callback through the T.Coll variable and is dropped after the callback returns.
func (*T) RunOpts ¶
RunOpts creates a new T instance for a sub-test with the given options. If the current environment does not satisfy constraints specified in the options, the new sub-test will be skipped automatically. If the test is not skipped, the callback will be run with the new T instance. RunOpts creates a new collection with the given name which is available to the callback through the T.Coll variable and is dropped after the callback returns.
func (*T) SetFailPoint ¶
SetFailPoint sets a fail point for the client associated with T. Commands to create the failpoint will appear in command monitoring channels. The fail point will automatically be disabled after this test has run.
func (*T) TopologyKind ¶
func (t *T) TopologyKind() TopologyKind
TopologyKind returns the topology kind of the environment
func (*T) TrackFailPoint ¶
TrackFailPoint adds the given fail point to the list of fail points to be disabled when the current test finishes. This function does not create a fail point on the server.
type TopologyKind ¶
type TopologyKind string
TopologyKind describes the topology that a test is run on.
type WriteConcernError ¶
type WriteConcernError struct { Name string `bson:"codeName"` Code int `bson:"code"` Message string `bson:"errmsg"` Details bson.Raw `bson:"errInfo"` }
WriteConcernError is a representation of a write concern error from the server.
type WriteConcernErrorData ¶ added in v1.3.2
type WriteConcernErrorData struct { Code int32 `bson:"code"` Name string `bson:"codeName"` Errmsg string `bson:"errmsg"` ErrorLabels *[]string `bson:"errorLabels,omitempty"` }
WriteConcernErrorData is a representation of the FailPoint.Data.WriteConcern field.
type WriteError ¶
WriteError is a representation of a write error from the server.