-
Notifications
You must be signed in to change notification settings - Fork 10
Home
doc
directory since v4.
Use README.md
as new documentation entry. The wiki content will be deprecated and will remain suiteble for v3.x.x
versions
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.
Please refer to the deployment page for the details.
-
Mongoose has rich configuration subsystem supporting the parametrization.
-
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.
-
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.
-
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.
-
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).
-
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.
-
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).
-
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.
-
Mongoose is able to run the tests described with scenario files in using the specific DSL. Scenario syntax allow to:
- Configure the load steps
- Organize the steps sequentially or in parallel
- Reuse the step configuration
- Substitute the values using environment variables
- Execute the external commands
- Execute advanced load steps, such as weighted load either chain load.
-
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:
It's possible to implement a custom storage driver to extend the storages support.
- Gennady Eremeev
- Ilya Kisliakovsky
- Kirill Gusakov
- Mikhail Danilov
- Mikhail Malygin
- Olga Zhavzharova
- Overview
- Deployment
- User Guide
- Troubleshooting
- Reference