Mongoose

/Open Source Project

master downloads release Docker Pulls

Contents

  1. Overview
  2. Features
      2.1. Comparison With Similar Tools
        2.1.1. General
        2.1.2. Purpose
        2.1.3. Scalability
        2.1.4. Input
        2.1.5. Output
        2.1.6. Load Generation Patterns
        2.1.7. Storages Support
      2.2. Scalability
        2.2.1. Vertical
        2.2.2. Horizontal
      2.3. Customization
        2.3.1. Flexible Configuration
        2.3.2. Load Generation Patterns
        2.3.3. Scenarios
        2.3.4. Metrics Reporting
      2.4. Extension
        2.4.1. Load Steps
        2.4.2. Storage Drivers
       2.4.3. Scenario Engine
  3. Documentation
      3.1. Deployment
      3.2. Usage
      3.2. Troubleshooting
      3.3. Storage Drivers
        3.3.1. General
        3.3.2. S3
        3.3.3. Atmos
        3.3.4. Swift
        3.3.5. FS
      3.4. Dependencies
      3.5. Input
      3.6. Output
      3.7. Design
        3.7.1. Architecture
        3.7.2. Distributed Mode
        3.7.3. Installer
        3.7.4. Recycle Mode
        3.7.5. Data Reentrancy
        3.7.6. Byte Range Operations
        3.7.7. Copy Mode
        3.7.8. Pipeline Load
        3.7.9. Weighted Load
      3.8. Integrations
      3.9. Contributing
      3.10. Changelog

1. Overview

Mongoose is a powerful storage performance testing tool. It is designed to be used for: * Load Testing * Stress Testing * Soak/Longevity/Endurance Testing * Volume Testing * Smoke/Sanity Testing

2. Features

2.1. Comparison With Similar Tools

2.1.1. General

Mongoose COSBench LoadRunner Locust
License MIT License Apache 2.0 Proprietary MIT License
Open Source :heavy_check_mark: :heavy_check_mark: :x: :heavy_check_mark:

2.1.2. Purpose

Mongoose COSBench LoadRunner Locust
Load testing :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
Stress testing :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: TBD
Endurance testing :heavy_check_mark: TBD :heavy_check_mark: TBD

2.1.3. Scalability

Mongoose COSBench LoadRunner Locust
Horizontal (Distributed Mode) :heavy_check_mark: :heavy_check_mark: TBD :heavy_check_mark:
Vertical (Max sustained concurrency per instance) 1_048_576 1024 TBD 1_000_000

2.1.4. Input

Mongoose COSBench LoadRunner Locust
GUI :x: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
Parameterization :heavy_check_mark: :heavy_check_mark: TBD :heavy_check_mark:(need to extend the functionality)
Script language Any JSR-223 compatible XML ANSI C, Java, .Net, JS Python

2.1.5. Output

Mongoose COSBench LoadRunner Locust
Highest-resolution (per each op) metrics :heavy_check_mark: :x: TBD :x:
Saturation concurrency measurement :heavy_check_mark: :x: TBD :x:

2.1.6. Load Generation Patterns

Mongoose COSBench LoadRunner Locust
Weighted load :heavy_check_mark: :heavy_check_mark: TBD :x:
Pipeline load :heavy_check_mark: :x: TBD :x:
Recycle mode :heavy_check_mark: :x: TBD :x:

2.1.7. Storages Support

  • Note: Locust and LoadRunner are not designed for the storage performance testing explicitly so they are excluded from the table below
