Partial keys seem to be working
This commit is contained in:
19
Internal.h
19
Internal.h
@@ -449,6 +449,8 @@ template <class ConflictSetImpl> struct TestDriver {
|
||||
ConflictSetImpl cs{writeVersion};
|
||||
ReferenceImpl refImpl{writeVersion};
|
||||
|
||||
constexpr static auto kMaxKeyLen = 24;
|
||||
|
||||
// Call until it returns true, for "done". Check internal invariants etc
|
||||
// between calls to next.
|
||||
bool next() {
|
||||
@@ -457,7 +459,7 @@ template <class ConflictSetImpl> struct TestDriver {
|
||||
}
|
||||
Arena arena;
|
||||
{
|
||||
int numWrites = arbitrary.bounded(10);
|
||||
int numWrites = arbitrary.bounded(kMaxKeyLen);
|
||||
int64_t v = ++writeVersion;
|
||||
auto *writes = new (arena) ConflictSet::WriteRange[numWrites];
|
||||
auto keys = set<std::string_view>(arena);
|
||||
@@ -465,7 +467,7 @@ template <class ConflictSetImpl> struct TestDriver {
|
||||
if (!arbitrary.hasEntropy()) {
|
||||
return true;
|
||||
}
|
||||
int keyLen = arbitrary.bounded(8);
|
||||
int keyLen = arbitrary.bounded(kMaxKeyLen);
|
||||
auto *begin = new (arena) uint8_t[keyLen];
|
||||
arbitrary.randomBytes(begin, keyLen);
|
||||
keys.insert(std::string_view((const char *)begin, keyLen));
|
||||
@@ -478,8 +480,9 @@ template <class ConflictSetImpl> struct TestDriver {
|
||||
writes[i].end.len = 0;
|
||||
writes[i].writeVersion = v;
|
||||
#if DEBUG_VERBOSE && !defined(NDEBUG)
|
||||
printf("Write: {%s} -> %d\n", printable(writes[i].begin).c_str(),
|
||||
int(writes[i].writeVersion));
|
||||
fprintf(stderr, "Write: {%s} -> %d\n",
|
||||
printable(writes[i].begin).c_str(),
|
||||
int(writes[i].writeVersion));
|
||||
#endif
|
||||
}
|
||||
assert(iter == keys.end());
|
||||
@@ -488,14 +491,14 @@ template <class ConflictSetImpl> struct TestDriver {
|
||||
}
|
||||
{
|
||||
int numReads = arbitrary.bounded(10);
|
||||
int64_t v = writeVersion - arbitrary.bounded(10);
|
||||
int64_t v = std::max<int64_t>(writeVersion - arbitrary.bounded(10), 0);
|
||||
auto *reads = new (arena) ConflictSet::ReadRange[numReads];
|
||||
auto keys = set<std::string_view>(arena);
|
||||
while (int(keys.size()) < numReads) {
|
||||
if (!arbitrary.hasEntropy()) {
|
||||
return true;
|
||||
}
|
||||
int keyLen = arbitrary.bounded(8);
|
||||
int keyLen = arbitrary.bounded(kMaxKeyLen);
|
||||
auto *begin = new (arena) uint8_t[keyLen];
|
||||
arbitrary.randomBytes(begin, keyLen);
|
||||
keys.insert(std::string_view((const char *)begin, keyLen));
|
||||
@@ -508,8 +511,8 @@ template <class ConflictSetImpl> struct TestDriver {
|
||||
reads[i].end.len = 0;
|
||||
reads[i].readVersion = v;
|
||||
#if DEBUG_VERBOSE && !defined(NDEBUG)
|
||||
printf("Read: {%s} at %d\n", printable(reads[i].begin).c_str(),
|
||||
int(reads[i].readVersion));
|
||||
fprintf(stderr, "Read: {%s} at %d\n", printable(reads[i].begin).c_str(),
|
||||
int(reads[i].readVersion));
|
||||
#endif
|
||||
}
|
||||
assert(iter == keys.end());
|
||||
|
Reference in New Issue
Block a user