4 releases
0.0.4 | Feb 23, 2022 |
---|---|
0.0.3 | Feb 21, 2022 |
0.0.2 | Jan 28, 2022 |
0.0.1 | Jan 28, 2022 |
#11 in #fault
23 downloads per month
15KB
276 lines
tower-fault-injector
tower-fault-injector
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
use tower_fault_injector::latency::LatencyLayer;
use tower::{service_fn, ServiceBuilder};
async fn my_service() -> Result<(), ()> {
Ok(())
}
// Initialize a LatencyLayer with a 10% probability of injecting
// 200 to 500 milliseconds of latency.
let latency_layer = LatencyLayer::new(0.1, 200..500);
let service = ServiceBuilder::new()
.layer(latency_layer)
.service(service_fn(my_service));
lib.rs
:
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_injector::latency::LatencyLayer;
use tower::{service_fn, ServiceBuilder};
// Initialize a LatencyLayer with a 10% probability of injecting
// 200 to 500 milliseconds of latency.
let latency_layer = LatencyLayer::new(0.1, 200..500).unwrap();
let service = ServiceBuilder::new()
.layer(latency_layer)
.service(service_fn(my_service));
Dependencies
~1.2–7.5MB
~56K SLoC