Categorygithub.com/cresplanex/bloader
modulepackage
1.0.21
Repository: https://github.com/cresplanex/bloader.git
Documentation: pkg.go.dev

# README

Bloader

Go Reference CI Test Coverage Go Report Card License Release Last Commit Go Version

Bloader is a cutting-edge load testing tool designed for simplicity and flexibility. While still in active development, it already offers robust features to execute and manage load tests effectively. We welcome contributions from the community to help shape its future. šŸ’”

[!WARNING]
This page describes minimal documentation but does not explain the definition of a loader.

See Bloader Docs for more information.

✨ Key Features

āœ”ļø Internal Storage: Bloader can store request data for enhanced testing capabilities.

āœ”ļø Master-Slave Architecture: Avoid client-side bottlenecks by leveraging gRPC communication between Master and Slave nodes.

āœ”ļø Human-Friendly Configuration: Load tests are defined using YAML, with support for Sprig's template engine (used in Helm), offering exceptional flexibility.


šŸ› ļø Installation

Many installation methods are supported, details of which can be found at Installation for details.

šŸ“„ Configuration File Support

Bloader supports multiple formats, including YAML, JSON, and TOML, via the Viper library. Configuration items differ for Master and Slave nodes and can be overridden by environment variables prefixed with BLOADER_, which take precedence over file-based configurations.

Example: Master Configuration

version: v1
type: master
env: "production"
loader:
  base_path: "loader"
targets:
  - id: "apiServer"
    type: "http"
    values:
      - env: "local"
        url: "http://localhost:8080"
      - env: "production"
        url: "https://api.example.org"
outputs:
  - id: "localOutput"
    values:
      - env: "production"
        type: "local"
        format: "csv"
        base_path: "outputs/prod"
store:
  file:
    - env: "production"
      path: "local_store/prod_store.db"
encrypts:
  - id: "dynamicEncrypt"
    type: "dynamicCBC"
    store:
      bucket_id: "encryptBucket"
      key: "dynamicKey"
server:
  port: 9800
logging:
  output:
    - type: "stdout"
      format: "text"
      level: "warn"

Example: Slave Configuration

version: v1
type: slave
env: "production"
slave_setting:
  port: 50051
  certificate:
    enabled: true
    slave_cert: "certs/slave.crt"
    slave_key: "certs/slave.key"
logging:
  output:
    - type: "file"
      filename: "logs/slave.log"
      format: "text"
      level: "warn"

āš™ļø Command-Line Interface

Global Options

  • Config File: Override the default configuration path.
    bloader {command} -c /path/to/config.yaml
    
  • Help: Display help for any command.
    bloader help
    

Common Commands

  • Show Current Config: Displays the merged configuration after overrides.
    bloader config
    
  • Encrypt/Decrypt Data: Secure your data using pre-configured encryption settings.
    bloader encrypt "test-data" -i dynamicEncrypt
    bloader encrypt "encrypted-data" -i dynamicEncrypt -d
    

Master-Specific Commands

  • Run Load Test: Execute a load test using a specified file.
    bloader run -f loader.yaml
    
  • Authenticate: Manage authentication tokens.
    bloader auth login -i oauthAuth
    
  • Manage Data Store:
    bloader store list
    bloader store object get --bucket encryptBucket keyName
    

Slave-Specific Commands

  • Start Slave Node: Initialize a Slave node for distributed testing.
    bloader slave run -c /path/to/slave_config.yaml
    

šŸŽÆ Supported Features

  • Load Test Definitions: Define targets and parameters using YAML.
  • Internal and Memory Store: Data can be persisted or temporarily stored for flexibility.
  • Extensible Encryption: Supports dynamic and static encryption configurations.
  • Multi-Environment Support: Easily switch between environments (e.g., local, production).

šŸš€ Planned Features

  • Transition from BoltDB to a more actively maintained database.
  • Integration with cloud services for configuration overrides.
  • Enhanced analysis tools and visualization capabilities.
  • Web-based UI for intuitive load test management.
  • Support for gRPC-based targets.
  • Plugin system for custom extensions.

šŸ¤ Contributing

We welcome contributions of all kinds! If you're interested in improving Bloader, please:

  1. Fork the repository.
  2. Make your changes in a new branch.
  3. Submit a pull request with a detailed description.

For more details, see contribution file.


šŸ› ļø Related Tools

  • Sprig: Template engine for flexible configurations.
  • Cobra: CLI framework.
  • Viper: Configuration management.
  • Bolt: Lightweight internal database.

šŸ“œ License

This project is licensed under the MIT License. See the LICENSE file for details.

# Packages

Copyright Ā© 2024 cresplanex <[email protected]> */.
No description provided by the author