summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@oath.com>2018-05-10 23:40:43 +0200
committerJon Bratseth <bratseth@oath.com>2018-05-10 23:40:43 +0200
commit837e33533ba3c109aeb48f2cfcc10d0b28a8a1b8 (patch)
tree8d675b966ea8b7461f484a400ac7d9d8adf7d0cd
parente9bc22ad954be93f431cd261a203f520b2d2318c (diff)
Remove some dead code
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/ByteField.java22
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/DataField.java31
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/Docsum.java68
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumField.java21
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumPacketKey.java8
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/DoubleField.java22
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/FeatureDataField.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/FloatField.java18
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/Int64Field.java23
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/IntegerField.java20
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/JSONField.java64
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/LongdataField.java59
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/LongstringField.java62
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/PacketCache.java4
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/PacketWrapper.java7
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/ShortField.java20
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/StringField.java32
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/StructDataField.java1
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/SummaryParameters.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/TensorField.java32
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/VariableLengthField.java15
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/XMLField.java61
-rw-r--r--container-search/src/main/java/com/yahoo/search/rendering/DefaultRenderer.java4
-rw-r--r--container-search/src/main/java/com/yahoo/search/searchchain/AsyncExecution.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/fastsearch/DocsumFieldTestCase.java64
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/fastsearch/FieldsTestCase.java322
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/fastsearch/JsonFieldTestCase.java8
-rw-r--r--container-search/src/test/java/com/yahoo/search/searchchain/test/AsyncExecutionTestCase.java1
-rw-r--r--container-search/src/test/java/com/yahoo/search/searchchain/test/VespaAsyncSearcherTest.java19
29 files changed, 61 insertions, 953 deletions
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 <a href="mailto:borud@yahoo-inc.com">Bj\u00f8rn Borud</a>
+ * @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);
@@ -30,40 +30,11 @@ public class DataField extends DocsumField implements VariableLengthField {
}
@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 <a href="mailto:mathiasm@yahoo-inc.com">Mathias M\u00f8lster Lidal</a>
+ * @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 <a href="mailto:mathiasm@yahoo-inc.com">Mathias M\u00f8lster Lidal</a>
+ * @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 <a href="mailto:borud@yahoo-inc.com">Bj\u00f8rn Borud</a>
+ * @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
@@ -31,29 +31,11 @@ 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);
@@ -26,63 +26,6 @@ public class LongdataField extends DocsumField implements VariableLengthField {
}
@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 <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a>
- * @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 <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a>
- * @author <a href="mailto:mathiasm@yahoo-inc.com">Mathias Lidal</a>
+ * @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,48 +15,18 @@ 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 <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a>
+ * @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,48 +16,18 @@ 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());
if (content.length == 0) return null;
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 <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a>
+ * @author Steinar Knutsen
*/
-public class XMLField extends DocsumField implements VariableLengthField {
+public class XMLField extends DocsumField {
+
public XMLField(String name) {
super(name);
}
@@ -27,67 +28,11 @@ public class XMLField extends DocsumField implements VariableLengthField {
}
@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<Result>
}
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<Searcher> 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<FutureResult> 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<Searcher> 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);
}