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.
βοΈ 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.
Many installation methods are supported, details of which can be found at Installation for details.
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.
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"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"- Config File: Override the default configuration path.
bloader {command} -c /path/to/config.yaml - Help: Display help for any command.
bloader help
- 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
- 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
- Start Slave Node: Initialize a Slave node for distributed testing.
bloader slave run -c /path/to/slave_config.yaml
- 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).
- 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.
We welcome contributions of all kinds! If you're interested in improving Bloader, please:
- Fork the repository.
- Make your changes in a new branch.
- Submit a pull request with a detailed description.
For more details, see contribution file.
- Sprig: Template engine for flexible configurations.
- Cobra: CLI framework.
- Viper: Configuration management.
- Bolt: Lightweight internal database.
This project is licensed under the MIT License. See the LICENSE file for details.