- 
                Notifications
    You must be signed in to change notification settings 
- Fork 11
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