-
Notifications
You must be signed in to change notification settings - Fork 9
Support BUGGIFY #12
Comments
Thanks for commenting on this! Can |
This sort of overlaps with #13 now, but failpoints seem like a great tool for unit testing failures. In the specification-based testing approach, you don't want to manually write every To extend and modify their example:
The first |
if BUGGIFY!() {
// Pretend that the snapshot of the filesystem state we received is potentially largely out of date with the current filesystem state.
sleep(5).await;
} I wonder if stuff like this we could just introduce as part of the simulation executor? Basically treat the |
Given a full simulation framework with random fault injection, it's still difficult/unlikely to recreate dangerous situations in the system under test. For example, given random packet/network failures, what's the chance of sending a commit to an exactly minimal quorum of nodes? To help simulation find correctness issues, it's productive to write simulation-only code that helps creates dangerous situations, and randomly run or skip over it in simulation. FoundationDB has the BUGGIFY set of macros for this. It's also used for randomizing flag/tuning settings, randomly restarting multi-stage workflows, or to inject random long delays in highly concurrent code.
Concretely:
Will send to a minimal quorum, only when running in simulation, and only a small percentage of the time.
The text was updated successfully, but these errors were encountered: