Range write WIP
This commit is contained in:
39
Internal.h
39
Internal.h
@@ -14,7 +14,7 @@
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
#define DEBUG_VERBOSE 0
|
||||
#define DEBUG_VERBOSE 1
|
||||
|
||||
// This header contains code that we want to reuse outside of ConflictSet.cpp or
|
||||
// want to exclude from coverage since it's only testing related.
|
||||
@@ -459,11 +459,11 @@ template <class ConflictSetImpl> struct TestDriver {
|
||||
}
|
||||
Arena arena;
|
||||
{
|
||||
int numWrites = arbitrary.bounded(kMaxKeyLen);
|
||||
int numWriteKeys = arbitrary.bounded(10);
|
||||
int64_t v = ++writeVersion;
|
||||
auto *writes = new (arena) ConflictSet::WriteRange[numWrites];
|
||||
auto *writes = new (arena) ConflictSet::WriteRange[numWriteKeys];
|
||||
auto keys = set<std::string_view>(arena);
|
||||
while (int(keys.size()) < numWrites) {
|
||||
while (int(keys.size()) < numWriteKeys) {
|
||||
if (!arbitrary.hasEntropy()) {
|
||||
return true;
|
||||
}
|
||||
@@ -473,16 +473,31 @@ template <class ConflictSetImpl> struct TestDriver {
|
||||
keys.insert(std::string_view((const char *)begin, keyLen));
|
||||
}
|
||||
auto iter = keys.begin();
|
||||
for (int i = 0; i < numWrites; ++i) {
|
||||
writes[i].begin.p = (const uint8_t *)iter->data();
|
||||
writes[i].begin.len = iter->size();
|
||||
int numWrites = 0;
|
||||
for (int i = 0; i < numWriteKeys; ++i, ++numWrites) {
|
||||
writes[numWrites].begin.p = (const uint8_t *)iter->data();
|
||||
writes[numWrites].begin.len = iter->size();
|
||||
++iter;
|
||||
writes[i].end.len = 0;
|
||||
writes[i].writeVersion = v;
|
||||
if (i + 1 < numWriteKeys && arbitrary.bounded(2)) {
|
||||
++i;
|
||||
writes[numWrites].end.p = (const uint8_t *)iter->data();
|
||||
writes[numWrites].end.len = iter->size();
|
||||
++iter;
|
||||
} else {
|
||||
writes[numWrites].end.len = 0;
|
||||
}
|
||||
writes[numWrites].writeVersion = v;
|
||||
#if DEBUG_VERBOSE && !defined(NDEBUG)
|
||||
fprintf(stderr, "Write: {%s} -> %d\n",
|
||||
printable(writes[i].begin).c_str(),
|
||||
int(writes[i].writeVersion));
|
||||
if (writes[numWrites].end.len == 0) {
|
||||
fprintf(stderr, "Write: {%s} -> %d\n",
|
||||
printable(writes[numWrites].begin).c_str(),
|
||||
int(writes[numWrites].writeVersion));
|
||||
} else {
|
||||
fprintf(stderr, "Write: [%s, %s) -> %d\n",
|
||||
printable(writes[numWrites].begin).c_str(),
|
||||
printable(writes[numWrites].end).c_str(),
|
||||
int(writes[numWrites].writeVersion));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
assert(iter == keys.end());
|
||||
|
Reference in New Issue
Block a user