diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2019-09-17 22:39:26 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-17 22:39:26 +0200 |
commit | a573985d1127835f0ecb5047694ffe23e8baefe7 (patch) | |
tree | 463ab5145edf4a26243cc4a92d04bfb82a3c1580 /container-search/src/test/java/com/yahoo/search | |
parent | ddb9cd0a539b57c41587ccdec1040b48169d3cec (diff) |
Revert "Balder/no more fs4 dispatching from fastsearcher"
Diffstat (limited to 'container-search/src/test/java/com/yahoo/search')
3 files changed, 19 insertions, 140 deletions
diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/MockSearchCluster.java b/container-search/src/test/java/com/yahoo/search/dispatch/MockSearchCluster.java index 7ee62ae9978..42a22f6f86b 100644 --- a/container-search/src/test/java/com/yahoo/search/dispatch/MockSearchCluster.java +++ b/container-search/src/test/java/com/yahoo/search/dispatch/MockSearchCluster.java @@ -89,6 +89,11 @@ public class MockSearchCluster extends SearchCluster { } @Override + public ImmutableMultimap<String, Node> nodesByHost() { + return nodesByHost; + } + + @Override public Optional<Node> directDispatchTarget() { return Optional.empty(); } diff --git a/container-search/src/test/java/com/yahoo/search/grouping/vespa/HitConverterTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/vespa/HitConverterTestCase.java index 7bdf1916d85..6ed8a209cc5 100644 --- a/container-search/src/test/java/com/yahoo/search/grouping/vespa/HitConverterTestCase.java +++ b/container-search/src/test/java/com/yahoo/search/grouping/vespa/HitConverterTestCase.java @@ -3,6 +3,7 @@ package com.yahoo.search.grouping.vespa; import com.yahoo.document.DocumentId; import com.yahoo.document.GlobalId; +import com.yahoo.fs4.QueryPacketData; import com.yahoo.net.URI; import com.yahoo.prelude.fastsearch.GroupingListHit; import com.yahoo.prelude.fastsearch.DocsumDefinitionSet; @@ -61,6 +62,19 @@ public class HitConverterTestCase { } @Test + public void requireThatHitTagIsCopiedFromGroupingListContext() { + QueryPacketData ctxTag = new QueryPacketData(); + GroupingListHit ctxHit = context(); + ctxHit.setQueryPacketData(ctxTag); + + HitConverter converter = new HitConverter(new MySearcher(), new Query()); + Hit hit = converter.toSearchHit("default", new FS4Hit(1, createGlobalId(2), 3).setContext(ctxHit)); + assertNotNull(hit); + assertTrue(hit instanceof FastHit); + assertSame(ctxTag, ((FastHit)hit).getQueryPacketData()); + } + + @Test public void requireThatSummaryClassIsSet() { Searcher searcher = new MySearcher(); HitConverter converter = new HitConverter(searcher, new Query()); diff --git a/container-search/src/test/java/com/yahoo/search/query/test/RankFeaturesTestCase.java b/container-search/src/test/java/com/yahoo/search/query/test/RankFeaturesTestCase.java deleted file mode 100644 index 8aff81a90db..00000000000 --- a/container-search/src/test/java/com/yahoo/search/query/test/RankFeaturesTestCase.java +++ /dev/null @@ -1,140 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.search.query.test; - -import com.yahoo.io.GrowableByteBuffer; -import com.yahoo.search.query.ranking.RankFeatures; -import com.yahoo.search.query.ranking.RankProperties; -import com.yahoo.tensor.Tensor; -import com.yahoo.tensor.TensorType; -import com.yahoo.tensor.serialization.TypedBinaryFormat; -import com.yahoo.text.Utf8; -import org.junit.Test; - -import java.nio.ByteBuffer; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import static org.junit.Assert.assertEquals; - -/** - * @author geirst - */ -public class RankFeaturesTestCase { - - @Test - public void requireThatRankPropertiesTakesBothStringAndObject() { - RankProperties p = new RankProperties(); - p.put("string", "b"); - p.put("object", 7); - assertEquals("7", p.get("object").get(0)); - assertEquals("b", p.get("string").get(0)); - } - - @Test - public void requireThatRankFeaturesUsingDoubleAndDoubleToStringEncodeTheSameWay() { - RankFeatures withDouble = new RankFeatures(); - withDouble.put("query(myDouble)", 3.8); - assertEquals(3.8, withDouble.getDouble("query(myDouble)").getAsDouble(), 0.000001); - - RankFeatures withString = new RankFeatures(); - withString.put("query(myDouble)", String.valueOf(3.8)); - - RankProperties withDoubleP = new RankProperties(); - withDouble.prepare(withDoubleP); - RankProperties withStringP = new RankProperties(); - withString.prepare(withStringP); - - byte[] withDoubleEncoded = encode(withDoubleP); - byte[] withStringEncoded = encode(withStringP); - assertEquals(Arrays.toString(withStringEncoded), Arrays.toString(withDoubleEncoded)); - } - - @Test - public void requireThatSingleTensorIsBinaryEncoded() { - TensorType type = new TensorType.Builder().mapped("x").mapped("y").mapped("z").build(); - Tensor tensor = Tensor.from(type, "{ {x:a, y:b, z:c}:2.0, {x:a, y:b, z:c2}:3.0 }"); - assertTensorEncodingAndDecoding(type, "query(my_tensor)", "my_tensor", tensor); - assertTensorEncodingAndDecoding(type, "$my_tensor", "my_tensor", tensor); - } - - @Test - public void requireThatMultipleTensorsAreBinaryEncoded() { - TensorType type = new TensorType.Builder().mapped("x").mapped("y").mapped("z").build(); - Tensor tensor1 = Tensor.from(type, "{ {x:a, y:b, z:c}:2.0, {x:a, y:b, z:c2}:3.0 }"); - Tensor tensor2 = Tensor.from(type, "{ {x:a, y:b, z:c}:5.0 }"); - assertTensorEncodingAndDecoding(type, Arrays.asList( - new Entry("query(tensor1)", "tensor1", tensor1), - new Entry("$tensor2", "tensor2", tensor2))); - } - - private static class Entry { - final String key; - final String normalizedKey; - final Tensor tensor; - Entry(String key, String normalizedKey, Tensor tensor) { - this.key = key; - this.normalizedKey = normalizedKey; - this.tensor = tensor; - } - } - - private static void assertTensorEncodingAndDecoding(TensorType type, List<Entry> entries) { - RankProperties properties = createRankPropertiesWithTensors(entries); - assertEquals(entries.size(), properties.asMap().size()); - - Map<String, Object> decodedProperties = decode(type, encode(properties)); - assertEquals(entries.size(), properties.asMap().size()); - assertEquals(entries.size(), decodedProperties.size()); - for (Entry entry : entries) { - assertEquals(entry.tensor, decodedProperties.get(entry.normalizedKey)); - } - } - - private static void assertTensorEncodingAndDecoding(TensorType type, String key, String normalizedKey, Tensor tensor) { - assertTensorEncodingAndDecoding(type, Arrays.asList(new Entry(key, normalizedKey, tensor))); - } - - private static RankProperties createRankPropertiesWithTensors(List<Entry> entries) { - RankFeatures features = new RankFeatures(); - for (Entry entry : entries) { - features.put(entry.key, entry.tensor); - } - RankProperties properties = new RankProperties(); - features.prepare(properties); - return properties; - } - - private static byte[] encode(RankProperties properties) { - ByteBuffer buffer = ByteBuffer.allocate(512); - properties.encode(buffer, true); - byte[] result = new byte[buffer.position()]; - buffer.rewind(); - buffer.get(result); - return result; - } - - private static Map<String, Object> decode(TensorType type, byte[] encodedProperties) { - GrowableByteBuffer buffer = GrowableByteBuffer.wrap(encodedProperties); - byte[] mapNameBytes = new byte[buffer.getInt()]; - buffer.get(mapNameBytes); - int numEntries = buffer.getInt(); - Map<String, Object> result = new HashMap<>(); - for (int i = 0; i < numEntries; ++i) { - byte[] keyBytes = new byte[buffer.getInt()]; - buffer.get(keyBytes); - String key = Utf8.toString(keyBytes); - byte[] value = new byte[buffer.getInt()]; - buffer.get(value); - if (key.contains(".type")) { - result.put(key, Utf8.toString(value)); - } else { - result.put(key, TypedBinaryFormat.decode(Optional.of(type), GrowableByteBuffer.wrap(value))); - } - } - return result; - } - -} |