summaryrefslogtreecommitdiffstats
path: root/searchsummary/src/tests
diff options
context:
space:
mode:
authorGeir Storli <geirst@yahooinc.com>2022-09-21 10:35:32 +0200
committerGitHub <noreply@github.com>2022-09-21 10:35:32 +0200
commit79e303da0f7e7d2a4716601bd384745d504be98a (patch)
treef3d60e7389da653ed6b61e612ebdba7665df536d /searchsummary/src/tests
parent222e46fbd5e0d69b3166a09d712ce3466d29d7b9 (diff)
parentb8d3ab8c0ad28c5cedbe414eb9c7c55a4e0bd6ae (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')
-rw-r--r--searchsummary/src/tests/docsummary/result_class/CMakeLists.txt9
-rw-r--r--searchsummary/src/tests/docsummary/result_class/result_class_test.cpp43
-rw-r--r--searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp2
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);