Crate tower_fault
source · [−]Expand description
Fault injection utilities for tower
This crate provides tower::Layer
s 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:
ErrorLayer
- randomly inject errors into a service.LatencyLayer
- randomly add latency 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));