Check ConflictSet preconditions in script_test
All checks were successful
Tests / Clang total: 825, passed: 825
Clang |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / Release [gcc] total: 825, passed: 825
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / Release [gcc,aarch64] total: 824, passed: 824
Tests / Coverage total: 823, passed: 823
weaselab/conflict-set/pipeline/head This commit looks good

This commit is contained in:
2024-03-19 10:31:04 -07:00
parent be8ac879c5
commit edd7bcaa1e
6 changed files with 44 additions and 10 deletions

View File

@@ -35,6 +35,17 @@ operator<=>(const std::span<const uint8_t> &lhs,
return lhs.size() <=> rhs.size(); return lhs.size() <=> rhs.size();
} }
[[nodiscard]] inline auto operator<=>(const std::span<const uint8_t> &lhs,
const ConflictSet::Key &rhs) noexcept {
int cl = std::min<int>(lhs.size(), rhs.len);
if (cl > 0) {
if (auto c = memcmp(lhs.data(), rhs.p, cl) <=> 0; c != 0) {
return c;
}
}
return lhs.size() <=> size_t(rhs.len);
}
// This header contains code that we want to reuse outside of ConflictSet.cpp or // 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. // want to exclude from coverage since it's only testing related.

View File

@@ -51,6 +51,8 @@ int main(int argc, const char **argv) {
StringView b; StringView b;
StringView e; StringView e;
int64_t v = 0; int64_t v = 0;
int64_t lastWriteVersion = 0;
int64_t lastOldestVersion = 0;
std::vector<ConflictSet::WriteRange> writeRanges; std::vector<ConflictSet::WriteRange> writeRanges;
std::vector<ConflictSet::ReadRange> readRanges; std::vector<ConflictSet::ReadRange> readRanges;
std::vector<ConflictSet::Result> results; std::vector<ConflictSet::Result> results;
@@ -84,7 +86,9 @@ int main(int argc, const char **argv) {
readRanges.push_back(r); readRanges.push_back(r);
} else if (line.starts_with("pointwrite"_v)) { } else if (line.starts_with("pointwrite"_v)) {
printf("pointwrite\n"); printf("pointwrite\n");
// TODO check sorted assert(writeRanges.empty() ||
(writeRanges.back().end.len == 0 ? writeRanges.back().begin
: writeRanges.back().end) < b);
ConflictSet::WriteRange w; ConflictSet::WriteRange w;
w.begin.p = b.data(); w.begin.p = b.data();
w.begin.len = b.size(); w.begin.len = b.size();
@@ -101,7 +105,10 @@ int main(int argc, const char **argv) {
readRanges.push_back(r); readRanges.push_back(r);
} else if (line.starts_with("rangewrite"_v)) { } else if (line.starts_with("rangewrite"_v)) {
printf("rangewrite\n"); printf("rangewrite\n");
// TODO check sorted assert(b < e);
assert(writeRanges.empty() ||
(writeRanges.back().end.len == 0 ? writeRanges.back().begin
: writeRanges.back().end) < b);
ConflictSet::WriteRange w; ConflictSet::WriteRange w;
w.begin.p = b.data(); w.begin.p = b.data();
w.begin.len = b.size(); w.begin.len = b.size();
@@ -125,11 +132,15 @@ int main(int argc, const char **argv) {
readRanges = {}; readRanges = {};
} else if (line.starts_with("addwrites"_v)) { } else if (line.starts_with("addwrites"_v)) {
printf("addwrites\n"); printf("addwrites\n");
assert(v > lastWriteVersion);
lastWriteVersion = v;
cs.addWrites(writeRanges.data(), writeRanges.size(), v); cs.addWrites(writeRanges.data(), writeRanges.size(), v);
ref.addWrites(writeRanges.data(), writeRanges.size(), v); ref.addWrites(writeRanges.data(), writeRanges.size(), v);
writeRanges = {}; writeRanges = {};
} else if (line.starts_with("setoldest"_v)) { } else if (line.starts_with("setoldest"_v)) {
printf("setoldest\n"); printf("setoldest\n");
assert(v > lastOldestVersion);
lastOldestVersion = v;
cs.setOldestVersion(v); cs.setOldestVersion(v);
ref.setOldestVersion(v); ref.setOldestVersion(v);
} else if (line.empty() || line.starts_with(";"_v)) { } else if (line.empty() || line.starts_with(";"_v)) {

View File

@@ -160,6 +160,8 @@ pointwrite
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz
pointwrite pointwrite
version 1
addwrites
; Lower its partial key length ; Lower its partial key length
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

View File

@@ -1,5 +1,5 @@
; Create a node with a large partial key capacity ; Create a node with a large partial key capacity
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0
pointwrite pointwrite
; Make it a Node48 ; Make it a Node48
@@ -53,22 +53,20 @@ pointwrite
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaq begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaq
pointwrite pointwrite
version 2
addwrites
; Lower its partial key length ; Lower its partial key length
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
pointwrite pointwrite
version 2 version 3
addwrites addwrites
; Create work for setoldest ; Create work for setoldest
begin x begin x
end y end y
rangewrite
version 3
addwrites
rangewrite rangewrite
version 4 version 4
addwrites addwrites
@@ -141,5 +139,9 @@ rangewrite
version 21 version 21
addwrites addwrites
rangewrite
version 22
addwrites
version 1 version 1
setoldest setoldest

View File

@@ -108,13 +108,17 @@ begin 00y
pointwrite pointwrite
begin 00z begin 00z
pointwrite pointwrite
version 1
addwrites
begin 0 begin 0
end 000 end 000
rangewrite rangewrite
version 2
addwrites
begin begin
end 00 end 00
rangewrite rangewrite
version 3
addwrites addwrites

View File

@@ -56,13 +56,17 @@ begin 00y
pointwrite pointwrite
begin 00z begin 00z
pointwrite pointwrite
version 1
addwrites
begin 0 begin 0
end 000 end 000
rangewrite rangewrite
version 2
addwrites
begin begin
end 00 end 00
rangewrite rangewrite
version 3
addwrites addwrites