@@ -261,13 +261,14 @@ if(BUILD_TESTING)
|
|||||||
|
|
||||||
# scripted tests. Written manually to fill in anything libfuzzer couldn't
|
# scripted tests. Written manually to fill in anything libfuzzer couldn't
|
||||||
# find.
|
# find.
|
||||||
add_executable(script_test ScriptTest.cpp)
|
find_package(Python3 REQUIRED COMPONENTS Interpreter)
|
||||||
target_compile_options(script_test PRIVATE ${TEST_FLAGS})
|
execute_process(
|
||||||
target_link_libraries(script_test PRIVATE ${PROJECT_NAME})
|
COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/test_conflict_set.py list
|
||||||
file(GLOB SCRIPT_TESTS ${CMAKE_SOURCE_DIR}/script_tests/*)
|
OUTPUT_VARIABLE SCRIPT_TESTS)
|
||||||
foreach(TEST ${SCRIPT_TESTS})
|
foreach(TEST ${SCRIPT_TESTS})
|
||||||
get_filename_component(name ${TEST} NAME)
|
add_test(NAME script_test_${TEST}
|
||||||
add_test(NAME conflict_set_script_${name} COMMAND script_test ${TEST})
|
COMMAND ${Python3_EXECUTABLE}
|
||||||
|
${CMAKE_SOURCE_DIR}/test_conflict_set.py test ${TEST})
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
find_program(VALGRIND_EXE valgrind)
|
find_program(VALGRIND_EXE valgrind)
|
||||||
|
155
ScriptTest.cpp
155
ScriptTest.cpp
@@ -1,155 +0,0 @@
|
|||||||
#include "Internal.h"
|
|
||||||
#include <ConflictSet.h>
|
|
||||||
|
|
||||||
#include <chrono>
|
|
||||||
#include <cstring>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <sys/mman.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
inline size_t getPageSize() {
|
|
||||||
static size_t kPageSize = sysconf(_SC_PAGESIZE);
|
|
||||||
return kPageSize;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Helper for rounding up to page size (or some other alignment)
|
|
||||||
constexpr inline size_t rightAlign(size_t offset, size_t alignment) {
|
|
||||||
return offset % alignment == 0 ? offset
|
|
||||||
: ((offset / alignment) + 1) * alignment;
|
|
||||||
}
|
|
||||||
|
|
||||||
using StringView = std::basic_string_view<uint8_t>;
|
|
||||||
|
|
||||||
inline StringView operator"" _v(const char *str, size_t size) {
|
|
||||||
return {reinterpret_cast<const uint8_t *>(str), size};
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(int argc, const char **argv) {
|
|
||||||
|
|
||||||
ConflictSet cs{0};
|
|
||||||
ReferenceImpl ref{0};
|
|
||||||
|
|
||||||
for (int i = 1; i < argc; ++i) {
|
|
||||||
int fd = open(argv[i], O_RDONLY);
|
|
||||||
struct stat st;
|
|
||||||
if (fstat(fd, &st) == -1) {
|
|
||||||
int err = errno;
|
|
||||||
fprintf(stderr, "stat error %s - %s\n", argv[i], strerror(err));
|
|
||||||
fflush(stderr);
|
|
||||||
abort();
|
|
||||||
}
|
|
||||||
|
|
||||||
int64_t size = rightAlign(st.st_size, getPageSize());
|
|
||||||
const uint8_t *begin =
|
|
||||||
(uint8_t *)mmap(0, size, PROT_READ, MAP_PRIVATE, fd, 0);
|
|
||||||
madvise((void *)begin, size, MADV_SEQUENTIAL);
|
|
||||||
auto *const mapOriginal = begin;
|
|
||||||
const auto sizeOriginal = size;
|
|
||||||
|
|
||||||
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;
|
|
||||||
|
|
||||||
for (uint8_t *end = (uint8_t *)memchr(begin, '\n', size); end != nullptr;) {
|
|
||||||
StringView line{begin, static_cast<size_t>(end - begin)};
|
|
||||||
size -= end - begin + 1;
|
|
||||||
begin = end + 1;
|
|
||||||
end = (uint8_t *)memchr(begin, '\n', size);
|
|
||||||
|
|
||||||
if (line.starts_with("begin"_v)) {
|
|
||||||
b = line.substr("begin "_v.size(), line.size());
|
|
||||||
printf("b <- %.*s\n", int(b.size()), b.data());
|
|
||||||
} else if (line.starts_with("end"_v)) {
|
|
||||||
e = line.substr("end "_v.size(), line.size());
|
|
||||||
printf("e <- %.*s\n", int(e.size()), e.data());
|
|
||||||
} else if (line.starts_with("version"_v)) {
|
|
||||||
line = line.substr("version "_v.size(), line.size());
|
|
||||||
v = 0;
|
|
||||||
for (auto c : line) {
|
|
||||||
v = v * 10 + int(c) - int('0');
|
|
||||||
}
|
|
||||||
printf("v <- %" PRId64 "\n", v);
|
|
||||||
} else if (line.starts_with("pointread"_v)) {
|
|
||||||
printf("pointread\n");
|
|
||||||
ConflictSet::ReadRange r;
|
|
||||||
r.begin.p = b.data();
|
|
||||||
r.begin.len = b.size();
|
|
||||||
r.end.len = 0;
|
|
||||||
r.readVersion = v;
|
|
||||||
readRanges.push_back(r);
|
|
||||||
} else if (line.starts_with("pointwrite"_v)) {
|
|
||||||
printf("pointwrite\n");
|
|
||||||
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();
|
|
||||||
w.end.len = 0;
|
|
||||||
writeRanges.push_back(w);
|
|
||||||
} else if (line.starts_with("rangeread"_v)) {
|
|
||||||
printf("rangeread\n");
|
|
||||||
ConflictSet::ReadRange r;
|
|
||||||
r.begin.p = b.data();
|
|
||||||
r.begin.len = b.size();
|
|
||||||
r.end.p = e.data();
|
|
||||||
r.end.len = e.size();
|
|
||||||
r.readVersion = v;
|
|
||||||
readRanges.push_back(r);
|
|
||||||
} else if (line.starts_with("rangewrite"_v)) {
|
|
||||||
printf("rangewrite\n");
|
|
||||||
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();
|
|
||||||
w.end.p = e.data();
|
|
||||||
w.end.len = e.size();
|
|
||||||
writeRanges.push_back(w);
|
|
||||||
} else if (line.starts_with("check"_v)) {
|
|
||||||
printf("check\n");
|
|
||||||
Arena arena;
|
|
||||||
auto *expected = new (arena) ConflictSet::Result[readRanges.size()];
|
|
||||||
auto *actual = new (arena) ConflictSet::Result[readRanges.size()];
|
|
||||||
ref.check(readRanges.data(), expected, readRanges.size());
|
|
||||||
cs.check(readRanges.data(), actual, readRanges.size());
|
|
||||||
for (int i = 0; i < int(readRanges.size()); ++i) {
|
|
||||||
if (expected[i] != actual[i]) {
|
|
||||||
fprintf(stderr, "Expected %s, got %s at index %d\n",
|
|
||||||
resultToStr(expected[i]), resultToStr(actual[i]), i);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
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)) {
|
|
||||||
// skip
|
|
||||||
} else {
|
|
||||||
printf("Unrecognized line: %.*s\n", int(line.size()), line.data());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
munmap((void *)mapOriginal, sizeOriginal);
|
|
||||||
close(fd);
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,262 +0,0 @@
|
|||||||
|
|
||||||
; Create a node with a large partial key capacity
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
; Make it a Node256
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaA
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaB
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaC
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaD
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaE
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaF
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaG
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaH
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaI
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJ
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaK
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaL
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaM
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaN
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaO
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaP
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQ
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaR
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaS
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaT
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaU
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaV
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaW
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaX
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaY
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZ
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaad
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaae
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaag
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaah
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaai
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaj
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaak
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaam
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaan
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaao
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaap
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaq
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaat
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaau
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaav
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaw
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaax
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaay
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz
|
|
||||||
pointwrite
|
|
||||||
version 1
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
; Lower its partial key length
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
version 2
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
; Create work for setoldest
|
|
||||||
|
|
||||||
begin x
|
|
||||||
end y
|
|
||||||
rangewrite
|
|
||||||
version 3
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 4
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 5
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 6
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 7
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 8
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 9
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 10
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 11
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 12
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 13
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 14
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 15
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 16
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 17
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 18
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 19
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 20
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 21
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 22
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 23
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
version 1
|
|
||||||
setoldest
|
|
@@ -1,147 +0,0 @@
|
|||||||
; Create a node with a large partial key capacity
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
; Make it a Node48
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaad
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaae
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaag
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaah
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaai
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaj
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaak
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaam
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaan
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaao
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaap
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaq
|
|
||||||
pointwrite
|
|
||||||
version 2
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
; Lower its partial key length
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
version 3
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
; Create work for setoldest
|
|
||||||
|
|
||||||
begin x
|
|
||||||
end y
|
|
||||||
rangewrite
|
|
||||||
version 4
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 5
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 6
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 7
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 8
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 9
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 10
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 11
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 12
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 13
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 14
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 15
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 16
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 17
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 18
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 19
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 20
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 21
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
rangewrite
|
|
||||||
version 22
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
version 1
|
|
||||||
setoldest
|
|
@@ -1,124 +0,0 @@
|
|||||||
begin
|
|
||||||
pointwrite
|
|
||||||
begin 0
|
|
||||||
pointwrite
|
|
||||||
begin 00
|
|
||||||
pointwrite
|
|
||||||
begin 00A
|
|
||||||
pointwrite
|
|
||||||
begin 00B
|
|
||||||
pointwrite
|
|
||||||
begin 00C
|
|
||||||
pointwrite
|
|
||||||
begin 00D
|
|
||||||
pointwrite
|
|
||||||
begin 00E
|
|
||||||
pointwrite
|
|
||||||
begin 00F
|
|
||||||
pointwrite
|
|
||||||
begin 00G
|
|
||||||
pointwrite
|
|
||||||
begin 00H
|
|
||||||
pointwrite
|
|
||||||
begin 00I
|
|
||||||
pointwrite
|
|
||||||
begin 00J
|
|
||||||
pointwrite
|
|
||||||
begin 00K
|
|
||||||
pointwrite
|
|
||||||
begin 00L
|
|
||||||
pointwrite
|
|
||||||
begin 00M
|
|
||||||
pointwrite
|
|
||||||
begin 00N
|
|
||||||
pointwrite
|
|
||||||
begin 00O
|
|
||||||
pointwrite
|
|
||||||
begin 00P
|
|
||||||
pointwrite
|
|
||||||
begin 00Q
|
|
||||||
pointwrite
|
|
||||||
begin 00R
|
|
||||||
pointwrite
|
|
||||||
begin 00S
|
|
||||||
pointwrite
|
|
||||||
begin 00T
|
|
||||||
pointwrite
|
|
||||||
begin 00U
|
|
||||||
pointwrite
|
|
||||||
begin 00V
|
|
||||||
pointwrite
|
|
||||||
begin 00W
|
|
||||||
pointwrite
|
|
||||||
begin 00X
|
|
||||||
pointwrite
|
|
||||||
begin 00Y
|
|
||||||
pointwrite
|
|
||||||
begin 00Z
|
|
||||||
pointwrite
|
|
||||||
begin 00a
|
|
||||||
pointwrite
|
|
||||||
begin 00b
|
|
||||||
pointwrite
|
|
||||||
begin 00c
|
|
||||||
pointwrite
|
|
||||||
begin 00d
|
|
||||||
pointwrite
|
|
||||||
begin 00e
|
|
||||||
pointwrite
|
|
||||||
begin 00f
|
|
||||||
pointwrite
|
|
||||||
begin 00g
|
|
||||||
pointwrite
|
|
||||||
begin 00h
|
|
||||||
pointwrite
|
|
||||||
begin 00i
|
|
||||||
pointwrite
|
|
||||||
begin 00j
|
|
||||||
pointwrite
|
|
||||||
begin 00k
|
|
||||||
pointwrite
|
|
||||||
begin 00l
|
|
||||||
pointwrite
|
|
||||||
begin 00m
|
|
||||||
pointwrite
|
|
||||||
begin 00n
|
|
||||||
pointwrite
|
|
||||||
begin 00o
|
|
||||||
pointwrite
|
|
||||||
begin 00p
|
|
||||||
pointwrite
|
|
||||||
begin 00q
|
|
||||||
pointwrite
|
|
||||||
begin 00r
|
|
||||||
pointwrite
|
|
||||||
begin 00s
|
|
||||||
pointwrite
|
|
||||||
begin 00t
|
|
||||||
pointwrite
|
|
||||||
begin 00u
|
|
||||||
pointwrite
|
|
||||||
begin 00v
|
|
||||||
pointwrite
|
|
||||||
begin 00w
|
|
||||||
pointwrite
|
|
||||||
begin 00x
|
|
||||||
pointwrite
|
|
||||||
begin 00y
|
|
||||||
pointwrite
|
|
||||||
begin 00z
|
|
||||||
pointwrite
|
|
||||||
version 1
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
begin 0
|
|
||||||
end 000
|
|
||||||
rangewrite
|
|
||||||
version 2
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
begin
|
|
||||||
end 00
|
|
||||||
rangewrite
|
|
||||||
version 3
|
|
||||||
addwrites
|
|
@@ -1,72 +0,0 @@
|
|||||||
begin
|
|
||||||
pointwrite
|
|
||||||
begin 0
|
|
||||||
pointwrite
|
|
||||||
begin 00
|
|
||||||
pointwrite
|
|
||||||
begin 00a
|
|
||||||
pointwrite
|
|
||||||
begin 00b
|
|
||||||
pointwrite
|
|
||||||
begin 00c
|
|
||||||
pointwrite
|
|
||||||
begin 00d
|
|
||||||
pointwrite
|
|
||||||
begin 00e
|
|
||||||
pointwrite
|
|
||||||
begin 00f
|
|
||||||
pointwrite
|
|
||||||
begin 00g
|
|
||||||
pointwrite
|
|
||||||
begin 00h
|
|
||||||
pointwrite
|
|
||||||
begin 00i
|
|
||||||
pointwrite
|
|
||||||
begin 00j
|
|
||||||
pointwrite
|
|
||||||
begin 00k
|
|
||||||
pointwrite
|
|
||||||
begin 00l
|
|
||||||
pointwrite
|
|
||||||
begin 00m
|
|
||||||
pointwrite
|
|
||||||
begin 00n
|
|
||||||
pointwrite
|
|
||||||
begin 00o
|
|
||||||
pointwrite
|
|
||||||
begin 00p
|
|
||||||
pointwrite
|
|
||||||
begin 00q
|
|
||||||
pointwrite
|
|
||||||
begin 00r
|
|
||||||
pointwrite
|
|
||||||
begin 00s
|
|
||||||
pointwrite
|
|
||||||
begin 00t
|
|
||||||
pointwrite
|
|
||||||
begin 00u
|
|
||||||
pointwrite
|
|
||||||
begin 00v
|
|
||||||
pointwrite
|
|
||||||
begin 00w
|
|
||||||
pointwrite
|
|
||||||
begin 00x
|
|
||||||
pointwrite
|
|
||||||
begin 00y
|
|
||||||
pointwrite
|
|
||||||
begin 00z
|
|
||||||
pointwrite
|
|
||||||
version 1
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
begin 0
|
|
||||||
end 000
|
|
||||||
rangewrite
|
|
||||||
version 2
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
begin
|
|
||||||
end 00
|
|
||||||
rangewrite
|
|
||||||
version 3
|
|
||||||
addwrites
|
|
@@ -1,9 +0,0 @@
|
|||||||
begin aa
|
|
||||||
pointwrite
|
|
||||||
version 1
|
|
||||||
addwrites
|
|
||||||
begin aa
|
|
||||||
end bb
|
|
||||||
version 0
|
|
||||||
rangeread
|
|
||||||
check
|
|
@@ -1,212 +0,0 @@
|
|||||||
; insert \x3fa at version 1
|
|
||||||
begin ?a
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
; insert \x81a at version 1
|
|
||||||
begin a
|
|
||||||
pointwrite
|
|
||||||
version 1
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
; insert [\x40-\x80]a at version 2
|
|
||||||
begin @a
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin Aa
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin Ba
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin Ca
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin Da
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin Ea
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin Fa
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin Ga
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin Ha
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin Ia
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin Ja
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin Ka
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin La
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin Ma
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin Na
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin Oa
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin Pa
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin Qa
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin Ra
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin Sa
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin Ta
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin Ua
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin Va
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin Wa
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin Xa
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin Ya
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin Za
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin [a
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin \a
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin ]a
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin ^a
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin _a
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin `a
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin aa
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin ba
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin ca
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin da
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin ea
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin fa
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin ga
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin ha
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin ia
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin ja
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin ka
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin la
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin ma
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin na
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin oa
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin pa
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin qa
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin ra
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin sa
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin ta
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin ua
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin va
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin wa
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin xa
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin ya
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin za
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin {a
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin |a
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin }a
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin ~a
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
begin a
|
|
||||||
pointwrite
|
|
||||||
|
|
||||||
version 2
|
|
||||||
addwrites
|
|
||||||
|
|
||||||
; readrange a superset at version 1
|
|
||||||
begin !
|
|
||||||
end
|
|
||||||
version 1
|
|
||||||
rangeread
|
|
||||||
check
|
|
@@ -1,19 +0,0 @@
|
|||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
|
||||||
end aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab
|
|
||||||
rangeread
|
|
||||||
check
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
|
||||||
end aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaaaaaaab
|
|
||||||
rangeread
|
|
||||||
check
|
|
||||||
|
|
||||||
begin aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
|
||||||
end aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaa
|
|
||||||
rangeread
|
|
||||||
check
|
|
||||||
|
|
||||||
begin aaaaaaaaaa
|
|
||||||
end aaaaaaabaa
|
|
||||||
rangeread
|
|
||||||
check
|
|
@@ -10,3 +10,31 @@ def test_conflict_set():
|
|||||||
assert cs.check(read(0, key)) == [Result.CONFLICT]
|
assert cs.check(read(0, key)) == [Result.CONFLICT]
|
||||||
cs.setOldestVersion(1)
|
cs.setOldestVersion(1)
|
||||||
assert cs.check(read(0, key)) == [Result.TOO_OLD]
|
assert cs.check(read(0, key)) == [Result.TOO_OLD]
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
# budget "pytest" for ctest integration without pulling in a dependency. You can of course still use pytest in local development.
|
||||||
|
import argparse
|
||||||
|
import inspect
|
||||||
|
import sys
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
subparsers = parser.add_subparsers(dest="command")
|
||||||
|
|
||||||
|
list_parser = subparsers.add_parser("list")
|
||||||
|
test_parser = subparsers.add_parser("test")
|
||||||
|
test_parser.add_argument("test")
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
if args.command == "list":
|
||||||
|
sys.stdout.write(
|
||||||
|
";".join(
|
||||||
|
name[5:]
|
||||||
|
for name in dir()
|
||||||
|
if name.startswith("test_")
|
||||||
|
and inspect.isfunction(getattr(sys.modules[__name__], name))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
elif args.command == "test":
|
||||||
|
globals()["test_" + args.test]()
|
||||||
|
Reference in New Issue
Block a user