forked from cockroachdb/pebble
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
metamorphic: add key manager abstraction
Currently, the metamorphic test generator tracks the state of keys that it generates to determine whether or not certain keys can be used for specific operations. Specifically, keys that have been set once in the database are eligible to be SingleDeleted. Future enhancements to the test suite will likely introduce other desirable sequences of operations that rely on tracking the state of certain keys through the metamorphic test. State tracking for keys is currently embedded directory onto the `generator` struct. Additional fields that are to be used for state tracking would continue to complicate the already sizable struct. There is also significant cognitive overhead with the existing state tracking for keys. Introduce the concept of a "key manager", dedicated to tracking the state of keys during metamorphic test generation time. Internally, the `keyManager` struct can be passed operations via `op`s` (e.g. `setOp`, etc.) that transform the internal state. The `keyManager` then exposes functions that can be used to deduce which keys are eligible for certain operations at a point in time. Initially, one such function is `eligibleSingleDeleteKeys`, which is used to replace the existing logic in the `generator` for tracking keys that can be SingleDeleted. Future enhancements to the metamorphic test suite that rely on state tracking can now make use of the dedicated state management responsibilities of the `keyManager`. Informed by cockroachdb#1248, cockroachdb#1254. Related to cockroachdb#1255.
- Loading branch information
Showing
4 changed files
with
709 additions
and
64 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.