#注入 #故障 #测试 #可靠性 #崩溃 #IO错误 #文件名

故障注入

简单的故障注入、并发延迟注入和错误源注释

9个稳定版本

1.0.10 2023年8月5日
1.0.9 2023年6月19日
1.0.7 2022年8月13日
1.0.4 2022年7月3日
0.1.0 2022年5月16日

110并发 中排名

Download history 53/week @ 2024-03-11 53/week @ 2024-03-18 54/week @ 2024-03-25 164/week @ 2024-04-01 64/week @ 2024-04-08 70/week @ 2024-04-15 56/week @ 2024-04-22 77/week @ 2024-04-29 54/week @ 2024-05-06 63/week @ 2024-05-13 55/week @ 2024-05-20 128/week @ 2024-05-27 105/week @ 2024-06-03 76/week @ 2024-06-10 95/week @ 2024-06-17 96/week @ 2024-06-24

每月401次下载
用于 10 个Crates(直接使用4个)

MIT/Apache

10KB
83

fault-injection

文档

类似于 try! 宏或 ? 操作符,但在测试期间可以外部控制注入故障。与 try! 宏或 ? 操作符不同,它还注释了错误描述,包括错误所在的crate、文件名和行号,以便快速调试。它专门用于与 io::Result 类型一起工作,并在发生故障时返回一个 io::Error,类似于 try! 宏或 ? 操作符。通过将 FAULT_INJECT_COUNTER1(默认设置为 u64::MAX),如果它达到0,则返回一个具有 Other 类型的 io::Error。如果将 SLEEPINESS 设置为非0值,此宏还将注入弱伪随机延迟,以方便基本形式的并发测试。

示例

use std::io;

use fault_injection::{fallible, set_trigger_function, FAULT_INJECT_COUNTER};

fn trigger_fn(crate_name: &str, file_name: &str, line_number: u32) {
    println!(
        "fault injected at {} {} {}",
        crate_name, file_name, line_number
    );
}

fn do_io() -> io::Result<()> {
    Ok(())
}

// this will return an injected error
fn use_it() -> std::io::Result<()> {
    set_trigger_function(trigger_fn);
    FAULT_INJECT_COUNTER.store(1, std::sync::atomic::Ordering::Release);

    fallible!(do_io());

    Ok(())
}

无运行时依赖