Crate tower_fault

Source
Expand description

§Fault injection utilities for tower

This crate provides tower::Layers that can be used to inject various faults into a tower::Service.

§Layers

You can use the following layers to inject faults into a service:

§Example

use tower_fault::{
error::ErrorLayer,
latency::LatencyLayer,
};
use tower::{service_fn, ServiceBuilder};



// LatencyLayer with a 10% probability of injecting 200 to 500 milliseconds
// of latency.
let latency_layer = LatencyLayer::new(0.1, 200..500);

// ErrorLayer that injects an error if the request value is greater than 10.
let error_layer = ErrorLayer::new(
    |req: &MyRequest| req.value > 10,
    |_: &MyRequest| String::from("error")
);

let service = ServiceBuilder::new()
    .layer(latency_layer)
    .layer(error_layer)
    .service(service_fn(my_service));

Modules§

decider
Decider
errorerror
Error injection for tower
latencylatency
Latency injection for tower