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
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:
11
Internal.h
11
Internal.h
@@ -35,6 +35,17 @@ operator<=>(const std::span<const uint8_t> &lhs,
|
||||
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
|
||||
// want to exclude from coverage since it's only testing related.
|
||||
|
||||
|
@@ -51,6 +51,8 @@ int main(int argc, const char **argv) {
|
||||
StringView b;
|
||||
StringView e;
|
||||
int64_t v = 0;
|
||||
int64_t lastWriteVersion = 0;
|
||||
int64_t lastOldestVersion = 0;
|
||||
std::vector<ConflictSet::WriteRange> writeRanges;
|
||||
std::vector<ConflictSet::ReadRange> readRanges;
|
||||
std::vector<ConflictSet::Result> results;
|
||||
@@ -84,7 +86,9 @@ int main(int argc, const char **argv) {
|
||||
readRanges.push_back(r);
|
||||
} else if (line.starts_with("pointwrite"_v)) {
|
||||
printf("pointwrite\n");
|
||||
// TODO check sorted
|
||||
assert(writeRanges.empty() ||
|
||||
(writeRanges.back().end.len == 0 ? writeRanges.back().begin
|
||||
: writeRanges.back().end) < b);
|
||||
ConflictSet::WriteRange w;
|
||||
w.begin.p = b.data();
|
||||
w.begin.len = b.size();
|
||||
@@ -101,7 +105,10 @@ int main(int argc, const char **argv) {
|
||||
readRanges.push_back(r);
|
||||
} else if (line.starts_with("rangewrite"_v)) {
|
||||
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;
|
||||
w.begin.p = b.data();
|
||||
w.begin.len = b.size();
|
||||
@@ -125,11 +132,15 @@ int main(int argc, const char **argv) {
|
||||
readRanges = {};
|
||||
} else if (line.starts_with("addwrites"_v)) {
|
||||
printf("addwrites\n");
|
||||
assert(v > lastWriteVersion);
|
||||
lastWriteVersion = v;
|
||||
cs.addWrites(writeRanges.data(), writeRanges.size(), v);
|
||||
ref.addWrites(writeRanges.data(), writeRanges.size(), v);
|
||||
writeRanges = {};
|
||||
} else if (line.starts_with("setoldest"_v)) {
|
||||
printf("setoldest\n");
|
||||
assert(v > lastOldestVersion);
|
||||
lastOldestVersion = v;
|
||||
cs.setOldestVersion(v);
|
||||
ref.setOldestVersion(v);
|
||||
} else if (line.empty() || line.starts_with(";"_v)) {
|
||||
|
@@ -160,6 +160,8 @@ pointwrite
|
||||
|
||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz
|
||||
pointwrite
|
||||
version 1
|
||||
addwrites
|
||||
|
||||
; Lower its partial key length
|
||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
|
@@ -1,5 +1,5 @@
|
||||
; Create a node with a large partial key capacity
|
||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0
|
||||
pointwrite
|
||||
|
||||
; Make it a Node48
|
||||
@@ -53,22 +53,20 @@ pointwrite
|
||||
|
||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaq
|
||||
pointwrite
|
||||
version 2
|
||||
addwrites
|
||||
|
||||
; Lower its partial key length
|
||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
pointwrite
|
||||
|
||||
version 2
|
||||
version 3
|
||||
addwrites
|
||||
|
||||
; Create work for setoldest
|
||||
|
||||
begin x
|
||||
end y
|
||||
rangewrite
|
||||
version 3
|
||||
addwrites
|
||||
|
||||
rangewrite
|
||||
version 4
|
||||
addwrites
|
||||
@@ -141,5 +139,9 @@ rangewrite
|
||||
version 21
|
||||
addwrites
|
||||
|
||||
rangewrite
|
||||
version 22
|
||||
addwrites
|
||||
|
||||
version 1
|
||||
setoldest
|
||||
|
@@ -108,13 +108,17 @@ begin 00y
|
||||
pointwrite
|
||||
begin 00z
|
||||
pointwrite
|
||||
version 1
|
||||
addwrites
|
||||
|
||||
begin 0
|
||||
end 000
|
||||
rangewrite
|
||||
version 2
|
||||
addwrites
|
||||
|
||||
begin
|
||||
end 00
|
||||
rangewrite
|
||||
|
||||
version 3
|
||||
addwrites
|
||||
|
@@ -56,13 +56,17 @@ begin 00y
|
||||
pointwrite
|
||||
begin 00z
|
||||
pointwrite
|
||||
version 1
|
||||
addwrites
|
||||
|
||||
begin 0
|
||||
end 000
|
||||
rangewrite
|
||||
version 2
|
||||
addwrites
|
||||
|
||||
begin
|
||||
end 00
|
||||
rangewrite
|
||||
|
||||
version 3
|
||||
addwrites
|
||||
|
Reference in New Issue
Block a user