tower-fault
is a library for injecting various faults into a tower::Service
.
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.```rust use towerfault::{ error::ErrorLayer, latency::LatencyLayer, }; use tower::{servicefn, ServiceBuilder};
struct MyRequest { value: u64 }
async fn my_service(req: MyRequest) -> Result<(), String> { Ok(()) }
// 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 errorlayer = ErrorLayer::new(|req: &MyRequest| req.value > 10, |: &MyRequest| String::from("error"));
let service = ServiceBuilder::new() .layer(latencylayer) .service(servicefn(my_service)); ```