aboutsummaryrefslogtreecommitdiffstats
path: root/container-search/src/test/java/com/yahoo/search/dispatch/rpc
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2019-09-16 17:54:07 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2019-09-16 17:54:07 +0200
commit4c0c2e8019ceb81a1ccd4f896309381f7d7cdaa7 (patch)
treec899ae3940a276edb46aa70f8ecbee34a578f3f2 /container-search/src/test/java/com/yahoo/search/dispatch/rpc
parent10a7fd163b55c9d501fec44eceaa3b36cebd7861 (diff)
Add simple protobuf decoding test and fix logic inversion.
Diffstat (limited to 'container-search/src/test/java/com/yahoo/search/dispatch/rpc')
-rw-r--r--container-search/src/test/java/com/yahoo/search/dispatch/rpc/ProtobufSerializationTest.java68
1 files changed, 68 insertions, 0 deletions
diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/rpc/ProtobufSerializationTest.java b/container-search/src/test/java/com/yahoo/search/dispatch/rpc/ProtobufSerializationTest.java
index 0b1d0d07e7a..b736ca1e6df 100644
--- a/container-search/src/test/java/com/yahoo/search/dispatch/rpc/ProtobufSerializationTest.java
+++ b/container-search/src/test/java/com/yahoo/search/dispatch/rpc/ProtobufSerializationTest.java
@@ -2,22 +2,32 @@
package com.yahoo.search.dispatch.rpc;
+import ai.vespa.searchlib.searchprotocol.protobuf.SearchProtocol;
+import com.google.protobuf.ByteString;
import com.yahoo.document.GlobalId;
import com.yahoo.document.idstring.IdString;
import com.yahoo.prelude.fastsearch.FastHit;
import com.yahoo.search.Query;
+import com.yahoo.search.dispatch.InvokerResult;
+import com.yahoo.search.dispatch.LeanHit;
import org.junit.Test;
import java.io.IOException;
import java.util.Collections;
+import java.util.List;
import static org.hamcrest.Matchers.equalTo;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
/**
* @author ollivir
*/
public class ProtobufSerializationTest {
+ static final double DELTA = 0.000000000001;
+
@Test
public void testDocsumSerialization() throws IOException {
Query q = new Query("search/?query=test&hits=10&offset=3");
@@ -29,4 +39,62 @@ public class ProtobufSerializationTest {
assertThat(bytes.length, equalTo(41));
}
+
+ SearchProtocol.SearchReply createSearchReply(int numHits, boolean useSorting) {
+ SearchProtocol.SearchReply.Builder reply = SearchProtocol.SearchReply.newBuilder();
+ reply.setTotalHitCount(7);
+
+ for (int i = 0; i < numHits; i++) {
+ SearchProtocol.Hit.Builder hit = SearchProtocol.Hit.newBuilder();
+ byte [] gid = {'a','a','a','a','a','a','a','a','a','a','a', (byte)i};
+ hit.setGlobalId(ByteString.copyFrom(gid));
+ if (useSorting) {
+ gid[0] = 'b';
+ hit.setSortData(ByteString.copyFrom(gid));
+ } else {
+ hit.setRelevance(numHits - i);
+ }
+ reply.addHits(hit);
+ }
+ return reply.build();
+ }
+ @Test
+ public void testSearhReplyDecodingWithRelevance() {
+ Query q = new Query("search/?query=test");
+ InvokerResult result = ProtobufSerialization.convertToResult(q, createSearchReply(5, false), null, 1, 2);
+ assertEquals(result.getResult().getTotalHitCount(), 7);
+ List<LeanHit> hits = result.getLeanHits();
+ assertEquals(5, hits.size());
+ double expectedRelevance = 5;
+ int hitNum = 0;
+ for (LeanHit hit : hits) {
+ assertEquals('a', hit.getGid()[0]);
+ assertEquals(hitNum, hit.getGid()[11]);
+ assertEquals(expectedRelevance--, hit.getRelevance(), DELTA);
+ assertEquals(1, hit.getPartId());
+ assertEquals(2, hit.getDistributionKey());
+ assertFalse(hit.hasSortData());
+ hitNum++;
+ }
+ }
+ @Test
+ public void testSearhReplyDecodingWithSortData() {
+ Query q = new Query("search/?query=test");
+ InvokerResult result = ProtobufSerialization.convertToResult(q, createSearchReply(5, true), null, 1, 2);
+ assertEquals(result.getResult().getTotalHitCount(), 7);
+ List<LeanHit> hits = result.getLeanHits();
+ assertEquals(5, hits.size());
+ int hitNum = 0;
+ for (LeanHit hit : hits) {
+ assertEquals('a', hit.getGid()[0]);
+ assertEquals(hitNum, hit.getGid()[11]);
+ assertEquals(Double.NEGATIVE_INFINITY, hit.getRelevance(), DELTA);
+ assertEquals(1, hit.getPartId());
+ assertEquals(2, hit.getDistributionKey());
+ assertTrue(hit.hasSortData());
+ assertEquals('b', hit.getSortData()[0]);
+ assertEquals(hitNum, hit.getSortData()[11]);
+ hitNum++;
+ }
+ }
}