# tower-fault [![Latest Version]][crates.io]
[Latest Version]: https://img.shields.io/crates/v/tower-fault.svg
[crates.io]: https://crates.io/crates/tower-fault
`tower-fault` is a library for injecting 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 usage
```rust
use tower_fault::{
error::ErrorLayer,
latency::LatencyLayer,
};
use tower::{service_fn, 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.
.layer(latency_layer)
.service(service_fn(my_service));
```