diff --git a/CMakeLists.txt b/CMakeLists.txt index 77494c3..4182d5e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -261,13 +261,14 @@ if(BUILD_TESTING) # scripted tests. Written manually to fill in anything libfuzzer couldn't # find. - add_executable(script_test ScriptTest.cpp) - target_compile_options(script_test PRIVATE ${TEST_FLAGS}) - target_link_libraries(script_test PRIVATE ${PROJECT_NAME}) - file(GLOB SCRIPT_TESTS ${CMAKE_SOURCE_DIR}/script_tests/*) + find_package(Python3 REQUIRED COMPONENTS Interpreter) + execute_process( + COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/test_conflict_set.py list + OUTPUT_VARIABLE SCRIPT_TESTS) foreach(TEST ${SCRIPT_TESTS}) - get_filename_component(name ${TEST} NAME) - add_test(NAME conflict_set_script_${name} COMMAND script_test ${TEST}) + add_test(NAME script_test_${TEST} + COMMAND ${Python3_EXECUTABLE} + ${CMAKE_SOURCE_DIR}/test_conflict_set.py test ${TEST}) endforeach() find_program(VALGRIND_EXE valgrind) diff --git a/ScriptTest.cpp b/ScriptTest.cpp deleted file mode 100644 index d9c9a3a..0000000 --- a/ScriptTest.cpp +++ /dev/null @@ -1,155 +0,0 @@ -#include "Internal.h" -#include - -#include -#include -#include -#include -#include -#include -#include - -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; - -inline StringView operator"" _v(const char *str, size_t size) { - return {reinterpret_cast(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 writeRanges; - std::vector readRanges; - std::vector results; - - for (uint8_t *end = (uint8_t *)memchr(begin, '\n', size); end != nullptr;) { - StringView line{begin, static_cast(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); - } -} diff --git a/script_tests/256-256.txt b/script_tests/256-256.txt deleted file mode 100644 index 2f50ba2..0000000 --- a/script_tests/256-256.txt +++ /dev/null @@ -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 diff --git a/script_tests/48-48.txt b/script_tests/48-48.txt deleted file mode 100644 index 9f3163a..0000000 --- a/script_tests/48-48.txt +++ /dev/null @@ -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 diff --git a/script_tests/downsize-256.txt b/script_tests/downsize-256.txt deleted file mode 100644 index 1e57296..0000000 --- a/script_tests/downsize-256.txt +++ /dev/null @@ -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 diff --git a/script_tests/downsize-48.txt b/script_tests/downsize-48.txt deleted file mode 100644 index e78f894..0000000 --- a/script_tests/downsize-48.txt +++ /dev/null @@ -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 diff --git a/script_tests/first.txt b/script_tests/first.txt deleted file mode 100644 index 3d3d6dc..0000000 --- a/script_tests/first.txt +++ /dev/null @@ -1,9 +0,0 @@ -begin aa -pointwrite -version 1 -addwrites -begin aa -end bb -version 0 -rangeread -check diff --git a/script_tests/inner-full-word.txt b/script_tests/inner-full-word.txt deleted file mode 100644 index f1319ad..0000000 --- a/script_tests/inner-full-word.txt +++ /dev/null @@ -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 diff --git a/script_tests/long-common-prefix.txt b/script_tests/long-common-prefix.txt deleted file mode 100644 index 0bbc74b..0000000 --- a/script_tests/long-common-prefix.txt +++ /dev/null @@ -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 diff --git a/test_conflict_set.py b/test_conflict_set.py index ef2aa9e..9e57d87 100644 --- a/test_conflict_set.py +++ b/test_conflict_set.py @@ -10,3 +10,31 @@ def test_conflict_set(): assert cs.check(read(0, key)) == [Result.CONFLICT] cs.setOldestVersion(1) 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]()