Public | Automated Build

Last pushed: a year ago
Short Description
Deprecated. Use the "emcmongoose/mongoose" repo instead this.
Full Description




Mongoose is a storage performance testing tool.

It is designed to be used for:

Mongoose is able to sustain millions of concurrent connections and
millions of operations per second.

Basically, Mongoose may be started very simply:

java -jar mongoose.jar


Core Functionality

  1. Configuration

    Mongoose has rich configuration subsystem supporting the

  2. Items

    Item is the unit of the load progress and metrics accounting. An item may be a file,
    cloud storage data object, some kind of token or something else. The
    data items describe the data to use to perform a load
    operation (some fixed or random size, content source, etc).

    Mongoose may persist the items used in a run/job info to a specified
    output which later may be used as
    items input for another run/job.

  3. Content

    Different data may be used to perform a load on a storage. By default Mongoose uses random,
    uncompressible data. An user may supply
    custom data input file instead.

  4. Concurrency

    In contradiction to all other comparable performance testing software, Mongoose doesn't use the
    threads to set up a specified concurrency level. This allows to use
    unlimited concurrency levels easily.

  5. Recycle Mode

    The so called recycling feature allows to use the limited amount of items for an unlimited
    test run/load job by reusing these items again and again (circularly).

  6. Test Steps

    A test step is an unit of a test run with its own configuration and metrics reporting.

    An user is able to configure and identify a test step and
    limit it using one of available constraints.

  7. Metrics Reporting

    The metrics reported by Mongoose are designed to be most useful for performance analysis.
    The following metrics are accounted:

    • Counts: items, bytes, elapsed and effective times.
    • Rates: items per second and bytes per second.
    • Timing distributions for operation durations and network latencies.

      There are the metrics outputs performed periodically while a load job is running and
      total ones when a load job is finished.

      Also, it's possible to
      obtain the highest-precision metrics (for each operation).

  8. Load Types

    The CRUD notation is used to describe the load operations. However, there are some extensions:

    • Create may act as copying the items from the source to the destination
    • Read may validate the data on the fly
    • Read may be partial
    • Update may act as append
    • Noop operation is also available.

      One of the most interesting things is a data reentrancy. This allows to validate the data
      read back from the storage successfully even after the data items have been randomly updated
      multiple times before.

  9. Scenarios

    Mongoose is able to run the tests described with scenario files in the JSON format. Scenario
    syntax allow to:

  10. Storage Driver

    Mongoose is able to work in the distributed mode what allows to scale out the load
    performed on a storage. In the distributed mode there's a controller which aggregates the
    results from the several remote storage drivers. Storage drivers perform the actual
    load on the storage.

    Mongoose supports different storage types: a
    filesystem or a cloud storage.
    Currently, the following cloud storage APIs are supported:

    It's possible to implement a custom storage driver to extend the storages support.


  1. Deployment using Docker
  2. Storage Mock
  3. Web GUI


Mongoose v4.0

Mongoose v3.5

Mongoose v3.4

Mongoose v3.3

Mongoose v3.1

Mongoose v3.0

Mongoose v2.x.x

Mongoose v1.x.x

Docker Pull Command
Source Repository