summaryrefslogtreecommitdiffstats
path: root/searchlib/src/tests/queryeval/global_filter/global_filter_test.cpp
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-10-31 18:43:44 +0100
committerGitHub <noreply@github.com>2022-10-31 18:43:44 +0100
commite9cefec4aa7914c88b37e85f01fd339a5bc347df (patch)
tree5e18408b01f1e906788dc74558dc97d3264e3b8e /searchlib/src/tests/queryeval/global_filter/global_filter_test.cpp
parent1bfd169272b8af35740b14b2729e3bc96cd44961 (diff)
parent7fe19e2b100c9942889aece496580f9170b404ea (diff)
Merge pull request #24663 from vespa-engine/havardpe/improve-filter-calculationv8.77.26
short-circuit filter evaluation if filter iterator is trivial
Diffstat (limited to 'searchlib/src/tests/queryeval/global_filter/global_filter_test.cpp')
-rw-r--r--searchlib/src/tests/queryeval/global_filter/global_filter_test.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/searchlib/src/tests/queryeval/global_filter/global_filter_test.cpp b/searchlib/src/tests/queryeval/global_filter/global_filter_test.cpp
index a18fe010ad0..dcf175a6fdd 100644
--- a/searchlib/src/tests/queryeval/global_filter/global_filter_test.cpp
+++ b/searchlib/src/tests/queryeval/global_filter/global_filter_test.cpp
@@ -2,6 +2,7 @@
#include <vespa/vespalib/gtest/gtest.h>
#include <vespa/vespalib/util/require.h>
+#include <vespa/vespalib/util/classname.h>
#include <vespa/vespalib/util/simple_thread_bundle.h>
#include <vespa/searchlib/common/bitvector.h>
#include <vespa/searchlib/queryeval/global_filter.h>
@@ -199,4 +200,21 @@ TEST(GlobalFilterTest, multi_threaded_global_filter_works_with_docid_limit_0) {
verify(*filter, 2, 1);
}
+TEST(GlobalFilterTest, global_filter_matching_any_document_becomes_invalid) {
+ SimpleThreadBundle thread_bundle(7);
+ AlwaysTrueBlueprint blueprint;
+ auto filter = GlobalFilter::create(blueprint, 100, thread_bundle);
+ EXPECT_FALSE(filter->is_active());
+}
+
+TEST(GlobalFilterTest, global_filter_not_matching_any_document_becomes_empty) {
+ SimpleThreadBundle thread_bundle(7);
+ EmptyBlueprint blueprint;
+ auto filter = GlobalFilter::create(blueprint, 100, thread_bundle);
+ auto class_name = vespalib::getClassName(*filter);
+ fprintf(stderr, "empty global filter class name: %s\n", class_name.c_str());
+ EXPECT_TRUE(class_name.find("EmptyFilter") < class_name.size());
+ verify(*filter, 1000, 100);
+}
+
GTEST_MAIN_RUN_ALL_TESTS()