Skip to content
Andrey Kurilov edited this page Mar 3, 2017 · 47 revisions

Mongoose

Description

Mongoose is a high-load storage performance testing automation tool.

The Mongoose Load Engine is capable to work with:

  • A million of concurrent connections
  • A million of operations per second
  • A million of items which may be processed multiple times in the circular load mode
  • A million of items which may be stored in the storage mock

Basically, Mongoose may be started very simply:

java -jar mongoose.jar

Features

Core Functionality

  1. Configuration

    Mongoose has rich configuration subsystem. It supports mapping to provide a backward compatibility and the values generated using the pattern.

  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|v3.2 User Guide#211-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 source 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 very high concurrency (up to 1 million of simultaneous connections/open files) easily.

  5. Circularity

    The so called circularity 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. Load Jobs

    A load job is an unit of a test run with its own configuration and metrics reporting. An user may consider a load job as a test step.

    An user is able to "name" a load job and [[limit it using one of available constraints|v3.2-User-Guide#62-load-jobs-limitation.

  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:

    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:

Other

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

Documentation

Mongoose v3.3.0

Mongoose v3.2.0

Mongoose v3.1.0

Mongoose v3.0.5

Mongoose v2.x.x

Mongoose v1.x.x

Clone this wiki locally