Mongoose COSBench
Supported storages
< ul>
  • Amazon S3
  • EMC Atmos
  • OpenStack Swift
  • Filesystem
  • HDFS
  • < ul>| < ul>
  • Amazon S3
  • Amplidata
  • OpenStack Swift
  • Scality
  • Ceph
  • Google Cloud Storage
  • Aliyun OSS
  • < ul>| |Extensible to support custom storage API| :heavy_check_mark: | :heavy_check_mark: |

    2.2. Scalability

    2.2.1. Vertical

    Using fibers allows to sustain millions of concurrent operations easily without significant performance degradation.

    2.2.2. Horizontal

    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.

    2.3. Customization

    2.3.1. Flexible Configuration

    Supports the parameterization and extension but remains type-safe and structure-safe

    2.3.2. Load Generation Patterns

    2.3.3. Scenarios

    Scenaruis allow to organize the load steps in the required order and reuse the complex performance tests

    2.3.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.4. Extension

    Mongoose is designed to be agnostic to the particular extensions implementations. This allows to support any storage, scenario language, different load step kinds.

    2.4.1. Load Steps

    It's possible to implement a custom load step.

    2.4.2. Storage Drivers

    Mongoose accounts and operates with abstract items which may be files, objects, directories, tokens, buckets, etc. The exact behaviour is defined by the particular storage driver implementation. Mongoose supports some storage types out-of-the-box: * Amazon S3 * EMC Atmos * OpenStack Swift * Filesystem The following additional storage driver implementations are available: * HDFS

    2.4.3. Scenario Engine

    Any Mongoose scenario may be written using any JSR-223 compliant scripting language. Javascript support is available out-of-the-box.

    Information

    From the {code} Blog

    More related posts on the {code} Blog

    master downloads release Docker Pulls

    Contents

    1. Overview
    2. Features
        2.1. Comparison With Similar Tools
          2.1.1. General
          2.1.2. Purpose
          2.1.3. Scalability
          2.1.4. Input
          2.1.5. Output
          2.1.6. Load Generation Patterns
          2.1.7. Storages Support
        2.2. Scalability
          2.2.1. Vertical
          2.2.2. Horizontal
        2.3. Customization
          2.3.1. Flexible Configuration
          2.3.2. Load Generation Patterns
          2.3.3. Scenarios
          2.3.4. Metrics Reporting
        2.4. Extension
          2.4.1. Load Steps
          2.4.2. Storage Drivers
         2.4.3. Scenario Engine
    3. Documentation
        3.1. Deployment
        3.2. Usage
        3.2. Troubleshooting
        3.3. Storage Drivers
          3.3.1. General
          3.3.2. S3
          3.3.3. Atmos
          3.3.4. Swift
          3.3.5. FS
        3.4. Dependencies
        3.5. Input
        3.6. Output
        3.7. Design
          3.7.1. Architecture
          3.7.2. Distributed Mode
          3.7.3. Installer
          3.7.4. Recycle Mode
          3.7.5. Data Reentrancy
          3.7.6. Byte Range Operations
          3.7.7. Copy Mode
          3.7.8. Pipeline Load
          3.7.9. Weighted Load
        3.8. Integrations
        3.9. Contributing
        3.10. Changelog

    1. Overview

    Mongoose is a powerful storage performance testing tool. It is designed to be used for: * Load Testing * Stress Testing * Soak/Longevity/Endurance Testing * Volume Testing * Smoke/Sanity Testing

    2. Features

    2.1. Comparison With Similar Tools

    2.1.1. General

    Mongoose COSBench LoadRunner Locust
    License MIT License Apache 2.0 Proprietary MIT License
    Open Source :heavy_check_mark: :heavy_check_mark: :x: :heavy_check_mark:

    2.1.2. Purpose

    Mongoose COSBench LoadRunner Locust
    Load testing :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
    Stress testing :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: TBD
    Endurance testing :heavy_check_mark: TBD :heavy_check_mark: TBD

    2.1.3. Scalability

    Mongoose COSBench LoadRunner Locust
    Horizontal (Distributed Mode) :heavy_check_mark: :heavy_check_mark: TBD :heavy_check_mark:
    Vertical (Max sustained concurrency per instance) 1_048_576 1024 TBD 1_000_000

    2.1.4. Input

    Mongoose COSBench LoadRunner Locust
    GUI :x: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
    Parameterization :heavy_check_mark: :heavy_check_mark: TBD :heavy_check_mark:(need to extend the functionality)
    Script language Any JSR-223 compatible XML ANSI C, Java, .Net, JS Python

    2.1.5. Output

    Mongoose COSBench LoadRunner Locust
    Highest-resolution (per each op) metrics :heavy_check_mark: :x: TBD :x:
    Saturation concurrency measurement :heavy_check_mark: :x: TBD :x:

    2.1.6. Load Generation Patterns

    Mongoose COSBench LoadRunner Locust
    Weighted load :heavy_check_mark: :heavy_check_mark: TBD :x:
    Pipeline load :heavy_check_mark: :x: TBD :x:
    Recycle mode :heavy_check_mark: :x: TBD :x:

    2.1.7. Storages Support

    • Note: Locust and LoadRunner are not designed for the storage performance testing explicitly so they are excluded from the table below
    Mongoose COSBench
    Supported storages
    < ul>
  • Amazon S3
  • EMC Atmos
  • OpenStack Swift
  • Filesystem
  • HDFS
  • < ul>| < ul>
  • Amazon S3
  • Amplidata
  • OpenStack Swift
  • Scality
  • Ceph
  • Google Cloud Storage
  • Aliyun OSS
  • < ul>| |Extensible to support custom storage API| :heavy_check_mark: | :heavy_check_mark: |

    2.2. Scalability

    2.2.1. Vertical

    Using fibers allows to sustain millions of concurrent operations easily without significant performance degradation.

    2.2.2. Horizontal

    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.

    2.3. Customization

    2.3.1. Flexible Configuration

    Supports the parameterization and extension but remains type-safe and structure-safe

    2.3.2. Load Generation Patterns

    2.3.3. Scenarios

    Scenaruis allow to organize the load steps in the required order and reuse the complex performance tests

    2.3.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.4. Extension

    Mongoose is designed to be agnostic to the particular extensions implementations. This allows to support any storage, scenario language, different load step kinds.

    2.4.1. Load Steps

    It's possible to implement a custom load step.

    2.4.2. Storage Drivers

    Mongoose accounts and operates with abstract items which may be files, objects, directories, tokens, buckets, etc. The exact behaviour is defined by the particular storage driver implementation. Mongoose supports some storage types out-of-the-box: * Amazon S3 * EMC Atmos * OpenStack Swift * Filesystem The following additional storage driver implementations are available: * HDFS

    2.4.3. Scenario Engine

    Any Mongoose scenario may be written using any JSR-223 compliant scripting language. Javascript support is available out-of-the-box.

    From the {code} Blog

    More related posts on the {code} Blog

    From the {code} Blog

    More related posts on the {code} Blog