xk6_mongo

package module
v0.0.0-...-2192b07 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 12, 2024 License: Apache-2.0 Imports: 7 Imported by: 0

README

MongoDB k6 extension

K6 extension to perform tests on mongo.

Currently Supported Commands

  • Supports inserting a document.
  • Supports inserting document batch.
  • Supports find a document based on filter.
  • Supports find all documents of a collection.
  • Supports upserting a document based on filter.
  • Supports bulk upserting documents based on filters.
  • Supports aggregation pipelines.
  • Supports finding distinct values for a field in a collection based on a filter.
  • Supports delete first document based on filter.
  • Supports deleting all documents for a specific filter.
  • Supports dropping a collection.

xk6-mongo

A k6 extension for interacting with mongoDb while testing.

Build

To build a custom k6 binary with this extension, first ensure you have the prerequisites:

  1. Download xk6:

    go install go.k6.io/xk6/cmd/xk6@latest
    
  2. Build the k6 binary:

    xk6 build --with  github.com/GabrielCalin/xk6-mongo
    

    This will create a k6 binary that includes the xk6-mongo extension in your local folder. This k6 binary can now run a k6 test.

Development

To make development a little smoother, use the Makefile in the root folder. The default target will format your code, run tests, and create a k6 binary with your local code rather than from GitHub.

git clone git@github.com/GabrielCalin/xk6-mongo.git
cd xk6-mongo
make build

Using the k6 binary with xk6-mongo, run the k6 test as usual:

./k6 run test.js

Examples:

Document Insertion Test
import xk6_mongo from 'k6/x/mongo';


const client = xk6_mongo.newClient('mongodb://localhost:27017');
export default ()=> {

    let doc = {
        correlationId: `test--mongodb`,
        title: 'Perf test experiment',
        url: 'example.com',
        locale: 'en',
        time: `${new Date(Date.now()).toISOString()}`
    };

    client.insert("testdb", "testcollection", doc);
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client is the Mongo client wrapper.

func (*Client) Aggregate

func (c *Client) Aggregate(database string, collection string, pipeline interface{}) []bson.M

func (*Client) BulkUpsert

func (c *Client) BulkUpsert(database string, collection string, upserts []UpsertOneModel) error

func (*Client) DeleteMany

func (c *Client) DeleteMany(database string, collection string, filter map[string]string) error

func (*Client) DeleteOne

func (c *Client) DeleteOne(database string, collection string, filter map[string]string) error

func (*Client) Disconnect

func (c *Client) Disconnect()

func (*Client) Distinct

func (c *Client) Distinct(database string, collection string, field string, filter interface{}) []interface{}

func (*Client) DropCollection

func (c *Client) DropCollection(database string, collection string) error

func (*Client) Find

func (c *Client) Find(database string, collection string, filter interface{}, sort interface{}, limit int64) []bson.M

func (*Client) FindAll

func (c *Client) FindAll(database string, collection string) []bson.M

func (*Client) FindOne

func (c *Client) FindOne(database string, collection string, filter map[string]string) error

func (*Client) Insert

func (c *Client) Insert(database string, collection string, doc interface{}) error

func (*Client) InsertMany

func (c *Client) InsertMany(database string, collection string, docs []any) error

func (*Client) UpdateOne

func (c *Client) UpdateOne(database string, collection string, filter interface{}, data map[string]string) error

func (*Client) Upsert

func (c *Client) Upsert(database string, collection string, filter interface{}, upsert interface{}) error

type Mongo

type Mongo struct{}

Mongo is the k6 extension for a Mongo client.

func (*Mongo) NewClient

func (*Mongo) NewClient(connURI string) interface{}

NewClient represents the Client constructor (i.e. `new mongo.Client()`) and returns a new Mongo client object. connURI -> mongodb://username:password@address:port/db?connect=direct

type UpsertOneModel

type UpsertOneModel struct {
	Query  interface{} `json:"query"`
	Update interface{} `json:"update"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL