1 个不稳定版本

0.0.5 2022年2月24日

#8 in #tower-layer

MIT 许可证

21KB
334 行代码(不包括注释)

tower-fault 最新版本

tower-fault 是一个库,用于向 tower::Service 注入各种故障。

您可以使用以下层向服务注入故障

  • ErrorLayer - 随机向服务注入错误。
  • LatencyLayer - 随机向服务添加延迟。

示例用法

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.
let error_layer = ErrorLayer::new(|req: &MyRequest| req.value > 10, |_: &MyRequest| String::from("error"));

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

依赖项

~1.6–3.5MB
~65K SLoC