Crates.io | mustermann |
lib.rs | mustermann |
version | |
source | src |
created_at | 2025-02-28 04:12:43.173234+00 |
updated_at | 2025-04-13 02:25:54.090305+00 |
description | Mustermann is test data for your OpenTelemetry pipeline |
homepage | |
repository | |
max_upload_size | |
id | 1572439 |
Cargo.toml error: | TOML parse error at line 18, column 1 | 18 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include` |
size | 0 |
Mustermann is a CLI tool that generates test data for OpenTelemetry pipelines using a custom virtual machine. It allows you to define complex service interactions and log patterns through YAML configuration files, making it perfect for testing and validating your observability infrastructure.
cargo install mustermann
Or install it from the releases page.
mustermann [OPTIONS] <file_path> [otel_endpoint] [--service-name <service_name>]
-p, --print-code
: Enable debug mode to print generated bytecode-s, --service-name <service_name>
: The name of the service to be used in the logs (default: "mustermann")file_path
: Path to the configuration YAML fileotel_endpoint
: Optional OpenTelemetry endpoint URLmustermann config.yaml http://localhost:4317 --service-name my-service
Standalone service just printing values:
service payments {
method charge {
print "Processing payment for order %s" with ["12345", "67890"];
sleep 500ms;
}
loop {
call charge;
}
}
Standalone service printing values to stderr:
service payments {
method charge {
stderr "Processing payment for order %s" with ["12345", "67890"];
sleep 500ms;
}
loop {
call charge;
}
}
Service accepting requests from other services:
service payments {
method charge {
print "Processing payment for order %s" with ["12345", "67890"];
sleep 500ms;
}
}
Call another service:
service products {
method get_products {
print "Fetching product orders %s" with ["12345", "67890"];
sleep 500ms;
}
}
service frontend {
method main_page {
print "Main page";
call products.get_products;
}
loop {
call main_page;
}
}
service products {
method get_products {
print "Fetching product orders %s" with ["12345", "67890"];
sleep 500ms;
}
}
service features {
method is_enabled {
print "Check if feature is enabled %s" with ["login", "upload", "create"];
sleep 1000ms;
}
}
service frontend {
method login {
print "Main page";
call features.is_enabled;
}
loop {
call login;
}
}
service analytics {
method main_page {
print "Main page";
call products.get_products;
}
loop {
call main_page;
}
}
service frontend_b {
method main_page {
print "Main page";
call products.get_products;
}
loop {
call main_page;
}
}
This service definition will generate the following service map:
MIT