aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@online.no>2024-02-16 18:21:41 +0100
committerTor Egge <Tor.Egge@online.no>2024-02-16 18:21:41 +0100
commit9a538ab59ec796398b677e2f20ce6a14e699bfe4 (patch)
treeecb98da177cad9c3e965542d4858105447e13a3c
parent4800b3046bf587f1b14ec9fcd0d02b55e4401088 (diff)
Extend predicate index unit test to cover case where the copies of
frozen roots in simple index saver are needed.
-rw-r--r--searchlib/src/tests/predicate/predicate_index_test.cpp28
1 files changed, 25 insertions, 3 deletions
diff --git a/searchlib/src/tests/predicate/predicate_index_test.cpp b/searchlib/src/tests/predicate/predicate_index_test.cpp
index 31098feddbc..461fa46d4da 100644
--- a/searchlib/src/tests/predicate/predicate_index_test.cpp
+++ b/searchlib/src/tests/predicate/predicate_index_test.cpp
@@ -418,19 +418,41 @@ TEST("require that hold lists are attempted emptied on destruction") {
// No assert on index destruction.
}
-TEST("require that predicate index saver protected by a generation guard observes a snapshot of the predicate index")
+void verify_snapshot_property(uint32_t num_docs)
{
PredicateIndex index(generation_holder, dummy_provider, simple_index_config, 10);
- indexFeature(index, doc_id, min_feature, {{hash, interval}}, {{hash2, bounds}});
+ for (uint32_t i = 0; i < num_docs; ++i) {
+ indexFeature(index, doc_id + i, min_feature, {{hash, interval}}, {{hash2, bounds}});
+ }
auto saver1 = make_guarded_saver(index);
auto buf1 = saver1.save();
- index.removeDocument(doc_id);
+ for (uint32_t i = 0; i < num_docs; ++i) {
+ index.removeDocument(doc_id + i);
+ }
index.commit();
auto saver2 = make_guarded_saver(index);
EXPECT_TRUE(equal_buffers(buf1, saver1.save()));
EXPECT_FALSE(equal_buffers(buf1, saver2.save()));
}
+TEST("require that predicate index saver protected by a generation guard observes a snapshot of the predicate index")
+{
+ /*
+ * short array in simple index btree posting list
+ */
+ TEST_DO(verify_snapshot_property(1));
+ /*
+ * short array in simple index btree posting list
+ */
+ TEST_DO(verify_snapshot_property(8));
+ /*
+ * BTree in simple index btree posting list.
+ * Needs copy of frozen roots in simple index saver to observe snapshot
+ * of predicate index.
+ */
+ TEST_DO(verify_snapshot_property(9));
+}
+
} // namespace
TEST_MAIN() { TEST_RUN_ALL(); }