mustermann

Crates.iomustermann
lib.rsmustermann
version
sourcesrc
created_at2025-02-28 04:12:43.173234+00
updated_at2025-04-13 02:25:54.090305+00
descriptionMustermann is test data for your OpenTelemetry pipeline
homepage
repository
max_upload_size
id1572439
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`
size0
Jan Schulte (schultyy)

documentation

README

mustermann

CI
Mustermann

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.

Features

  • Generate realistic test data for OpenTelemetry pipelines
  • Define service interactions and dependencies
  • Create custom log patterns with variable substitution
  • Control execution frequency and patterns
  • Support for different log severity levels
  • Custom virtual machine for efficient execution

Installation

cargo install mustermann

Or install it from the releases page.

Usage

mustermann [OPTIONS] <file_path> [otel_endpoint] [--service-name <service_name>]

Options

  • -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 file
  • otel_endpoint: Optional OpenTelemetry endpoint URL

Example

mustermann 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;
  }
}

Multi-service example

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:

servicemap

License

MIT

Commit count: 0

cargo fmt