utsaslab / crashmonkey

CrashMonkey: tools for testing file-system reliability (OSDI 18)
Apache License 2.0
193 stars 31 forks source link

Implement user checkpoints in CrashMonkey #51

Closed ashmrtn closed 7 years ago

ashmrtn commented 7 years ago

Implementations for #42, #41, #40, #39, and #38.

Checkpoints can now be called from a helper binary in build/user_tools/Checkpoint or via the programmatic API with Checkpoint().

The most recent checkpoint reached when generating a crash state is dumped to the output log along with the order of the bios used to generate the crash state (each bio is represented by its index in the original bio stream).

Below is an entry generated by running sudo ./c_harness -f /dev/vda -d /dev/cow_ram0 -t ext2 tests/checkpoint_example.so. This test creates a file and a new directory, and then moves the new file between the root directory of the file system and the new directory. Checkpoints are placed at various intervals during this test.

 Test #26 FAILED: file missing: test file has completely disappeared
   last checkpoint: 2
   crash state: 0, 1, 2, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 17, 16, 18