From 78edc04eb66fb4335f28d55e48a08beecd0ee56e Mon Sep 17 00:00:00 2001 From: HÃ¥vard Pettersen Date: Mon, 25 Mar 2024 11:59:58 +0000 Subject: use thread_local for blueprint options --- .../tests/queryeval/blueprint/blueprint_test.cpp | 24 ++++++++++++++++++++++ .../blueprint/intermediate_blueprints_test.cpp | 2 +- .../queryeval/filter_search/filter_search_test.cpp | 4 ++-- 3 files changed, 27 insertions(+), 3 deletions(-) (limited to 'searchlib/src/tests') diff --git a/searchlib/src/tests/queryeval/blueprint/blueprint_test.cpp b/searchlib/src/tests/queryeval/blueprint/blueprint_test.cpp index 266dc6f8652..d556d997206 100644 --- a/searchlib/src/tests/queryeval/blueprint/blueprint_test.cpp +++ b/searchlib/src/tests/queryeval/blueprint/blueprint_test.cpp @@ -794,6 +794,30 @@ TEST("Control object sizes") { EXPECT_EQUAL(88u, sizeof(LeafBlueprint)); } +Blueprint::Options make_opts(bool sort_by_cost, bool allow_force_strict, bool keep_order) { + return Blueprint::Options().sort_by_cost(sort_by_cost).allow_force_strict(allow_force_strict).keep_order(keep_order); +} + +void check_opts(bool sort_by_cost, bool allow_force_strict, bool keep_order) { + EXPECT_EQUAL(Blueprint::opt_sort_by_cost(), sort_by_cost); + EXPECT_EQUAL(Blueprint::opt_allow_force_strict(), allow_force_strict); + EXPECT_EQUAL(Blueprint::opt_keep_order(), keep_order); +} + +TEST("Options binding and nesting") { + check_opts(false, false, false); + { + auto opts_guard1 = Blueprint::bind_opts(make_opts(true, true, false)); + check_opts(true, true, false); + { + auto opts_guard2 = Blueprint::bind_opts(make_opts(false, false, true)); + check_opts(false, false, true); + } + check_opts(true, true, false); + } + check_opts(false, false, false); +} + TEST_MAIN() { TEST_DEBUG("lhs.out", "rhs.out"); TEST_RUN_ALL(); diff --git a/searchlib/src/tests/queryeval/blueprint/intermediate_blueprints_test.cpp b/searchlib/src/tests/queryeval/blueprint/intermediate_blueprints_test.cpp index 9338436348b..d3b6a90e5db 100644 --- a/searchlib/src/tests/queryeval/blueprint/intermediate_blueprints_test.cpp +++ b/searchlib/src/tests/queryeval/blueprint/intermediate_blueprints_test.cpp @@ -579,7 +579,7 @@ optimize_and_compare(Blueprint::UP top, Blueprint::UP expect, bool strict = true top->setDocIdLimit(1000); expect->setDocIdLimit(1000); TEST_DO(compare(*top, *expect, false)); - auto opts = Blueprint::Options::default_options().sort_by_cost(sort_by_cost); + auto opts = Blueprint::Options().sort_by_cost(sort_by_cost); top = Blueprint::optimize_and_sort(std::move(top), strict, opts); TEST_DO(compare(*top, *expect, true)); expect = Blueprint::optimize_and_sort(std::move(expect), strict, opts); diff --git a/searchlib/src/tests/queryeval/filter_search/filter_search_test.cpp b/searchlib/src/tests/queryeval/filter_search/filter_search_test.cpp index 5c29c293d82..d40248336cb 100644 --- a/searchlib/src/tests/queryeval/filter_search/filter_search_test.cpp +++ b/searchlib/src/tests/queryeval/filter_search/filter_search_test.cpp @@ -65,9 +65,9 @@ struct LeafProxy : SimpleLeafBlueprint { FlowStats calculate_flow_stats(uint32_t my_docid_limit) const override { return child->calculate_flow_stats(my_docid_limit); } - void sort(InFlow in_flow, const Options &opts) override { + void sort(InFlow in_flow) override { strict(in_flow.strict()); - child->sort(in_flow, opts); + child->sort(in_flow); } SearchIteratorUP createLeafSearch(const TermFieldMatchDataArray &) const override { abort(); } SearchIteratorUP createFilterSearch(Constraint constraint) const override { -- cgit v1.2.3