summaryrefslogtreecommitdiffstats
path: root/searchlib/src
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-09-02 11:47:13 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2022-09-02 11:49:15 +0000
commit2e69eeead11986908979a740cd5019362322c6af (patch)
tree3df57b5184e0aa67eca1d3392a1fad67647cba68 /searchlib/src
parent10a3ed1cd43054f9ffd644a29a95ed86c769ca35 (diff)
Add conversion test and convert too...
Diffstat (limited to 'searchlib/src')
-rw-r--r--searchlib/src/tests/engine/proto_converter/proto_converter_test.cpp15
-rw-r--r--searchlib/src/vespa/searchlib/engine/proto_converter.cpp14
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