diff options
author | Geir Storli <geirst@yahooinc.com> | 2022-09-21 10:35:32 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-21 10:35:32 +0200 |
commit | 79e303da0f7e7d2a4716601bd384745d504be98a (patch) | |
tree | f3d60e7389da653ed6b61e612ebdba7665df536d /searchsummary/src/tests | |
parent | 222e46fbd5e0d69b3166a09d712ce3466d29d7b9 (diff) | |
parent | b8d3ab8c0ad28c5cedbe414eb9c7c55a4e0bd6ae (diff) |
Merge pull request #24142 from vespa-engine/geirst/optimize-summary-class-resolving
Optimize resolving and usage of summary result class.
Diffstat (limited to 'searchsummary/src/tests')
3 files changed, 53 insertions, 1 deletions
diff --git a/searchsummary/src/tests/docsummary/result_class/CMakeLists.txt b/searchsummary/src/tests/docsummary/result_class/CMakeLists.txt new file mode 100644 index 00000000000..3b941aec244 --- /dev/null +++ b/searchsummary/src/tests/docsummary/result_class/CMakeLists.txt @@ -0,0 +1,9 @@ +# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +vespa_add_executable(searchsummary_result_class_test_app TEST + SOURCES + result_class_test.cpp + DEPENDS + searchsummary + GTest::GTest +) +vespa_add_test(NAME searchsummary_result_class_test_app COMMAND searchsummary_result_class_test_app) diff --git a/searchsummary/src/tests/docsummary/result_class/result_class_test.cpp b/searchsummary/src/tests/docsummary/result_class/result_class_test.cpp new file mode 100644 index 00000000000..a47786c2a44 --- /dev/null +++ b/searchsummary/src/tests/docsummary/result_class/result_class_test.cpp @@ -0,0 +1,43 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +#include <vespa/searchsummary/docsummary/docsum_field_writer.h> +#include <vespa/searchsummary/docsummary/resultclass.h> +#include <vespa/vespalib/gtest/gtest.h> +#include <memory> + +using namespace search::docsummary; + +class MockWriter : public DocsumFieldWriter { +private: + bool _generated; +public: + MockWriter(bool generated) : _generated(generated) {} + bool IsGenerated() const override { return _generated; } + virtual void insertField(uint32_t, const IDocsumStoreDocument*, GetDocsumsState&, vespalib::slime::Inserter &) const override {} +}; + +TEST(ResultClassTest, subset_of_fields_in_class_are_generated) +{ + ResultClass rc("test"); + rc.AddConfigEntry("from_disk"); + rc.AddConfigEntry("generated", std::make_unique<MockWriter>(true)); + rc.AddConfigEntry("not_generated", std::make_unique<MockWriter>(false)); + + EXPECT_FALSE(rc.all_fields_generated({})); + EXPECT_FALSE(rc.all_fields_generated({"from_disk", "generated", "not_generated"})); + EXPECT_FALSE(rc.all_fields_generated({"generated", "not_generated"})); + EXPECT_TRUE(rc.all_fields_generated({"generated"})); + EXPECT_FALSE(rc.all_fields_generated({"not_generated"})); +} + +TEST(ResultClassTest, all_fields_in_class_are_generated) +{ + ResultClass rc("test"); + rc.AddConfigEntry("generated_1", std::make_unique<MockWriter>(true)); + rc.AddConfigEntry("generated_2", std::make_unique<MockWriter>(true)); + + EXPECT_TRUE(rc.all_fields_generated({})); + EXPECT_TRUE(rc.all_fields_generated({"generated_1"})); +} + +GTEST_MAIN_RUN_ALL_TESTS() diff --git a/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp b/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp index 7b3e79ec38e..fda4923a826 100644 --- a/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp +++ b/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp @@ -55,7 +55,7 @@ struct SlimeSummaryTest : testing::Test, IDocsumStore, GetDocsumsStateCallback { void getDocsum(Slime &slime) { Slime slimeOut; SlimeInserter inserter(slimeOut); - auto rci = writer->resolveClassInfo(state._args.getResultClassName()); + auto rci = writer->resolveClassInfo(state._args.getResultClassName(), {}); writer->insertDocsum(rci, 1u, state, this, inserter); vespalib::SmartBuffer buf(4_Ki); BinaryFormat::encode(slimeOut, buf); |