Things on this page are fragmentary and immature notes/thoughts of the author. Please read with your own judgement!
Mocking¶
https://crates.io/crates/mailtutan
turmoil Turmoil is a framework for testing distributed systems. It provides deterministic execution by running multiple concurrent hosts within a single thread. It introduces "hardship" into the system via changes in the simulated network. The network can be controlled manually or with a seeded rng.
Tips and Traps¶
- Mock values can be helpful sometimes 
 especially for testing.
 For example, 
 I had a function which takes 
rng: &mut dyn RngCoreas a parameter. However, for certain combination of other parameters,rngis not used at all. For those cases, it is perfectly OK to pass in a mock RNG value. 
In [ ]:
struct FakeRng {}
impl RngCore for FakeRng {
    fn next_u32(&mut self) -> u32 {
        todo!()
    }
    fn next_u64(&mut self) -> u64 {
        todo!()
    }
    fn fill_bytes(&mut self, dest: &mut [u8]) {
        todo!()
    }
    fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), rand::Error> {
        todo!()
    }
}