From 837e33533ba3c109aeb48f2cfcc10d0b28a8a1b8 Mon Sep 17 00:00:00 2001 From: Jon Bratseth Date: Thu, 10 May 2018 23:40:43 +0200 Subject: Remove some dead code --- .../com/yahoo/prelude/fastsearch/ByteField.java | 22 +- .../com/yahoo/prelude/fastsearch/DataField.java | 31 +- .../java/com/yahoo/prelude/fastsearch/Docsum.java | 68 ----- .../com/yahoo/prelude/fastsearch/DocsumField.java | 21 -- .../yahoo/prelude/fastsearch/DocsumPacketKey.java | 8 +- .../com/yahoo/prelude/fastsearch/DoubleField.java | 22 +- .../yahoo/prelude/fastsearch/FeatureDataField.java | 2 + .../com/yahoo/prelude/fastsearch/FloatField.java | 18 -- .../com/yahoo/prelude/fastsearch/Int64Field.java | 23 +- .../com/yahoo/prelude/fastsearch/IntegerField.java | 20 +- .../com/yahoo/prelude/fastsearch/JSONField.java | 64 +--- .../yahoo/prelude/fastsearch/LongdataField.java | 59 +--- .../yahoo/prelude/fastsearch/LongstringField.java | 62 +--- .../com/yahoo/prelude/fastsearch/PacketCache.java | 4 +- .../yahoo/prelude/fastsearch/PacketWrapper.java | 7 +- .../com/yahoo/prelude/fastsearch/ShortField.java | 20 +- .../com/yahoo/prelude/fastsearch/StringField.java | 32 +- .../yahoo/prelude/fastsearch/StructDataField.java | 1 + .../prelude/fastsearch/SummaryParameters.java | 2 +- .../com/yahoo/prelude/fastsearch/TensorField.java | 32 +- .../prelude/fastsearch/VariableLengthField.java | 15 - .../com/yahoo/prelude/fastsearch/XMLField.java | 61 +--- .../yahoo/search/rendering/DefaultRenderer.java | 4 +- .../yahoo/search/searchchain/AsyncExecution.java | 2 +- .../prelude/fastsearch/DocsumFieldTestCase.java | 64 ---- .../yahoo/prelude/fastsearch/FieldsTestCase.java | 322 --------------------- .../prelude/fastsearch/JsonFieldTestCase.java | 8 - .../searchchain/test/AsyncExecutionTestCase.java | 1 + .../searchchain/test/VespaAsyncSearcherTest.java | 19 +- 29 files changed, 61 insertions(+), 953 deletions(-) delete mode 100644 container-search/src/main/java/com/yahoo/prelude/fastsearch/Docsum.java delete mode 100644 container-search/src/main/java/com/yahoo/prelude/fastsearch/VariableLengthField.java delete mode 100644 container-search/src/test/java/com/yahoo/prelude/fastsearch/DocsumFieldTestCase.java delete mode 100644 container-search/src/test/java/com/yahoo/prelude/fastsearch/FieldsTestCase.java (limited to 'container-search/src') diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/ByteField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/ByteField.java index adc8190d325..256edc66793 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/ByteField.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/ByteField.java @@ -13,9 +13,10 @@ import com.yahoo.search.result.NanNumber; import com.yahoo.data.access.Inspector; /** - * @author Bj\u00f8rn Borud + * @author Bjørn Borud */ public class ByteField extends DocsumField { + static final byte EMPTY_VALUE = Byte.MIN_VALUE; public ByteField(String name) { @@ -30,24 +31,9 @@ public class ByteField extends DocsumField { } } - public Object decode(ByteBuffer b) { - return convert(b.get()); - } - - public Object decode(ByteBuffer b, FastHit hit) { - Object field = decode(b); - hit.setField(name, field); - return field; - } - - public int getLength(ByteBuffer b) { - int offset = b.position(); - final int bytelength = Byte.SIZE >> 3; - b.position(offset + bytelength); - return bytelength; - } - + @Override public Object convert(Inspector value) { return convert((byte)value.asLong(EMPTY_VALUE)); } + } diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DataField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DataField.java index 5f6eb9d3631..524e842eacd 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DataField.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DataField.java @@ -19,7 +19,7 @@ import com.yahoo.data.access.Inspector; /** * @author Bjørn Borud */ -public class DataField extends DocsumField implements VariableLengthField { +public class DataField extends DocsumField { public DataField(String name) { super(name); @@ -29,40 +29,11 @@ public class DataField extends DocsumField implements VariableLengthField { return new RawData(value); } - @Override - public Object decode(ByteBuffer b) { - int len = ((int) b.getShort()) & 0xffff; - - byte[] tmp = new byte[len]; - b.get(tmp); - return convert(tmp); - } - - @Override - public Object decode(ByteBuffer b, FastHit hit) { - Object field = decode(b); - hit.setField(name, field); - return field; - } - @Override public String toString() { return "field " + getName() + " type data"; } - @Override - public int getLength(ByteBuffer b) { - int offset = b.position(); - int len = ((int) b.getShort()) & 0xffff; - b.position(offset + len + (Short.SIZE >> 3)); - return len + (Short.SIZE >> 3); - } - - @Override - public int sizeOfLength() { - return Short.SIZE >> 3; - } - @Override public Object convert(Inspector value) { return convert(value.asData(Value.empty().asData())); diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/Docsum.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/Docsum.java deleted file mode 100644 index f5cec631734..00000000000 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/Docsum.java +++ /dev/null @@ -1,68 +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.prelude.fastsearch; - -import java.nio.ByteBuffer; -import java.nio.ByteOrder; - - -/** - * An instance of a document summary, backed by binary data, which decodes and returns fields on request, - * using the (shared) definition of this docsum. - * - * @author Steinar Knutsen - */ -public final class Docsum { - - private final DocsumDefinition definition; - private final byte[] packet; - /** The offsets into the packet data of each field, given the fields index, computed lazily */ - private final int[] fieldOffsets; - /** The largest stored offset */ - private int largestStoredOffset = -1; - - public Docsum(DocsumDefinition definition, byte[] packet) { - this.definition = definition; - this.packet = packet; - fieldOffsets=new int[definition.getFieldCount()]; - } - - public DocsumDefinition getDefinition() { return definition; } - - public Object decode(int fieldIndex) { - ByteBuffer b=packetAsBuffer(); - setAndReturnOffsetToField(b, fieldIndex); - return definition.getField(fieldIndex).decode(b); - } - - public ByteBuffer packetAsBuffer() { - ByteBuffer buffer = ByteBuffer.wrap(packet); - buffer.order(ByteOrder.LITTLE_ENDIAN); - buffer.getInt(); // Skip class id - return buffer; - } - - /** Returns the offset of a given field in the buffer, and sets the position of the buffer to that field start */ - private int setAndReturnOffsetToField(ByteBuffer b, int fieldIndex) { - // find and store missing offsets up to fieldIndex - if (largestStoredOffset<0) { // initial case - fieldOffsets[0]=b.position(); - largestStoredOffset++; - } - while (largestStoredOffset < fieldIndex) { // induction - int offsetOfLargest=fieldOffsets[largestStoredOffset]; - b.position(offsetOfLargest); - fieldOffsets[largestStoredOffset+1]=offsetOfLargest+definition.getField(largestStoredOffset).getLength(b); - largestStoredOffset++; - } - - // return the stored offset - int offset=fieldOffsets[fieldIndex]; - b.position(offset); - return offset; - } - - public String toString() { - return "docsum [definition: " + definition + "]"; - } - -} diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumField.java index d5e4eb75931..a5f83021bee 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumField.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumField.java @@ -90,27 +90,6 @@ public abstract class DocsumField { return name; } - public boolean isCompressed(ByteBuffer b) { - return false; - } - - /** - * Decode the field at the current buffer position into the fast hit. - */ - public abstract Object decode(ByteBuffer b, FastHit hit); - - /** - * Decode the field at the current buffer position and simply return the - * value. - */ - public abstract Object decode(ByteBuffer b); - - /** - * Get the number of bytes this field occupies in the given buffer - * AND SET(!) the position to the first byte after this field. - */ - public abstract int getLength(ByteBuffer b); - /** * Convert a generic value into an object of the appropriate type * for this field. diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumPacketKey.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumPacketKey.java index 46cbf244abe..a3b5a6f57b6 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumPacketKey.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumPacketKey.java @@ -5,14 +5,14 @@ import com.yahoo.document.GlobalId; /** - * Key for each entry in the packetcache. + * Key for each entry in the packet cache. * - * @author Mathias M\u00f8lster Lidal + * @author Mathias Mølster Lidal */ public class DocsumPacketKey { + private GlobalId globalId; private int partid; - private int docstamp; private String summaryClass; private static boolean strEquals(String a, String b) { @@ -43,6 +43,7 @@ public class DocsumPacketKey { return partid; } + @Override public boolean equals(Object o) { if (o instanceof DocsumPacketKey) { DocsumPacketKey other = (DocsumPacketKey) o; @@ -57,6 +58,7 @@ public class DocsumPacketKey { return false; } + @Override public int hashCode() { return globalId.hashCode() + 10 * partid + strHashCode(summaryClass); } diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DoubleField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DoubleField.java index 474e84bdc0b..6b1445229ec 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DoubleField.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DoubleField.java @@ -8,9 +8,10 @@ import com.yahoo.search.result.NanNumber; import com.yahoo.data.access.Inspector; /** - * @author Mathias M\u00f8lster Lidal + * @author Mathias Mølster Lidal */ public class DoubleField extends DocsumField { + static final double EMPTY_VALUE = Double.NaN; public DoubleField(String name) { @@ -25,24 +26,9 @@ public class DoubleField extends DocsumField { } } - public Object decode(ByteBuffer b) { - return convert(b.getDouble()); - } - - public Object decode(ByteBuffer b, FastHit hit) { - Object field = decode(b); - hit.setField(name, field); - return field; - } - - public int getLength(ByteBuffer b) { - int offset = b.position(); - final int byteLength = Double.SIZE >> 3; - b.position(offset + byteLength); - return byteLength; - } - + @Override public Object convert(Inspector value) { return convert(value.asDouble(EMPTY_VALUE)); } + } diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FeatureDataField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FeatureDataField.java index df681a6ed11..28c63aa2d3a 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FeatureDataField.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FeatureDataField.java @@ -22,6 +22,7 @@ public class FeatureDataField extends LongstringField { return "field " + getName() + " type FeatureDataField"; } + @Override public Object convert(Inspector value) { if (! value.valid()) { if (getEmulConfig().stringBackedFeatureData()) { @@ -42,4 +43,5 @@ public class FeatureDataField extends LongstringField { return obj; } } + } diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FloatField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FloatField.java index 6c73167b162..7330f0bde3c 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FloatField.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FloatField.java @@ -28,24 +28,6 @@ public class FloatField extends DocsumField { } @Override - public Object decode(ByteBuffer b) { - return convert(b.getFloat()); - } - - @Override - public Object decode(ByteBuffer b, FastHit hit) { - Object field = decode(b); - hit.setField(name, field); - return field; - } - - public int getLength(ByteBuffer b) { - int offset = b.position(); - final int bytelength = Float.SIZE >> 3; - b.position(offset + bytelength); - return bytelength; - } - public Object convert(Inspector value) { return convert((float)value.asDouble(EMPTY_VALUE)); } diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/Int64Field.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/Int64Field.java index 5d422f5611c..f690d9d4da4 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/Int64Field.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/Int64Field.java @@ -13,9 +13,10 @@ import com.yahoo.data.access.Inspector; /** - * @author Bj\u00f8rn Borud + * @author Bjørn Borud */ public class Int64Field extends DocsumField { + static final long EMPTY_VALUE = Long.MIN_VALUE; public Int64Field(String name) { @@ -30,28 +31,14 @@ public class Int64Field extends DocsumField { } } - public Object decode(ByteBuffer b) { - return convert(b.getLong()); - } - - public Object decode(ByteBuffer b, FastHit hit) { - Object field = decode(b); - hit.setField(name, field); - return field; - } - + @Override public String toString() { return "field " + getName() + " type int64"; } - public int getLength(ByteBuffer b) { - int offset = b.position(); - final int bytelength = Long.SIZE >> 3; - b.position(offset + bytelength); - return bytelength; - } - + @Override public Object convert(Inspector value) { return convert(value.asLong(EMPTY_VALUE)); } + } diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/IntegerField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/IntegerField.java index eef6fc73294..a02d9813793 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/IntegerField.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/IntegerField.java @@ -30,30 +30,12 @@ public class IntegerField extends DocsumField { } } - @Override - public Object decode(ByteBuffer b) { - return convert(b.getInt()); - } - - @Override - public Object decode(ByteBuffer b, FastHit hit) { - Object field = decode(b); - hit.setField(name, field); - return field; - } - @Override public String toString() { return "field " + getName() + " type int"; } - public int getLength(ByteBuffer b) { - int offset = b.position(); - final int bytelength = Integer.SIZE >> 3; - b.position(offset + bytelength); - return bytelength; - } - + @Override public Object convert(Inspector value) { return convert((int)value.asLong(EMPTY_VALUE)); } diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/JSONField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/JSONField.java index d39d541f7a0..bf9cc02b766 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/JSONField.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/JSONField.java @@ -14,77 +14,17 @@ import com.yahoo.data.access.simple.Value; * * @author Steinar Knutsen */ -public class JSONField extends DocsumField implements VariableLengthField { +public class JSONField extends DocsumField { public JSONField(String name) { super(name); } - @Override - public Object decode(ByteBuffer b) { - long dataLen = 0; - long len = ((long) b.getInt()) & 0xffffffffL; - boolean compressed; - JSONString field; - - // if MSB is set this is a compressed field. set the compressed - // flag accordingly and decompress the data - compressed = ((len & 0x80000000) != 0); - if (compressed) { - len &= 0x7fffffff; - dataLen = b.getInt(); - len -= 4; - } - - byte[] tmp = new byte[(int) len]; - - b.get(tmp); - - if (compressed) { - SlowInflate inf = new SlowInflate(); - - tmp = inf.unpack(tmp, (int) dataLen); - } - - field = new JSONString(Utf8.toString(tmp)); - return field; - } - - @Override - public Object decode(ByteBuffer b, FastHit hit) { - Object field = decode(b); - hit.setField(name, field); - return field; - } - @Override public String toString() { return "field " + getName() + " type JSONString"; } - @Override - public int getLength(ByteBuffer b) { - int offset = b.position(); - // MSB = compression flag, re decode - int len = b.getInt() & 0x7fffffff; - b.position(offset + len + (Integer.SIZE >> 3)); - return len + (Integer.SIZE >> 3); - } - - @Override - public boolean isCompressed(ByteBuffer b) { - int offset = b.position(); - // MSB = compression flag, re decode - int compressed = b.getInt() & 0x80000000; - b.position(offset); - return compressed != 0; - } - - @Override - public int sizeOfLength() { - return Integer.SIZE >> 3; - } - private static class CompatibilityConverter { Value.ArrayValue target = new Value.ArrayValue(); @@ -167,6 +107,7 @@ public class JSONField extends DocsumField implements VariableLengthField { return value; } + @Override public Object convert(Inspector value) { if (value.valid()) { return new JSONString(convertTop(value)); @@ -174,4 +115,5 @@ public class JSONField extends DocsumField implements VariableLengthField { return new JSONString(""); } } + } diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/LongdataField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/LongdataField.java index 9d22168485c..bf77c517d50 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/LongdataField.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/LongdataField.java @@ -15,7 +15,7 @@ import com.yahoo.data.access.Inspector; /** * @author Bjørn Borud */ -public class LongdataField extends DocsumField implements VariableLengthField { +public class LongdataField extends DocsumField { public LongdataField(String name) { super(name); @@ -25,63 +25,6 @@ public class LongdataField extends DocsumField implements VariableLengthField { return new RawData(value); } - @Override - public Object decode(ByteBuffer b) { - long dataLen = 0; - long len = ((long) b.getInt()) & 0xffffffffL; - boolean compressed; - - // if MSB is set this is a compressed field. set the compressed - // flag accordingly and decompress the data - compressed = ((len & 0x80000000) != 0); - if (compressed) { - len &= 0x7fffffff; - dataLen = b.getInt(); - len -= 4; - } - - byte[] tmp = new byte[(int) len]; - - b.get(tmp); - - if (compressed) { - SlowInflate inf = new SlowInflate(); - - tmp = inf.unpack(tmp, (int) dataLen); - } - return convert(tmp); - } - - @Override - public Object decode(ByteBuffer b, FastHit hit) { - Object field = decode(b); - hit.setField(name, field); - return field; - } - - @Override - public int getLength(ByteBuffer b) { - int offset = b.position(); - // MSB = compression flag, re decode - int len = b.getInt() & 0x7fffffff; - b.position(offset + len + (Integer.SIZE >> 3)); - return len + (Integer.SIZE >> 3); - } - - @Override - public boolean isCompressed(ByteBuffer b) { - int offset = b.position(); - // MSB = compression flag, re decode - int compressed = b.getInt() & 0x80000000; - b.position(offset); - return compressed != 0; - } - - @Override - public int sizeOfLength() { - return Integer.SIZE >> 3; - } - @Override public Object convert(Inspector value) { return convert(value.asData(Value.empty().asData())); diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/LongstringField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/LongstringField.java index 9914bedd0db..2f9c6d5b325 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/LongstringField.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/LongstringField.java @@ -14,73 +14,15 @@ import com.yahoo.data.access.Inspector; /** * @author Bjørn Borud */ -public class LongstringField extends DocsumField implements VariableLengthField { +public class LongstringField extends DocsumField { public LongstringField(String name) { super(name); } - @Override - public Object decode(ByteBuffer b) { - long dataLen = 0; - long len = ((long) b.getInt()) & 0xffffffffL; - boolean compressed; - String field; - - // if MSB is set this is a compressed field. set the compressed - // flag accordingly and decompress the data - compressed = ((len & 0x80000000) != 0); - if (compressed) { - len &= 0x7fffffff; - dataLen = b.getInt(); - len -= 4; - } - - byte[] tmp = new byte[(int) len]; - - b.get(tmp); - - if (compressed) { - SlowInflate inf = new SlowInflate(); - - tmp = inf.unpack(tmp, (int) dataLen); - } - field = Utf8.toString(tmp); - return field; - } - - @Override - public Object decode(ByteBuffer b, FastHit hit) { - Object field = decode(b); - hit.setField(name, field); - return field; - } - - @Override - public int getLength(ByteBuffer b) { - int offset = b.position(); - // MSB = compression flag, re decode - int len = b.getInt() & 0x7fffffff; - b.position(offset + len + (Integer.SIZE >> 3)); - return len + (Integer.SIZE >> 3); - } - - @Override - public boolean isCompressed(ByteBuffer b) { - int offset = b.position(); - // MSB = compression flag, re decode - int compressed = b.getInt() & 0x80000000; - b.position(offset); - return compressed != 0; - } - - @Override - public int sizeOfLength() { - return Integer.SIZE >> 3; - } - @Override public Object convert(Inspector value) { return value.asString(""); } + } diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/PacketCache.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/PacketCache.java index 8e93f57ef34..ce3ccb1d1b8 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/PacketCache.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/PacketCache.java @@ -13,8 +13,8 @@ import com.yahoo.log.LogLevel; * An LRU cache using number of hits cached inside the results as * size limiting factor. Directly modelled after com.yahoo.collections.Cache. * - * @author Steinar Knutsen - * @author bratseth + * @author Steinar Knutsen + * @author bratseth */ // TODO: Remove packet cache as it timed out a long time ago. // 1 - It does not work with grouping, 2 the packet protocol is eroding away. diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/PacketWrapper.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/PacketWrapper.java index a6abe05334a..2b1b7dd24cc 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/PacketWrapper.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/PacketWrapper.java @@ -22,12 +22,13 @@ import com.yahoo.document.DocumentId; * A wrapper for cache entries to make it possible to check whether the * hits are truly correct. * - * @author Steinar Knutsen - * @author Mathias Lidal + * @author Steinar Knutsen + * @author Mathias Lidal */ // TODO: Remove packet cache as it timed out a long time ago. // 1 - It does not work with grouping, 2 the packet protocol is eroding away. public class PacketWrapper implements Cloneable { + private static Logger log = Logger.getLogger(PacketWrapper.class.getName()); final int keySize; @@ -288,6 +289,7 @@ public class PacketWrapper implements Cloneable { * Straightforward shallow copy. */ @SuppressWarnings("unchecked") + @Override public Object clone() { try { PacketWrapper other = (PacketWrapper) super.clone(); @@ -301,4 +303,5 @@ public class PacketWrapper implements Cloneable { e); } } + } diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/ShortField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/ShortField.java index be4dd3e20a5..5e3d0babe98 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/ShortField.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/ShortField.java @@ -15,6 +15,7 @@ import com.yahoo.data.access.Inspector; * @author Bjørn Borud */ public class ShortField extends DocsumField { + static final short EMPTY_VALUE = Short.MIN_VALUE; public ShortField(String name) { @@ -29,24 +30,9 @@ public class ShortField extends DocsumField { } } - public Object decode(ByteBuffer b) { - return convert(b.getShort()); - } - - public Object decode(ByteBuffer b, FastHit hit) { - Object field = decode(b); - hit.setField(name, field); - return field; - } - - public int getLength(ByteBuffer b) { - int offset = b.position(); - final int bytelength = Short.SIZE >> 3; - b.position(offset + bytelength); - return bytelength; - } - + @Override public Object convert(Inspector value) { return convert((short)value.asLong(EMPTY_VALUE)); } + } diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/StringField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/StringField.java index 92ea7efee25..0fa4b7ee342 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/StringField.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/StringField.java @@ -15,47 +15,17 @@ import com.yahoo.data.access.Inspector; /** * @author Bjørn Borud */ -public class StringField extends DocsumField implements VariableLengthField { +public class StringField extends DocsumField { public StringField(String name) { super(name); } - @Override - public Object decode(ByteBuffer b) { - int length = ((int) b.getShort()) & 0xffff; - Object field; - - field = Utf8.toString(b.array(), b.arrayOffset() + b.position(), length); - b.position(b.position() + length); - return field; - } - - @Override - public Object decode(ByteBuffer b, FastHit hit) { - Object field = decode(b); - hit.setField(name, field); - return field; - } - @Override public String toString() { return "field " + getName() + " type string"; } - @Override - public int getLength(ByteBuffer b) { - int offset = b.position(); - int len = ((int) b.getShort()) & 0xffff; - b.position(offset + len + (Short.SIZE >> 3)); - return len + (Short.SIZE >> 3); - } - - @Override - public int sizeOfLength() { - return Short.SIZE >> 3; - } - @Override public Object convert(Inspector value) { return value.asString(""); diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/StructDataField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/StructDataField.java index 7f96cbf77e1..9521854477a 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/StructDataField.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/StructDataField.java @@ -21,6 +21,7 @@ public class StructDataField extends JSONField { return "field " + getName() + " type StructDataField"; } + @Override public Object convert(Inspector value) { if (getEmulConfig().stringBackedStructuredData() || value.type() == Type.STRING) { return super.convert(value); diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/SummaryParameters.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/SummaryParameters.java index 98d7da2cad5..603d576ddb5 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/SummaryParameters.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/SummaryParameters.java @@ -5,7 +5,7 @@ package com.yahoo.prelude.fastsearch; /** * Wrapper for document summary parameters and configuration. * - * @author Steinar Knutsen + * @author Steinar Knutsen */ public class SummaryParameters { diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/TensorField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/TensorField.java index d8b38667224..1b91a66aef6 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/TensorField.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/TensorField.java @@ -16,47 +16,17 @@ import java.util.Optional; * * @author bratseth */ -public class TensorField extends DocsumField implements VariableLengthField { +public class TensorField extends DocsumField { public TensorField(String name) { super(name); } - @Override - public Tensor decode(ByteBuffer buffer) { - int length = buffer.getInt(); - if (length == 0) return null; - ByteBuffer contentBuffer = ByteBuffer.wrap(buffer.array(), buffer.arrayOffset() + buffer.position(), length); - Tensor tensor = TypedBinaryFormat.decode(Optional.empty(), new GrowableByteBuffer(contentBuffer)); - buffer.position(buffer.position() + length); - return tensor; - } - - @Override - public Tensor decode(ByteBuffer b, FastHit hit) { - Tensor tensor = decode(b); - hit.setField(name, tensor); - return tensor; - } - @Override public String toString() { return "field " + getName() + " type tensor"; } - @Override - public int getLength(ByteBuffer b) { - int offset = b.position(); - int length = b.getInt(); - b.position(offset + length); - return length; - } - - @Override - public int sizeOfLength() { - return 4; - } - @Override public Object convert(Inspector value) { byte[] content = value.asData(Value.empty().asData()); diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/VariableLengthField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/VariableLengthField.java deleted file mode 100644 index 53dad510761..00000000000 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/VariableLengthField.java +++ /dev/null @@ -1,15 +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.prelude.fastsearch; - -/** - * Interface to easier find the start of the actual data for variable length - * fields. - * - * @author Steinar Knutsen - */ -public interface VariableLengthField { - - /** Returns the size of the length preceeding the data of this field, in bytes */ - int sizeOfLength(); - -} diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/XMLField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/XMLField.java index 366c4e1bb51..5c85c3641cf 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/XMLField.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/XMLField.java @@ -15,9 +15,10 @@ import com.yahoo.data.access.Inspector; /** - * @author Steinar Knutsen + * @author Steinar Knutsen */ -public class XMLField extends DocsumField implements VariableLengthField { +public class XMLField extends DocsumField { + public XMLField(String name) { super(name); } @@ -26,68 +27,12 @@ public class XMLField extends DocsumField implements VariableLengthField { return new XMLString(value); } - @Override - public Object decode(ByteBuffer b) { - long dataLen = 0; - long len = ((long) b.getInt()) & 0xffffffffL; - boolean compressed; - - // if MSB is set this is a compressed field. set the compressed - // flag accordingly and decompress the data - compressed = ((len & 0x80000000) != 0); - if (compressed) { - len &= 0x7fffffff; - dataLen = b.getInt(); - len -= 4; - } - - byte[] tmp = new byte[(int) len]; - - b.get(tmp); - - if (compressed) { - SlowInflate inf = new SlowInflate(); - - tmp = inf.unpack(tmp, (int) dataLen); - } - return convert(Utf8.toString(tmp)); - } - - @Override - public Object decode(ByteBuffer b, FastHit hit) { - Object field = decode(b); - hit.setField(name, field); - return field; - } - @Override public String toString() { return "field " + getName() + " type XMLString"; } @Override - public int getLength(ByteBuffer b) { - int offset = b.position(); - // MSB = compression flag, re decode - int len = b.getInt() & 0x7fffffff; - b.position(offset + len + (Integer.SIZE >> 3)); - return len + (Integer.SIZE >> 3); - } - - @Override - public boolean isCompressed(ByteBuffer b) { - int offset = b.position(); - // MSB = compression flag, re decode - int compressed = b.getInt() & 0x80000000; - b.position(offset); - return compressed != 0; - } - - @Override - public int sizeOfLength() { - return Integer.SIZE >> 3; - } - public Object convert(Inspector value) { return convert(value.asString("")); } diff --git a/container-search/src/main/java/com/yahoo/search/rendering/DefaultRenderer.java b/container-search/src/main/java/com/yahoo/search/rendering/DefaultRenderer.java index f0c7b1a183f..bae1185d6a9 100644 --- a/container-search/src/main/java/com/yahoo/search/rendering/DefaultRenderer.java +++ b/container-search/src/main/java/com/yahoo/search/rendering/DefaultRenderer.java @@ -221,8 +221,8 @@ public final class DefaultRenderer extends AsynchronousSectionedRenderer } private void renderSyntheticRelevanceField(XMLWriter writer, Hit hit) { - final String relevancyFieldName = "relevancy"; - final Relevance relevance = hit.getRelevance(); + String relevancyFieldName = "relevancy"; + Relevance relevance = hit.getRelevance(); // skip depending on hit type if (relevance != null) { diff --git a/container-search/src/main/java/com/yahoo/search/searchchain/AsyncExecution.java b/container-search/src/main/java/com/yahoo/search/searchchain/AsyncExecution.java index daa1499389a..d74f29a3b77 100644 --- a/container-search/src/main/java/com/yahoo/search/searchchain/AsyncExecution.java +++ b/container-search/src/main/java/com/yahoo/search/searchchain/AsyncExecution.java @@ -181,7 +181,7 @@ public class AsyncExecution { for (FutureResult task : workingTasks) task.get(); }).get(timeoutMs, TimeUnit.MILLISECONDS); - }catch (TimeoutException | InterruptedException | ExecutionException e) { + } catch (TimeoutException | InterruptedException | ExecutionException e) { // Handle timeouts below } diff --git a/container-search/src/test/java/com/yahoo/prelude/fastsearch/DocsumFieldTestCase.java b/container-search/src/test/java/com/yahoo/prelude/fastsearch/DocsumFieldTestCase.java deleted file mode 100644 index 8efbeaec10d..00000000000 --- a/container-search/src/test/java/com/yahoo/prelude/fastsearch/DocsumFieldTestCase.java +++ /dev/null @@ -1,64 +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.prelude.fastsearch; - -import org.junit.Test; - -import java.nio.ByteBuffer; -import java.nio.ByteOrder; - -import static org.junit.Assert.assertEquals; - -/** - * Tests DocsumField class functionality - * - * @author Bjørn Borud - */ -public class DocsumFieldTestCase { - - @Test - public void testConstructors() { - DocsumField.create("test", "string"); - DocsumField.create("test", "integer"); - DocsumField.create("test", "byte"); - DocsumField.create("test", "int64"); - } - - @Test - public void testByte() { - FastHit hit = new FastHit(); - DocsumField c = DocsumField.create("test", "byte"); - byte[] byteData = { 10, 20, 30, 40}; - ByteBuffer buffer = ByteBuffer.wrap(byteData); - buffer.order(ByteOrder.LITTLE_ENDIAN); - - c.decode(buffer, hit); - assertEquals(1, buffer.position()); - assertEquals("10", hit.getField("test").toString()); - - c.decode(buffer, hit); - assertEquals(2, buffer.position()); - assertEquals("20", hit.getField("test").toString()); - - c.decode(buffer, hit); - assertEquals(3, buffer.position()); - assertEquals("30", hit.getField("test").toString()); - } - - @Test - public void testLongString() { - FastHit hit = new FastHit(); - DocsumField c = DocsumField.create("test", "longstring"); - byte[] byteData = { 4, 0, 0, 0, 'c', 'a', 'f', 'e', 4, 0, 0, 0, 'B', 'A', 'B', 'E' }; - ByteBuffer buffer = ByteBuffer.wrap(byteData); - buffer.order(ByteOrder.LITTLE_ENDIAN); - - c.decode(buffer, hit); - assertEquals(8, buffer.position()); - assertEquals("cafe", hit.getField("test")); - - c.decode(buffer, hit); - assertEquals(16, buffer.position()); - assertEquals("BABE", hit.getField("test")); - } - -} diff --git a/container-search/src/test/java/com/yahoo/prelude/fastsearch/FieldsTestCase.java b/container-search/src/test/java/com/yahoo/prelude/fastsearch/FieldsTestCase.java deleted file mode 100644 index 632ea96ad30..00000000000 --- a/container-search/src/test/java/com/yahoo/prelude/fastsearch/FieldsTestCase.java +++ /dev/null @@ -1,322 +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.prelude.fastsearch; - -import static org.junit.Assert.*; - -import java.nio.ByteBuffer; -import java.util.zip.Deflater; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import com.yahoo.prelude.hitfield.JSONString; -import com.yahoo.prelude.hitfield.XMLString; -import com.yahoo.search.result.NanNumber; -import com.yahoo.text.Utf8; - -public class FieldsTestCase { - - ByteBuffer scratchSpace; - FastHit contains; - String fieldName = "field"; - - @Before - public void setUp() throws Exception { - scratchSpace = ByteBuffer.allocate(10000); - contains = new FastHit(); - } - - @After - public void tearDown() throws Exception { - } - - @Test - public final void testByte() { - int s = scratchSpace.position(); - final byte value = (byte) 5; - scratchSpace.put(value); - int l = scratchSpace.position(); - scratchSpace.flip(); - assertEquals(l, new ByteField(fieldName).getLength(scratchSpace)); - scratchSpace.position(s); - new ByteField(fieldName).decode(scratchSpace, contains); - assertEquals(Byte.valueOf(value), contains.getField(fieldName)); - } - - @Test - public final void testData() { - String value = "nalle"; - int s = scratchSpace.position(); - scratchSpace.putShort((short) value.length()); - scratchSpace.put(Utf8.toBytes(value)); - int l = scratchSpace.position(); - scratchSpace.flip(); - assertEquals(l, new DataField(fieldName).getLength(scratchSpace)); - scratchSpace.position(s); - new DataField(fieldName).decode(scratchSpace, contains); - assertEquals(value, contains.getField(fieldName).toString()); - } - - @Test - public final void testDouble() { - int s = scratchSpace.position(); - final double value = 5.0d; - scratchSpace.putDouble(value); - int l = scratchSpace.position(); - scratchSpace.flip(); - assertEquals(l, new DoubleField(fieldName).getLength(scratchSpace)); - scratchSpace.position(s); - new DoubleField(fieldName).decode(scratchSpace, contains); - // slightly evil, but value is a exactly expressible as a double - assertEquals(Double.valueOf(value), contains.getField(fieldName)); - } - - @Test - public final void testFloat() { - int s = scratchSpace.position(); - final float value = 5.0f; - scratchSpace.putFloat(value); - int l = scratchSpace.position(); - scratchSpace.flip(); - assertEquals(l, new FloatField(fieldName).getLength(scratchSpace)); - scratchSpace.position(s); - new FloatField(fieldName).decode(scratchSpace, contains); - // slightly evil, but value is a exactly expressible as a float - assertEquals(Float.valueOf(value), contains.getField(fieldName)); - } - - @Test - public final void testInt64() { - int s = scratchSpace.position(); - final long value = 5; - scratchSpace.putLong(value); - int l = scratchSpace.position(); - scratchSpace.flip(); - assertEquals(l, new Int64Field(fieldName).getLength(scratchSpace)); - scratchSpace.position(s); - new Int64Field(fieldName).decode(scratchSpace, contains); - assertEquals(Long.valueOf(value), contains.getField(fieldName)); - } - - @Test - public final void testInteger() { - int s = scratchSpace.position(); - final int value = 5; - scratchSpace.putInt(value); - int l = scratchSpace.position(); - scratchSpace.flip(); - assertEquals(l, new IntegerField(fieldName).getLength(scratchSpace)); - scratchSpace.position(s); - new IntegerField(fieldName).decode(scratchSpace, contains); - assertEquals(Integer.valueOf(value), contains.getField(fieldName)); - } - - @Test - public final void testNanExpressions() { - byte b = ByteField.EMPTY_VALUE; - short s = ShortField.EMPTY_VALUE; - int i = IntegerField.EMPTY_VALUE; - long l = Int64Field.EMPTY_VALUE; - assertFalse(((short) b) == s); - assertFalse(((int) s) == i); - assertFalse(((long) i) == l); - scratchSpace.put(b); - scratchSpace.putShort(s); - scratchSpace.putInt(i); - scratchSpace.putLong(l); - scratchSpace.putFloat(Float.NaN); - scratchSpace.putDouble(Double.NaN); - scratchSpace.flip(); - final String bytename = fieldName + "_b"; - new ByteField(bytename).decode(scratchSpace, contains); - final String shortname = fieldName + "_s"; - new ShortField(shortname).decode(scratchSpace, contains); - final String intname = fieldName + "_i"; - new IntegerField(intname).decode(scratchSpace, contains); - final String longname = fieldName + "_l"; - new Int64Field(longname).decode(scratchSpace, contains); - final String floatname = fieldName + "_f"; - new FloatField(floatname).decode(scratchSpace, contains); - final String doublename = fieldName + "_d"; - new DoubleField(doublename).decode(scratchSpace, contains); - assertSame(NanNumber.NaN, contains.getField(bytename)); - assertSame(NanNumber.NaN, contains.getField(shortname)); - assertSame(NanNumber.NaN, contains.getField(intname)); - assertSame(NanNumber.NaN, contains.getField(longname)); - assertSame(NanNumber.NaN, contains.getField(floatname)); - assertSame(NanNumber.NaN, contains.getField(doublename)); - } - - @Test - public final void testJSON() { - String value = "{1: 2}"; - int s = scratchSpace.position(); - scratchSpace.putInt(value.length()); - scratchSpace.put(Utf8.toBytes(value)); - int l = scratchSpace.position(); - scratchSpace.flip(); - assertEquals(l, new JSONField(fieldName).getLength(scratchSpace)); - scratchSpace.position(s); - new JSONField(fieldName).decode(scratchSpace, contains); - assertEquals(value, ((JSONString) contains.getField(fieldName)).getContent()); - } - - @Test - public final void testLongdata() { - String value = "nalle"; - int s = scratchSpace.position(); - scratchSpace.putInt(value.length()); - scratchSpace.put(Utf8.toBytes(value)); - int l = scratchSpace.position(); - scratchSpace.flip(); - assertEquals(l, new LongdataField(fieldName).getLength(scratchSpace)); - scratchSpace.position(s); - new LongdataField(fieldName).decode(scratchSpace, contains); - assertEquals(value, contains.getField(fieldName).toString()); - } - - @Test - public final void testLongstring() { - String value = "nalle"; - int s = scratchSpace.position(); - scratchSpace.putInt(value.length()); - scratchSpace.put(Utf8.toBytes(value)); - int l = scratchSpace.position(); - scratchSpace.flip(); - assertEquals(l, new LongstringField(fieldName).getLength(scratchSpace)); - scratchSpace.position(s); - new LongstringField(fieldName).decode(scratchSpace, contains); - assertEquals(value, contains.getField(fieldName)); - } - - @Test - public final void testShort() { - int s = scratchSpace.position(); - final short value = 5; - scratchSpace.putShort(value); - int l = scratchSpace.position(); - scratchSpace.flip(); - assertEquals(l, new ShortField(fieldName).getLength(scratchSpace)); - scratchSpace.position(s); - new ShortField(fieldName).decode(scratchSpace, contains); - assertEquals(Short.valueOf(value), contains.getField(fieldName)); - } - - @Test - public final void testString() { - String value = "nalle"; - int s = scratchSpace.position(); - scratchSpace.putShort((short) value.length()); - scratchSpace.put(Utf8.toBytes(value)); - int l = scratchSpace.position(); - scratchSpace.flip(); - assertEquals(l, new StringField(fieldName).getLength(scratchSpace)); - scratchSpace.position(s); - new StringField(fieldName).decode(scratchSpace, contains); - assertEquals(value, contains.getField(fieldName)); - } - - @Test - public final void testXML() { - String value = "nalle"; - int s = scratchSpace.position(); - scratchSpace.putInt(value.length()); - scratchSpace.put(Utf8.toBytes(value)); - int l = scratchSpace.position(); - scratchSpace.flip(); - assertEquals(l, new XMLField(fieldName).getLength(scratchSpace)); - scratchSpace.position(s); - new XMLField(fieldName).decode(scratchSpace, contains); - assertTrue(contains.getField(fieldName).getClass() == XMLString.class); - assertEquals(value, contains.getField(fieldName).toString()); - } - - @Test - public final void testCompressionLongdata() { - String value = "000000000000000000000000000000000000000000000000000000000000000"; - byte[] raw = Utf8.toBytesStd(value); - byte[] output = new byte[raw.length * 2]; - Deflater compresser = new Deflater(); - compresser.setInput(raw); - compresser.finish(); - int compressedDataLength = compresser.deflate(output); - compresser.end(); - scratchSpace.putInt((compressedDataLength + 4) | (1 << 31)); - scratchSpace.putInt(raw.length); - scratchSpace.put(output, 0, compressedDataLength); - scratchSpace.flip(); - assertTrue(new LongdataField(fieldName).isCompressed(scratchSpace)); - new LongdataField(fieldName).decode(scratchSpace, contains); - assertEquals(value, contains.getField(fieldName).toString()); - } - - @Test - public final void testCompressionJson() { - String value = "{0:000000000000000000000000000000000000000000000000000000000000000}"; - byte[] raw = Utf8.toBytesStd(value); - byte[] output = new byte[raw.length * 2]; - Deflater compresser = new Deflater(); - compresser.setInput(raw); - compresser.finish(); - int compressedDataLength = compresser.deflate(output); - compresser.end(); - scratchSpace.putInt((compressedDataLength + 4) | (1 << 31)); - scratchSpace.putInt(raw.length); - scratchSpace.put(output, 0, compressedDataLength); - scratchSpace.flip(); - assertTrue(new JSONField(fieldName).isCompressed(scratchSpace)); - new JSONField(fieldName).decode(scratchSpace, contains); - assertEquals(value, ((JSONString) contains.getField(fieldName)).getContent()); - } - - @Test - public final void testCompressionLongstring() { - String value = "000000000000000000000000000000000000000000000000000000000000000"; - byte[] raw = Utf8.toBytesStd(value); - byte[] output = new byte[raw.length * 2]; - Deflater compresser = new Deflater(); - compresser.setInput(raw); - compresser.finish(); - int compressedDataLength = compresser.deflate(output); - compresser.end(); - scratchSpace.putInt((compressedDataLength + 4) | (1 << 31)); - scratchSpace.putInt(raw.length); - scratchSpace.put(output, 0, compressedDataLength); - scratchSpace.flip(); - assertTrue(new LongstringField(fieldName).isCompressed(scratchSpace)); - new LongstringField(fieldName).decode(scratchSpace, contains); - assertEquals(value, contains.getField(fieldName)); - } - - @Test - public final void testCompressionXml() { - String value = "000000000000000000000000000000000000000000000000000000000000000"; - byte[] raw = Utf8.toBytesStd(value); - byte[] output = new byte[raw.length * 2]; - Deflater compresser = new Deflater(); - compresser.setInput(raw); - compresser.finish(); - int compressedDataLength = compresser.deflate(output); - compresser.end(); - scratchSpace.putInt((compressedDataLength + 4) | (1 << 31)); - scratchSpace.putInt(raw.length); - scratchSpace.put(output, 0, compressedDataLength); - scratchSpace.flip(); - assertTrue(new XMLField(fieldName).isCompressed(scratchSpace)); - new XMLField(fieldName).decode(scratchSpace, contains); - assertTrue(contains.getField(fieldName).getClass() == XMLString.class); - assertEquals(value, contains.getField(fieldName).toString()); - - } - - @Test - public final void checkLengthFieldLengths() { - assertEquals(2, new DataField(fieldName).sizeOfLength()); - assertEquals(4, new JSONField(fieldName).sizeOfLength()); - assertEquals(4, new LongdataField(fieldName).sizeOfLength()); - assertEquals(4, new LongstringField(fieldName).sizeOfLength()); - assertEquals(2, new StringField(fieldName).sizeOfLength()); - assertEquals(4, new XMLField(fieldName).sizeOfLength()); - } -} diff --git a/container-search/src/test/java/com/yahoo/prelude/fastsearch/JsonFieldTestCase.java b/container-search/src/test/java/com/yahoo/prelude/fastsearch/JsonFieldTestCase.java index 497da70f5ca..01d658e9c88 100644 --- a/container-search/src/test/java/com/yahoo/prelude/fastsearch/JsonFieldTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/fastsearch/JsonFieldTestCase.java @@ -12,14 +12,6 @@ import com.yahoo.data.access.simple.*; public class JsonFieldTestCase { - @Before - public void setUp() throws Exception { - } - - @After - public void tearDown() throws Exception { - } - @Test public final void requireThatWeightedSetsItemsAreConvertedToStrings() { Value.ArrayValue topArr = new Value.ArrayValue(); diff --git a/container-search/src/test/java/com/yahoo/search/searchchain/test/AsyncExecutionTestCase.java b/container-search/src/test/java/com/yahoo/search/searchchain/test/AsyncExecutionTestCase.java index 9ea637a5554..3bae38907eb 100644 --- a/container-search/src/test/java/com/yahoo/search/searchchain/test/AsyncExecutionTestCase.java +++ b/container-search/src/test/java/com/yahoo/search/searchchain/test/AsyncExecutionTestCase.java @@ -146,6 +146,7 @@ public class AsyncExecutionTestCase { } + @Test public void testAsyncExecutionTimeout() { Chain chain = new Chain<>(new Searcher() { @Override diff --git a/container-search/src/test/java/com/yahoo/search/searchchain/test/VespaAsyncSearcherTest.java b/container-search/src/test/java/com/yahoo/search/searchchain/test/VespaAsyncSearcherTest.java index 567b73783b1..77a515b458d 100644 --- a/container-search/src/test/java/com/yahoo/search/searchchain/test/VespaAsyncSearcherTest.java +++ b/container-search/src/test/java/com/yahoo/search/searchchain/test/VespaAsyncSearcherTest.java @@ -14,26 +14,32 @@ import java.util.ArrayList; import java.util.List; /** - * Externally provided test for async execution of search chains. + * Tests async execution of search chains. * * @author Peter Thomas + * @author bratseth */ public class VespaAsyncSearcherTest { private static class FirstSearcher extends Searcher { @Override - public Result search(Query query, Execution exctn) { + public Result search(Query query, Execution execution) { int count = 10; List futures = new ArrayList<>(count); for (int i = 0; i < count; i++) { - Query subQuery = new Query(); - FutureResult future = new AsyncExecution(exctn) - .search(subQuery); + Query subQuery = query.clone(); + FutureResult future = new AsyncExecution(execution).search(subQuery); futures.add(future); } AsyncExecution.waitForAll(futures, 10 * 60 * 1000); - return new Result(query); + Result combinedResult = new Result(query); + for (FutureResult resultFuture : futures) { + Result result = resultFuture.get(); + combinedResult.mergeWith(result); + combinedResult.hits().add(result.hits()); + } + return combinedResult; } } @@ -52,7 +58,6 @@ public class VespaAsyncSearcherTest { Chain chain = new Chain<>(new FirstSearcher(), new SecondSearcher()); Execution execution = new Execution(chain, Execution.Context.createContextStub(null)); Query query = new Query(); - // fails with exception on old versions execution.search(query); } -- cgit v1.2.3