-
Type: Improvement
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: Testing Infrastructure
-
Fully Compatible
-
Execution Team 2020-07-13, Execution Team 2020-07-27
The KVEngine test harness allows us to create a single set of unit tests that runs on multiple storage engines.
In order to have a test-driven development approach for adding timestamp support for Biggie, we should add additional unit tests to the harness to increase our test coverage for the storage engines.
We can deterministically identify what the timestamps (oldest, stable, all durable) should be set to after performing a set of operations.
A few simple examples of unit tests could be:
- Pinning the oldest timestamp (by keeping a read transaction open) and performing write operations at a later time. Opening a new read transaction on an older timestamp, prior to when the writes committed, we shouldn't see any of those changes.
- Rolling back to the last stable timestamp should remove any changes made since the last stable timestamp.
- When all open transactions commit, the all durable timestamp should be advanced when the final transaction is finished.
Obviously, this isn't an extensive list and we should add more.
I've attached a file of additional timestamp cases we can exercise made by daniel.gottlieb.