diff options
author | Tor Egge <Tor.Egge@online.no> | 2024-02-18 02:36:51 +0100 |
---|---|---|
committer | Tor Egge <Tor.Egge@online.no> | 2024-02-18 02:36:51 +0100 |
commit | 5866de838d35ee186e9cfc86605ba10f5464072f (patch) | |
tree | 05e6779a918a2f4a7009ed7f037aa0b05f4e725a /searchlib | |
parent | aa62b06788dfa0b1bba297fe8752f41dc69d434e (diff) |
Rewrite search::queryeval::MonitoringSearchIterator unit test to gtest.
Diffstat (limited to 'searchlib')
-rw-r--r-- | searchlib/src/tests/queryeval/monitoring_search_iterator/monitoring_search_iterator_test.cpp | 220 |
1 files changed, 118 insertions, 102 deletions
diff --git a/searchlib/src/tests/queryeval/monitoring_search_iterator/monitoring_search_iterator_test.cpp b/searchlib/src/tests/queryeval/monitoring_search_iterator/monitoring_search_iterator_test.cpp index f5b90fd862c..c20c7091355 100644 --- a/searchlib/src/tests/queryeval/monitoring_search_iterator/monitoring_search_iterator_test.cpp +++ b/searchlib/src/tests/queryeval/monitoring_search_iterator/monitoring_search_iterator_test.cpp @@ -1,5 +1,4 @@ // Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include <vespa/vespalib/testkit/test_kit.h> #include <vespa/searchlib/queryeval/andsearch.h> #include <vespa/searchlib/queryeval/monitoring_search_iterator.h> #include <vespa/searchlib/queryeval/monitoring_dump_iterator.h> @@ -7,9 +6,11 @@ #include <vespa/searchlib/queryeval/simplesearch.h> #include <vespa/searchlib/queryeval/test/searchhistory.h> #include <vespa/vespalib/objects/objectdumper.h> +#define ENABLE_GTEST_MIGRATION #include <vespa/searchlib/test/searchiteratorverifier.h> #include <vespa/searchlib/common/bitvectoriterator.h> #include <vespa/searchlib/fef/termfieldmatchdata.h> +#include <vespa/vespalib/gtest/gtest.h> using namespace search::queryeval; using namespace search::queryeval::test; @@ -92,71 +93,81 @@ struct TreeFixture false)); _res.search(*_itr); } + ~TreeFixture(); }; -TEST_F("require that number of seeks is collected", SimpleFixture) +TreeFixture::~TreeFixture() = default; + +TEST(MonitoringSearchIteratorTest, require_that_number_of_seeks_is_collected) { - EXPECT_EQUAL(4u, f._itr.getStats().getNumSeeks()); - EXPECT_EQUAL(4.0 / 3.0, f._itr.getStats().getNumSeeksPerUnpack()); + SimpleFixture f; + EXPECT_EQ(4u, f._itr.getStats().getNumSeeks()); + EXPECT_EQ(4.0 / 3.0, f._itr.getStats().getNumSeeksPerUnpack()); } -TEST_F("require that number of unpacks is collected", SimpleFixture) +TEST(MonitoringSearchIteratorTest, require_that_number_of_unpacks_is_collected) { - EXPECT_EQUAL(3u, f._itr.getStats().getNumUnpacks()); + SimpleFixture f; + EXPECT_EQ(3u, f._itr.getStats().getNumUnpacks()); } -TEST_F("require that docId stepping is collected (root iterator)", SimpleFixture) +TEST(MonitoringSearchIteratorTest, require_that_docid_stepping_is_collected_for_root_iterator) { - EXPECT_EQUAL(4u, f._itr.getStats().getNumDocIdSteps()); - EXPECT_EQUAL(1, f._itr.getStats().getAvgDocIdSteps()); + SimpleFixture f; + EXPECT_EQ(4u, f._itr.getStats().getNumDocIdSteps()); + EXPECT_EQ(1, f._itr.getStats().getAvgDocIdSteps()); } -TEST_F("require that docId stepping is collected (child iterator)", AdvancedFixture) +TEST(MonitoringSearchIteratorTest, require_that_docid_stepping_is_collected_for_child_iterator) { + AdvancedFixture f; f._itr.seek(1); // 2 - 1 - EXPECT_EQUAL(1u, f._itr.getStats().getNumDocIdSteps()); + EXPECT_EQ(1u, f._itr.getStats().getNumDocIdSteps()); f._itr.seek(19); // 19 - 2 - EXPECT_EQUAL(18u, f._itr.getStats().getNumDocIdSteps()); + EXPECT_EQ(18u, f._itr.getStats().getNumDocIdSteps()); f._itr.seek(64); // 64 - 32 - EXPECT_EQUAL(50u, f._itr.getStats().getNumDocIdSteps()); + EXPECT_EQ(50u, f._itr.getStats().getNumDocIdSteps()); f._itr.seek(74); // 74 - 64 - EXPECT_EQUAL(60u, f._itr.getStats().getNumDocIdSteps()); - EXPECT_EQUAL(60 / 4, f._itr.getStats().getAvgDocIdSteps()); + EXPECT_EQ(60u, f._itr.getStats().getNumDocIdSteps()); + EXPECT_EQ(60 / 4, f._itr.getStats().getAvgDocIdSteps()); } -TEST_F("require that hit skipping is collected ", AdvancedFixture) +TEST(MonitoringSearchIteratorTest, require_that_hit_skipping_is_collected) { + AdvancedFixture f; f._itr.seek(1); - EXPECT_EQUAL(0u, f._itr.getStats().getNumHitSkips()); + EXPECT_EQ(0u, f._itr.getStats().getNumHitSkips()); f._itr.seek(4); - EXPECT_EQUAL(0u, f._itr.getStats().getNumHitSkips()); + EXPECT_EQ(0u, f._itr.getStats().getNumHitSkips()); f._itr.seek(16); - EXPECT_EQUAL(1u, f._itr.getStats().getNumHitSkips()); + EXPECT_EQ(1u, f._itr.getStats().getNumHitSkips()); f._itr.seek(120); - EXPECT_EQUAL(3u, f._itr.getStats().getNumHitSkips()); - EXPECT_EQUAL(3.0 / 4.0, f._itr.getStats().getAvgHitSkips()); + EXPECT_EQ(3u, f._itr.getStats().getNumHitSkips()); + EXPECT_EQ(3.0 / 4.0, f._itr.getStats().getAvgHitSkips()); } -TEST_F("require that results from underlying iterator is exposed through monitoring iterator", SimpleFixture) +TEST(MonitoringSearchIteratorTest, require_that_results_from_underlying_iterator_is_exposed_through_monitoring_iterator) { - EXPECT_EQUAL(SimpleResult().addHit(2).addHit(4).addHit(8), f._res); + SimpleFixture f; + EXPECT_EQ(SimpleResult().addHit(2).addHit(4).addHit(8), f._res); } -TEST_F("require that calls are forwarded to underlying iterator", HistoryFixture) +TEST(MonitoringSearchIteratorTest, require_that_calls_are_forwarded_to_underlying_iterator) { + HistoryFixture f; f._itr.seek(2); - EXPECT_EQUAL(2u, f._itr.getDocId()); + EXPECT_EQ(2u, f._itr.getDocId()); f._itr.unpack(2); f._itr.seek(4); - EXPECT_EQUAL(4u, f._itr.getDocId()); + EXPECT_EQ(4u, f._itr.getDocId()); f._itr.unpack(4); f._itr.seek(8); - EXPECT_EQUAL(8u, f._itr.getDocId()); + EXPECT_EQ(8u, f._itr.getDocId()); f._itr.unpack(8); f._itr.getPostingInfo(); const HistorySearchIterator &hsi = dynamic_cast<const HistorySearchIterator &>(f._itr.getIterator()); - EXPECT_EQUAL(SearchHistory().seek("x", 2).unpack("x", 2).seek("x", 4).unpack("x", 4).seek("x", 8).unpack("x", 8), - hsi._history); + EXPECT_EQ(SearchHistory().seek("x", 2).unpack("x", 2).seek("x", 4).unpack("x", 4).seek("x", 8).unpack("x", 8), + hsi._history); EXPECT_TRUE(hsi._getPostingInfoCalled); } @@ -183,7 +194,7 @@ addIterator(MonitoringSearchIterator::Dumper &d, d.closeStruct(); } -TEST("require that dumper can handle formatting on several levels") +TEST(MonitoringSearchIteratorTest, require_that_dumper_can_handle_formatting_on_several_levels) { MonitoringSearchIterator::Dumper d(2, 6, 6, 10, 3); addIterator(d, "root", 1, 1.1, 11.22, 11, 111.3); @@ -205,7 +216,7 @@ TEST("require that dumper can handle formatting on several levels") } d.closeStruct(); } - EXPECT_EQUAL( + EXPECT_EQ( "root: 1 seeks, 1.100 steps/seek, 11.220 skips/seek, 11 unpacks, 111.300 seeks/unpack\n" " c.1: 222222 seeks, 2.111 steps/seek, 22.222 skips/seek, 222000 unpacks, 222.444 seeks/unpack\n" " c.1.1: 333333 seeks, 3.111 steps/seek, 33.222 skips/seek, 333000 unpacks, 333333.444 seeks/unpack\n" @@ -216,99 +227,103 @@ TEST("require that dumper can handle formatting on several levels") d.toString()); } -TEST_F("require that single iterator can be dumped compact", AdvancedFixture) +TEST(MonitoringSearchIteratorTest, require_that_single_iterator_can_be_dumped_compact) { + AdvancedFixture f; f._itr.seek(6); f._itr.seek(16); f._itr.unpack(16); MonitoringSearchIterator::Dumper dumper; visit(dumper, "", f._itr); - EXPECT_EQUAL("AdvancedIterator: 2 seeks, 7.00 steps/seek, 1.00 skips/seek, 1 unpacks, 2.00 seeks/unpack\n", - dumper.toString()); + EXPECT_EQ("AdvancedIterator: 2 seeks, 7.00 steps/seek, 1.00 skips/seek, 1 unpacks, 2.00 seeks/unpack\n", + dumper.toString()); } -TEST_F("require that iterator tree can be dumped compact", TreeFixture) +TEST(MonitoringSearchIteratorTest, require_that_iterator_tree_can_be_dumped_compact) { + TreeFixture f; MonitoringSearchIterator::Dumper dumper; visit(dumper, "", f._itr.get()); - EXPECT_EQUAL("and: 2 seeks, 1.00 steps/seek, 0.00 skips/seek, 1 unpacks, 2.00 seeks/unpack\n" - " child1: 3 seeks, 1.00 steps/seek, 0.00 skips/seek, 1 unpacks, 3.00 seeks/unpack\n" - " child2: 3 seeks, 1.67 steps/seek, 0.00 skips/seek, 1 unpacks, 3.00 seeks/unpack\n", - dumper.toString()); + EXPECT_EQ("and: 2 seeks, 1.00 steps/seek, 0.00 skips/seek, 1 unpacks, 2.00 seeks/unpack\n" + " child1: 3 seeks, 1.00 steps/seek, 0.00 skips/seek, 1 unpacks, 3.00 seeks/unpack\n" + " child2: 3 seeks, 1.67 steps/seek, 0.00 skips/seek, 1 unpacks, 3.00 seeks/unpack\n", + dumper.toString()); } -TEST_F("require that single iterator can be dumped verbosely", AdvancedFixture) +TEST(MonitoringSearchIteratorTest, require_that_single_iterator_can_be_dumped_verbosely) { + AdvancedFixture f; f._itr.seek(6); f._itr.seek(16); f._itr.unpack(16); vespalib::ObjectDumper dumper; visit(dumper, "", &f._itr); - EXPECT_EQUAL("search::queryeval::MonitoringSearchIterator {\n" - " iteratorName: 'AdvancedIterator'\n" - " iteratorType: 'search::queryeval::SimpleSearch'\n" - " stats: MonitoringSearchIterator::Stats {\n" - " numSeeks: 2\n" - " numDocIdSteps: 14\n" - " avgDocIdSteps: 7\n" - " numHitSkips: 2\n" - " avgHitSkips: 1\n" - " numUnpacks: 1\n" - " numSeeksPerUnpack: 2\n" - " }\n" - " tag: '<null>'\n" - "}\n", - dumper.toString()); + EXPECT_EQ("search::queryeval::MonitoringSearchIterator {\n" + " iteratorName: 'AdvancedIterator'\n" + " iteratorType: 'search::queryeval::SimpleSearch'\n" + " stats: MonitoringSearchIterator::Stats {\n" + " numSeeks: 2\n" + " numDocIdSteps: 14\n" + " avgDocIdSteps: 7\n" + " numHitSkips: 2\n" + " avgHitSkips: 1\n" + " numUnpacks: 1\n" + " numSeeksPerUnpack: 2\n" + " }\n" + " tag: '<null>'\n" + "}\n", + dumper.toString()); } -TEST_F("require that iterator tree can be dumped verbosely", TreeFixture) +TEST(MonitoringSearchIteratorTest, require_that_iterator_tree_can_be_dumped_verbosely) { + TreeFixture f; vespalib::ObjectDumper dumper; visit(dumper, "", f._itr.get()); - EXPECT_EQUAL("search::queryeval::MonitoringSearchIterator {\n" - " iteratorName: 'and'\n" - " iteratorType: 'search::queryeval::AndSearchStrict<search::queryeval::(anonymous namespace)::FullUnpack>'\n" - " stats: MonitoringSearchIterator::Stats {\n" - " numSeeks: 2\n" - " numDocIdSteps: 2\n" - " avgDocIdSteps: 1\n" - " numHitSkips: 0\n" - " avgHitSkips: 0\n" - " numUnpacks: 1\n" - " numSeeksPerUnpack: 2\n" - " }\n" - " children: std::vector {\n" - " [0]: search::queryeval::MonitoringSearchIterator {\n" - " iteratorName: 'child1'\n" - " iteratorType: 'search::queryeval::SimpleSearch'\n" - " stats: MonitoringSearchIterator::Stats {\n" - " numSeeks: 3\n" - " numDocIdSteps: 3\n" - " avgDocIdSteps: 1\n" - " numHitSkips: 0\n" - " avgHitSkips: 0\n" - " numUnpacks: 1\n" - " numSeeksPerUnpack: 3\n" - " }\n" - " tag: '<null>'\n" - " }\n" - " [1]: search::queryeval::MonitoringSearchIterator {\n" - " iteratorName: 'child2'\n" - " iteratorType: 'search::queryeval::SimpleSearch'\n" - " stats: MonitoringSearchIterator::Stats {\n" - " numSeeks: 3\n" - " numDocIdSteps: 5\n" - " avgDocIdSteps: 1.66667\n" - " numHitSkips: 0\n" - " avgHitSkips: 0\n" - " numUnpacks: 1\n" - " numSeeksPerUnpack: 3\n" - " }\n" - " tag: '<null>'\n" - " }\n" - " }\n" - "}\n", - dumper.toString()); + EXPECT_EQ("search::queryeval::MonitoringSearchIterator {\n" + " iteratorName: 'and'\n" + " iteratorType: 'search::queryeval::AndSearchStrict<search::queryeval::(anonymous namespace)::FullUnpack>'\n" + " stats: MonitoringSearchIterator::Stats {\n" + " numSeeks: 2\n" + " numDocIdSteps: 2\n" + " avgDocIdSteps: 1\n" + " numHitSkips: 0\n" + " avgHitSkips: 0\n" + " numUnpacks: 1\n" + " numSeeksPerUnpack: 2\n" + " }\n" + " children: std::vector {\n" + " [0]: search::queryeval::MonitoringSearchIterator {\n" + " iteratorName: 'child1'\n" + " iteratorType: 'search::queryeval::SimpleSearch'\n" + " stats: MonitoringSearchIterator::Stats {\n" + " numSeeks: 3\n" + " numDocIdSteps: 3\n" + " avgDocIdSteps: 1\n" + " numHitSkips: 0\n" + " avgHitSkips: 0\n" + " numUnpacks: 1\n" + " numSeeksPerUnpack: 3\n" + " }\n" + " tag: '<null>'\n" + " }\n" + " [1]: search::queryeval::MonitoringSearchIterator {\n" + " iteratorName: 'child2'\n" + " iteratorType: 'search::queryeval::SimpleSearch'\n" + " stats: MonitoringSearchIterator::Stats {\n" + " numSeeks: 3\n" + " numDocIdSteps: 5\n" + " avgDocIdSteps: 1.66667\n" + " numHitSkips: 0\n" + " avgHitSkips: 0\n" + " numUnpacks: 1\n" + " numSeeksPerUnpack: 3\n" + " }\n" + " tag: '<null>'\n" + " }\n" + " }\n" + "}\n", + dumper.toString()); } class MonitoringSearchIteratorVerifier : public search::test::SearchIteratorVerifier { @@ -331,7 +346,8 @@ public: } }; -TEST("test monitoring search iterator adheres to search iterator requirements") { +TEST(MonitoringSearchIteratorTest, test_monitoring_search_iterator_adheres_to_search_iterator_requirements) +{ MonitoringSearchIteratorVerifier searchVerifier; searchVerifier.verify(); MonitoringDumpIteratorVerifier dumpVerifier; @@ -339,4 +355,4 @@ TEST("test monitoring search iterator adheres to search iterator requirements") } -TEST_MAIN() { TEST_RUN_ALL(); } +GTEST_MAIN_RUN_ALL_TESTS() |