-
Notifications
You must be signed in to change notification settings - Fork 10
Home
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
-
Mongoose has rich configuration subsystem. It supports mapping to provide a backward compatibility and the values generated using the pattern.
-
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.
-
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.
-
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.
-
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).
-
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.
-
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
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 the JSON format. Scenario syntax allow to:
- Inherit the jobs configuration
- Substitute the values using the environment variables.
- Execute the external commands
- Execute the jobs sequentially or in parallel
- Execute the jobs in a loop
- Execute the so called weighted load jobs
- Execute the so called chain load jobs
-
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:
- Overview
- Deployment
- User Guide
- Troubleshooting
- Reference