Interleave calls for two conflict sets in tests
This commit is contained in:
@@ -3928,7 +3928,7 @@ checkMaxVersion(Node *root, Node *node, InternalVersionT oldestVersion,
|
||||
bool &success, ConflictSet::Impl *impl) {
|
||||
checkVersionsGeqOldestExtant(node,
|
||||
InternalVersionT(impl->oldestExtantVersion));
|
||||
auto expected = InternalVersionT::zero;
|
||||
auto expected = oldestVersion;
|
||||
if (node->entryPresent) {
|
||||
expected = std::max(expected, node->entry.pointVersion);
|
||||
}
|
||||
@@ -4151,26 +4151,42 @@ int main(void) { printTree(); }
|
||||
|
||||
#ifdef ENABLE_FUZZ
|
||||
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
|
||||
TestDriver<ConflictSet::Impl> driver{data, size};
|
||||
Arbitrary arbitrary({data, size});
|
||||
TestDriver<ConflictSet::Impl> driver1{arbitrary};
|
||||
TestDriver<ConflictSet::Impl> driver2{arbitrary};
|
||||
|
||||
bool done1 = false;
|
||||
bool done2 = false;
|
||||
for (;;) {
|
||||
bool done = driver.next();
|
||||
if (!driver.ok) {
|
||||
debugPrintDot(stdout, driver.cs.root, &driver.cs);
|
||||
fflush(stdout);
|
||||
abort();
|
||||
if (!done1) {
|
||||
done1 = driver1.next();
|
||||
if (!driver1.ok) {
|
||||
debugPrintDot(stdout, driver1.cs.root, &driver1.cs);
|
||||
fflush(stdout);
|
||||
abort();
|
||||
}
|
||||
if (!checkCorrectness(driver1.cs.root, driver1.cs.oldestVersion,
|
||||
&driver1.cs)) {
|
||||
debugPrintDot(stdout, driver1.cs.root, &driver1.cs);
|
||||
fflush(stdout);
|
||||
abort();
|
||||
}
|
||||
}
|
||||
#if DEBUG_VERBOSE && !defined(NDEBUG)
|
||||
fprintf(stderr, "Check correctness\n");
|
||||
#endif
|
||||
bool success =
|
||||
checkCorrectness(driver.cs.root, driver.cs.oldestVersion, &driver.cs);
|
||||
if (!success) {
|
||||
debugPrintDot(stdout, driver.cs.root, &driver.cs);
|
||||
fflush(stdout);
|
||||
abort();
|
||||
if (!done2) {
|
||||
done2 = driver2.next();
|
||||
if (!driver2.ok) {
|
||||
debugPrintDot(stdout, driver2.cs.root, &driver2.cs);
|
||||
fflush(stdout);
|
||||
abort();
|
||||
}
|
||||
if (!checkCorrectness(driver2.cs.root, driver2.cs.oldestVersion,
|
||||
&driver2.cs)) {
|
||||
debugPrintDot(stdout, driver2.cs.root, &driver2.cs);
|
||||
fflush(stdout);
|
||||
abort();
|
||||
}
|
||||
}
|
||||
if (done) {
|
||||
if (done1 && done2) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user