- Overview
- Features
- Bundles & Extenstions
- Get started 🏁
- Comparison With Similar Tools
- Documentation 📄
- Contributing
- Changelog
- FAQ ❓
Mongoose is a distributed storage performance testing tool. This repo contains the basic functionality only. See the extensions for the actual use.
Using fibers allows to sustain millions of concurrent operations easily without significant performance degradation.
The distributed mode in Mongoose was designed as P2P network. Each peer/node performs independently as much as possible. This eliminates the excess network interaction between the nodes which may be a bottleneck.
- Safe: the configuration options are being checked against the schema
- Extensible: Mongoose's plugins may come up with own configuration options making them available from the joint CLI and being checked against the schema
- Expressions allow to specify the dynamically changing values
-
CRUD operations and the extensions: Noop, Copy, etc
-
Complex Load Steps
-
Allows to validate the data read back from the storage successfully even after the data items have been randomly updated multiple times before
-
Custom Payload Data
2.2.3. Scenarios
Scenarios allow to organize the load steps in the required order and reuse the complex performance tests
2.2.4. Metrics Reporting
The metrics reported by Mongoose are designed to be most useful for the performance analysis. The following metrics are available:
-
Counts
- Items
- Bytes transferred
- Time
- Effective
- Elapsed
-
Rates
- Items per second
- Bytes per second
-
Timing distributions for:
- Operation durations
- Network latencies
-
Actual concurrency
It's possible to limit the rate and measure the sustained actual concurrency
The average metrics output is being done periodically while a load step is running. The summary metrics output is done once when a load step is finished. Also, it's possible to obtain the highest precision metrics (for each operation, so called I/O trace records).
2.3. Extension
Mongoose is designed to be agnostic to the particular extensions implementations. This allows to support any storage, scenario language, different load step kinds.
The load step is needed to define how to generate the load (operations type/order/ratio/etc). Mongoose basically includes the linear load step implementation which may be considered as a straightforward way to generate a load. Other load step implementations allow to specify some custom and more complex load pattern. See the known load step extensions among the bundle components either among the additional extensions.
The storage driver is used by Mongoose to interact with the given storage. It translates the Mongoose's abstract operations into the actual I/O requests and executes them. Mongoose basically includes the dummy storage driver only which does nothing actually and useful only for demo/testing purposes. See the known storage driver extensions among the bundle components either among the additional extensions.
Any Mongoose scenario may be written using any JSR-223 compliant scripting language. Javascript support is available out-of-the-box.
This repo (mongoose-base
) containts only base functionality. All extentions and additional mongoose tools located into the independent repos and the corresponding components. Each component has its own documentation, CI versioning.