aboutsummaryrefslogtreecommitdiffstats
path: root/searchcore/src/tests/proton/documentmetastore/lid_allocator/lid_allocator_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'searchcore/src/tests/proton/documentmetastore/lid_allocator/lid_allocator_test.cpp')
-rw-r--r--searchcore/src/tests/proton/documentmetastore/lid_allocator/lid_allocator_test.cpp23
1 files changed, 19 insertions, 4 deletions
diff --git a/searchcore/src/tests/proton/documentmetastore/lid_allocator/lid_allocator_test.cpp b/searchcore/src/tests/proton/documentmetastore/lid_allocator/lid_allocator_test.cpp
index b2fa8675835..e136e491f05 100644
--- a/searchcore/src/tests/proton/documentmetastore/lid_allocator/lid_allocator_test.cpp
+++ b/searchcore/src/tests/proton/documentmetastore/lid_allocator/lid_allocator_test.cpp
@@ -102,10 +102,15 @@ protected:
}
return result;
}
-
- SimpleResult get_active_lids_in_search_iterator(uint32_t docid_limit, bool filter) {
+
+ Blueprint::UP make_whitelist_blueprint(uint32_t docid_limit) {
auto blueprint = _allocator.createWhiteListBlueprint();
blueprint->setDocIdLimit(docid_limit);
+ return blueprint;
+ }
+
+ SimpleResult get_active_lids_in_search_iterator(uint32_t docid_limit, bool filter) {
+ auto blueprint = make_whitelist_blueprint(docid_limit);
std::unique_ptr<SearchIterator> iterator;
MatchData md(MatchData::params());
if (filter) {
@@ -119,8 +124,7 @@ protected:
}
Trinary filter_search_iterator_matches_any(uint32_t docid_limit) {
- auto blueprint = _allocator.createWhiteListBlueprint();
- blueprint->setDocIdLimit(docid_limit);
+ auto blueprint = make_whitelist_blueprint(docid_limit);
auto iterator = blueprint->createFilterSearch(true, Blueprint::FilterConstraint::UPPER_BOUND);
return iterator->matches_any();
}
@@ -170,6 +174,17 @@ TEST_F(LidAllocatorTest, filter_search_iterator_matches_all_when_all_lids_are_ac
EXPECT_EQ(SimpleResult({1, 2, 3, 4}), get_active_lids_in_search_iterator(6, false));
}
+TEST_F(LidAllocatorTest, whitelist_blueprint_can_maximize_relative_estimate)
+{
+ register_lids({ 1, 2, 3, 4 });
+ activate_lids({ 1, 2, 3, 4 }, true);
+ // the number of hits are overestimated based on the number of
+ // documents that could be active (100 in this test fixture)
+ EXPECT_EQ(make_whitelist_blueprint(1000)->estimate(), 0.1);
+ EXPECT_EQ(make_whitelist_blueprint(200)->estimate(), 0.5);
+ EXPECT_EQ(make_whitelist_blueprint(5)->estimate(), 1.0);
+}
+
class LidAllocatorPerformanceTest : public LidAllocatorTest,
public testing::WithParamInterface<bool>
{