diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-09-02 11:47:13 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2022-09-02 11:49:15 +0000 |
commit | 2e69eeead11986908979a740cd5019362322c6af (patch) | |
tree | 3df57b5184e0aa67eca1d3392a1fad67647cba68 /searchlib | |
parent | 10a3ed1cd43054f9ffd644a29a95ed86c769ca35 (diff) |
Add conversion test and convert too...
Diffstat (limited to 'searchlib')
-rw-r--r-- | searchlib/src/tests/engine/proto_converter/proto_converter_test.cpp | 15 | ||||
-rw-r--r-- | searchlib/src/vespa/searchlib/engine/proto_converter.cpp | 14 |
2 files changed, 27 insertions, 2 deletions
diff --git a/searchlib/src/tests/engine/proto_converter/proto_converter_test.cpp b/searchlib/src/tests/engine/proto_converter/proto_converter_test.cpp index 14ef77a4161..3091d167399 100644 --- a/searchlib/src/tests/engine/proto_converter/proto_converter_test.cpp +++ b/searchlib/src/tests/engine/proto_converter/proto_converter_test.cpp @@ -494,6 +494,19 @@ TEST_F(DocsumRequestTest, require_that_geo_location_is_converted) { EXPECT_EQ(request.location, "x,y"); } +TEST_F(DocsumRequestTest, require_that_field_list_is_empty_by_default) { + convert(); + EXPECT_TRUE(request.getFields().empty()); +} +TEST_F(DocsumRequestTest, require_that_field_list_is_converted) { + proto.add_fields("f1"); + proto.add_fields("f2"); + convert(); + EXPECT_EQ(2u, request.getFields().size()); + EXPECT_EQ("f1", request.getFields()[0]); + EXPECT_EQ("f2", request.getFields()[1]); +} + TEST_F(DocsumRequestTest, require_that_query_tree_blob_is_converted) { proto.set_query_tree_blob("query-tree-blob"); convert(); @@ -518,7 +531,7 @@ struct DocsumReplyTest : ProtoConverterTest { DocsumReply reply; Converter::ProtoDocsumReply proto; void convert() { Converter::docsum_reply_to_proto(reply, proto); } - DocsumReplyTest(std::unique_ptr<Slime> slime_in) + explicit DocsumReplyTest(std::unique_ptr<Slime> slime_in) : slime(*slime_in), reply(std::move(slime_in)) {} DocsumReplyTest() : DocsumReplyTest(std::make_unique<Slime>()) {} diff --git a/searchlib/src/vespa/searchlib/engine/proto_converter.cpp b/searchlib/src/vespa/searchlib/engine/proto_converter.cpp index c6f28e8755e..8d06dcc10e6 100644 --- a/searchlib/src/vespa/searchlib/engine/proto_converter.cpp +++ b/searchlib/src/vespa/searchlib/engine/proto_converter.cpp @@ -47,6 +47,17 @@ void add_multi_props(fef::Properties &dst, const T &src) { } } +DocsumRequest::FieldList +convertFields(const searchlib::searchprotocol::protobuf::DocsumRequest &proto) { + DocsumRequest::FieldList fields; + fields.reserve(proto.fields_size()); + for (int i = 0; i < proto.fields_size(); ++i) { + fields.emplace_back(proto.fields(i)); + + } + return fields; +} + } //----------------------------------------------------------------------------- @@ -93,7 +104,7 @@ ProtoConverter::search_reply_to_proto(const SearchReply &reply, ProtoSearchReply proto.set_soon_active_docs(reply.coverage.getSoonActive()); proto.set_degraded_by_match_phase(reply.coverage.wasDegradedByMatchPhase()); proto.set_degraded_by_soft_timeout(reply.coverage.wasDegradedByTimeout()); - bool has_sort_data = (reply.sortIndex.size() > 0); + bool has_sort_data = ! reply.sortIndex.empty(); assert(!has_sort_data || (reply.sortIndex.size() == (reply.hits.size() + 1))); if (reply.request) { uint32_t asked_offset = reply.request->offset; @@ -185,6 +196,7 @@ ProtoConverter::docsum_request_from_proto(const ProtoDocsumRequest &proto, Docsu request.hits[i].gid = document::GlobalId(gid.data()); } } + request.setFields(convertFields(proto)); } void |