bloader

command module
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 12, 2025 License: MIT Imports: 1 Imported by: 0

README ΒΆ

Bloader: A Modern Benchmarking Tool

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. πŸ’‘


✨ 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.


πŸ“„ 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
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
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.md.


  • 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.

Documentation ΒΆ

Overview ΒΆ

Copyright Β© 2024 hayashi kenta <k.hayashi@cresplanex.com>

Directories ΒΆ

Path Synopsis
internal

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL