README ΒΆ
Bloader: A Modern Benchmarking Tool
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:
- Fork the repository.
- Make your changes in a new branch.
- Submit a pull request with a detailed description.
For more details, see CONTRIBUTION.md.
π οΈ 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.