1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#[macro_export]
macro_rules! with_chaos {
( $x:expr) => {{
#[cfg(feature = "chaos")]
{
use log::{debug, warn};
use rand::distributions::{Distribution, Uniform};
use std::env;
let mut rng = rand::thread_rng();
let chaos_trigger: usize = env::var("SAFE_CHAOS_LEVEL")
.unwrap_or("20".to_string())
.parse()
.unwrap_or(20);
let die = Uniform::from(1..100);
let throw = die.sample(&mut rng);
debug!(
"Threshold for \"chaos\" to occur is < {}, we rolled: {}",
chaos_trigger, throw
);
if throw <= chaos_trigger {
warn!("Chaos!");
$x
}
}
}};
}