summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@oath.com>2018-02-26 09:12:06 +0100
committerJon Bratseth <bratseth@oath.com>2018-02-26 09:12:06 +0100
commit5e444ba5af219de555edeeb78aeeaaaae9fd8335 (patch)
tree3d5d8ca68b9c11c76631f228e8ca8edcac0334ca /container-search
parent3777557b0069026d0ba5ace3ff66fca6c7354d92 (diff)
Nonfunctional changes only
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/test/java/com/yahoo/fs4/test/QueryTestCase.java243
1 files changed, 126 insertions, 117 deletions
diff --git a/container-search/src/test/java/com/yahoo/fs4/test/QueryTestCase.java b/container-search/src/test/java/com/yahoo/fs4/test/QueryTestCase.java
index 603e38e04f1..815919cd29e 100644
--- a/container-search/src/test/java/com/yahoo/fs4/test/QueryTestCase.java
+++ b/container-search/src/test/java/com/yahoo/fs4/test/QueryTestCase.java
@@ -5,88 +5,93 @@ import com.yahoo.fs4.BufferTooSmallException;
import com.yahoo.fs4.Packet;
import com.yahoo.fs4.QueryPacket;
import com.yahoo.prelude.Freshness;
-import com.yahoo.prelude.query.*;
-import com.yahoo.prelude.querytransform.QueryRewrite;
+import com.yahoo.prelude.query.AndItem;
+import com.yahoo.prelude.query.Highlight;
+import com.yahoo.prelude.query.PhraseItem;
+import com.yahoo.prelude.query.PhraseSegmentItem;
+import com.yahoo.prelude.query.WeightedSetItem;
+import com.yahoo.prelude.query.WordItem;
import com.yahoo.search.Query;
+import org.junit.Test;
import java.nio.ByteBuffer;
-import java.util.Arrays;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
/**
* Tests encoding of query x packages
*
* @author bratseth
*/
-public class QueryTestCase extends junit.framework.TestCase {
-
- public QueryTestCase(String name) {
- super(name);
- }
+public class QueryTestCase {
- public void testEncodePacket() throws BufferTooSmallException {
- Query query=new Query("/?query=chain&timeout=0");
+ @Test
+ public void testEncodePacket() {
+ Query query = new Query("/?query=chain&timeout=0");
query.setWindow(2, 8);
- QueryPacket packet=QueryPacket.create(query);
- assertEquals(2,packet.getOffset());
- assertEquals(8,packet.getHits());
+ QueryPacket packet = QueryPacket.create(query);
+ assertEquals(2, packet.getOffset());
+ assertEquals(8, packet.getHits());
byte[] encoded = packetToBytes(packet);
- byte[] correctBuffer=new byte[] {0,0,0,46,0,0,0,-38,0,0,0,0, // Header
- 0,0,0,6, // Features
- 2,
- 8,
- 0,0,0,1, // querytimeout
- 0,0,0x40,0x03, // qflags
- 7,
- 'd', 'e', 'f', 'a', 'u', 'l', 't',
- 0,0,0,1,0,0,0,8,4,
- 0,5,
- 99,104,97,105,110};
- assertEqualArrays(correctBuffer,encoded);
+ byte[] correctBuffer = new byte[] {0,0,0,46,0,0,0,-38,0,0,0,0, // Header
+ 0,0,0,6, // Features
+ 2,
+ 8,
+ 0,0,0,1, // querytimeout
+ 0,0,0x40,0x03, // qflags
+ 7,
+ 'd', 'e', 'f', 'a', 'u', 'l', 't',
+ 0,0,0,1,0,0,0,8,4,
+ 0,5,
+ 99,104,97,105,110};
+ assertEqualArrays(correctBuffer, encoded);
}
- public void testEncodeQueryPacketWithSomeAdditionalFeatures() throws BufferTooSmallException {
- Query query=new Query("/?query=chain&dataset=10&type=phrase&timeout=0");
+ @Test
+ public void testEncodeQueryPacketWithSomeAdditionalFeatures() {
+ Query query = new Query("/?query=chain&dataset=10&type=phrase&timeout=0");
// Because the rank mapping now needs config and a searcher,
// we do the sledgehammer dance:
query.getRanking().setProfile("two");
query.setWindow(2, 8);
- QueryPacket packet=QueryPacket.create(query);
+ QueryPacket packet = QueryPacket.create(query);
byte[] encoded = packetToBytes(packet);
- byte[] correctBuffer=new byte[] {0,0,0,42,0,0,0,-38,0,0,0,0, // Header
- 0,0,0,6, // Features
- 2,
- 8,
- 0,0,0,1, // querytimeout
- 0,0,0x40,0x03, // QFlags
- 3,
- 't','w','o', // Ranking
- 0,0,0,1,0,0,0,8,4,
- 0,5,
- 99,104,97,105,110};
+ byte[] correctBuffer = new byte[] {0,0,0,42,0,0,0,-38,0,0,0,0, // Header
+ 0,0,0,6, // Features
+ 2,
+ 8,
+ 0,0,0,1, // querytimeout
+ 0,0,0x40,0x03, // QFlags
+ 3,
+ 't','w','o', // Ranking
+ 0,0,0,1,0,0,0,8,4,
+ 0,5,
+ 99,104,97,105,110};
assertEqualArrays(correctBuffer, encoded);
}
/** This test will tell you if you have screwed up the binary encoding, but it won't tell you how */
- public void testEncodeQueryPacketWithManyFeatures() throws BufferTooSmallException {
- Query query=new Query("/?query=chain" +
- "&ranking.features.query(foo)=30.3&ranking.features.query(bar)=0" +
- "&ranking.properties.property.p1=v1&ranking.properties.property.p2=v2" +
- "&pos.ll=S22.4532;W123.9887&pos.radius=3&pos.attribute=place&ranking.freshness=37" +
- "&model.searchPath=7/3");
+ @Test
+ public void testEncodeQueryPacketWithManyFeatures() {
+ Query query = new Query("/?query=chain" +
+ "&ranking.features.query(foo)=30.3&ranking.features.query(bar)=0" +
+ "&ranking.properties.property.p1=v1&ranking.properties.property.p2=v2" +
+ "&pos.ll=S22.4532;W123.9887&pos.radius=3&pos.attribute=place&ranking.freshness=37" +
+ "&model.searchPath=7/3");
query.getRanking().setFreshness(new Freshness("123456"));
query.getRanking().setSorting("+field1 -field2");
query.getRanking().setProfile("two");
Highlight highlight = new Highlight();
- highlight.addHighlightTerm("field1","term1");
- highlight.addHighlightTerm("field1","term2");
+ highlight.addHighlightTerm("field1", "term1");
+ highlight.addHighlightTerm("field1", "term2");
query.getPresentation().setHighlight(highlight);
query.prepare();
- QueryPacket packet=QueryPacket.create(query);
+ QueryPacket packet = QueryPacket.create(query);
byte[] encoded = packetToBytes(packet);
- // System.out.println(Arrays.toString(encoded));
byte[] correctBuffer=new byte[] {
0, 0, 1, 23, 0, 0, 0, -38, 0, 0, 0, 0, 0, 16, 0, -122, 0, 10, ignored, ignored, ignored, ignored, 0, 0, 0x40, 0x03, 3, 't', 'w', 'o', 0, 0, 0, 3, 0, 0, 0, 4, 'r', 'a', 'n', 'k', 0, 0, 0, 5, 0, 0, 0, 11, 'p', 'r', 'o', 'p', 'e', 'r', 't', 'y', 46, 'p', '2', 0, 0, 0, 2, 'v', '2', 0, 0, 0, 11, 'p', 'r', 'o', 'p', 'e', 'r', 't', 'y', 46, 'p', '1', 0, 0, 0, 2, 'v', '1', 0, 0, 0, 3, 'f', 'o', 'o', 0, 0, 0, 4, '3', '0', 46, '3', 0, 0, 0, 3, 'b', 'a', 'r', 0, 0, 0, 1, '0', 0, 0, 0, 9, 'v', 'e', 's', 'p', 'a', 46, 'n', 'o', 'w', 0, 0, 0, 6, '1', '2', '3', '4', '5', '6', 0, 0, 0, 14, 'h', 'i', 'g', 'h', 'l', 'i', 'g', 'h', 't', 't', 'e', 'r', 'm', 's', 0, 0, 0, 3, 0, 0, 0, 6, 'f', 'i', 'e', 'l', 'd', '1', 0, 0, 0, 1, '2', 0, 0, 0, 6, 'f', 'i', 'e', 'l', 'd', '1', 0, 0, 0, 5, 't', 'e', 'r', 'm', '1', 0, 0, 0, 6, 'f', 'i', 'e', 'l', 'd', '1', 0, 0, 0, 5, 't', 'e', 'r', 'm', '2', 0, 0, 0, 5, 'm', 'o', 'd', 'e', 'l', 0, 0, 0, 1, 0, 0, 0, 10, 's', 'e', 'a', 'r', 'c', 'h', 'p', 'a', 't', 'h', 0, 0, 0, 3, '7', 47, '3', 0, 0, 0, 15, 43, 'f', 'i', 'e', 'l', 'd', '1', 32, 45, 'f', 'i', 'e', 'l', 'd', '2', 0, 0, 0, 1, 0, 0, 0, 9, 68, 1, 0, 5, 'c', 'h', 'a', 'i', 'n'
};
@@ -94,33 +99,34 @@ public class QueryTestCase extends junit.framework.TestCase {
}
/** This test will tell you if you have screwed up the binary encoding, but it won't tell you how */
- public void testEncodeQueryPacketWithManyFeaturesFresnhessAsString() throws BufferTooSmallException {
- Query query=new Query("/?query=chain" +
- "&ranking.features.query(foo)=30.3&ranking.features.query(bar)=0" +
- "&ranking.properties.property.p1=v1&ranking.properties.property.p2=v2" +
- "&pos.ll=S22.4532;W123.9887&pos.radius=3&pos.attribute=place&ranking.freshness=37" +
- "&model.searchPath=7/3");
+ @Test
+ public void testEncodeQueryPacketWithManyFeaturesFresnhessAsString() {
+ Query query = new Query("/?query=chain" +
+ "&ranking.features.query(foo)=30.3&ranking.features.query(bar)=0" +
+ "&ranking.properties.property.p1=v1&ranking.properties.property.p2=v2" +
+ "&pos.ll=S22.4532;W123.9887&pos.radius=3&pos.attribute=place&ranking.freshness=37" +
+ "&model.searchPath=7/3");
query.getRanking().setFreshness("123456");
query.getRanking().setSorting("+field1 -field2");
query.getRanking().setProfile("two");
Highlight highlight = new Highlight();
- highlight.addHighlightTerm("field1","term1");
- highlight.addHighlightTerm("field1","term2");
+ highlight.addHighlightTerm("field1", "term1");
+ highlight.addHighlightTerm("field1", "term2");
query.getPresentation().setHighlight(highlight);
query.prepare();
- QueryPacket packet=QueryPacket.create(query);
+ QueryPacket packet = QueryPacket.create(query);
byte[] encoded = packetToBytes(packet);
- // System.out.println(Arrays.toString(encoded));
byte[] correctBuffer=new byte[] {
0, 0, 1, 23, 0, 0, 0, -38, 0, 0, 0, 0, 0, 16, 0, -122, 0, 10, ignored, ignored, ignored, ignored, 0, 0, 0x40, 0x03, 3, 't', 'w', 'o', 0, 0, 0, 3, 0, 0, 0, 4, 'r', 'a', 'n', 'k', 0, 0, 0, 5, 0, 0, 0, 11, 'p', 'r', 'o', 'p', 'e', 'r', 't', 'y', 46, 'p', '2', 0, 0, 0, 2, 'v', '2', 0, 0, 0, 11, 'p', 'r', 'o', 'p', 'e', 'r', 't', 'y', 46, 'p', '1', 0, 0, 0, 2, 'v', '1', 0, 0, 0, 3, 'f', 'o', 'o', 0, 0, 0, 4, '3', '0', 46, '3', 0, 0, 0, 3, 'b', 'a', 'r', 0, 0, 0, 1, '0', 0, 0, 0, 9, 'v', 'e', 's', 'p', 'a', 46, 'n', 'o', 'w', 0, 0, 0, 6, '1', '2', '3', '4', '5', '6', 0, 0, 0, 14, 'h', 'i', 'g', 'h', 'l', 'i', 'g', 'h', 't', 't', 'e', 'r', 'm', 's', 0, 0, 0, 3, 0, 0, 0, 6, 'f', 'i', 'e', 'l', 'd', '1', 0, 0, 0, 1, '2', 0, 0, 0, 6, 'f', 'i', 'e', 'l', 'd', '1', 0, 0, 0, 5, 't', 'e', 'r', 'm', '1', 0, 0, 0, 6, 'f', 'i', 'e', 'l', 'd', '1', 0, 0, 0, 5, 't', 'e', 'r', 'm', '2', 0, 0, 0, 5, 'm', 'o', 'd', 'e', 'l', 0, 0, 0, 1, 0, 0, 0, 10, 's', 'e', 'a', 'r', 'c', 'h', 'p', 'a', 't', 'h', 0, 0, 0, 3, '7', 47, '3', 0, 0, 0, 15, 43, 'f', 'i', 'e', 'l', 'd', '1', 32, 45, 'f', 'i', 'e', 'l', 'd', '2', 0, 0, 0, 1, 0, 0, 0, 9, 68, 1, 0, 5, 'c', 'h', 'a', 'i', 'n'
};
- assertEqualArrays(correctBuffer,encoded);
+ assertEqualArrays(correctBuffer, encoded);
}
- public void testEncodeQueryPacketWithLabelsConnectivityAndSignificance() throws BufferTooSmallException {
- Query query=new Query();
+ @Test
+ public void testEncodeQueryPacketWithLabelsConnectivityAndSignificance() {
+ Query query = new Query();
AndItem and = new AndItem();
WeightedSetItem taggable1 = new WeightedSetItem("field1");
taggable1.setLabel("foo");
@@ -140,47 +146,49 @@ public class QueryTestCase extends junit.framework.TestCase {
query.prepare();
- QueryPacket packet=QueryPacket.create(query);
+ QueryPacket packet = QueryPacket.create(query);
byte[] encoded = packetToBytes(packet);
byte[] correctBuffer=new byte[] {
0, 0, 1, 16, 0, 0, 0, -38, 0, 0, 0, 0, 0, 16, 0, 6, 0, 10, ignored, ignored, ignored, ignored, 0, 0, 0x40, 0x03, 7, 'd', 'e', 'f', 'a', 'u', 'l', 't', 0, 0, 0, 1, 0, 0, 0, 4, 'r', 'a', 'n', 'k', 0, 0, 0, 5, 0, 0, 0, 18, 'v', 'e', 's', 'p', 'a', 46, 'l', 'a', 'b', 'e', 'l', 46, 'b', 'a', 'r', 46, 'i', 'd', 0, 0, 0, 1, '1', 0, 0, 0, 22, 'v', 'e', 's', 'p', 'a', 46, 't', 'e', 'r', 'm', 46, '4', 46, 'c', 'o', 'n', 'n', 'e', 'x', 'i', 't', 'y', 0, 0, 0, 1, '3', 0, 0, 0, 22, 'v', 'e', 's', 'p', 'a', 46, 't', 'e', 'r', 'm', 46, '4', 46, 'c', 'o', 'n', 'n', 'e', 'x', 'i', 't', 'y', 0, 0, 0, 4, '0', 46, '1', '5', 0, 0, 0, 25, 'v', 'e', 's', 'p', 'a', 46, 't', 'e', 'r', 'm', 46, '3', 46, 's', 'i', 'g', 'n', 'i', 'f', 'i', 'c', 'a', 'n', 'c', 'e', 0, 0, 0, 4, '0', 46, '3', '7', 0, 0, 0, 25, 'v', 'e', 's', 'p', 'a', 46, 't', 'e', 'r', 'm', 46, '4', 46, 's', 'i', 'g', 'n', 'i', 'f', 'i', 'c', 'a', 'n', 'c', 'e', 0, 0, 0, 4, '0', 46, '8', '1', 0, 0, 0, 5, 0, 0, 0, '4', 1, 4, 79, 1, 0, 6, 'f', 'i', 'e', 'l', 'd', '1', 79, 2, 0, 6, 'f', 'i', 'e', 'l', 'd', '2', 68, 3, 6, 'f', 'i', 'e', 'l', 'd', '3', 5, 'w', 'o', 'r', 'd', '1', 68, 4, 6, 'f', 'i', 'e', 'l', 'd', '3', 5, 'w', 'o', 'r', 'd', 49
};
- assertEqualArrays(correctBuffer,encoded);
+ assertEqualArrays(correctBuffer, encoded);
}
+ @Test
public void testEncodeSortSpec() throws BufferTooSmallException {
- Query query=new Query("/?query=chain&sortspec=%2Ba+-b&timeout=0");
+ Query query = new Query("/?query=chain&sortspec=%2Ba+-b&timeout=0");
query.setWindow(2, 8);
- QueryPacket packet=QueryPacket.create(query);
- ByteBuffer buffer=ByteBuffer.allocate(500);
+ QueryPacket packet = QueryPacket.create(query);
+ ByteBuffer buffer = ByteBuffer.allocate(500);
buffer.limit(0);
packet.encode(buffer, 0);
- byte[] encoded=new byte[buffer.position()];
+ byte[] encoded = new byte[buffer.position()];
buffer.rewind();
buffer.get(encoded);
- byte[] correctBuffer=new byte[] {0,0,0,55,0,0,0,-38,0,0,0,0, // Header
- 0,0,0,-122, // Features
- 2, // offset
- 8, // maxhits
- 0,0,0,1, // querytimeout
- 0,0,0x40,0x03, // qflags
- 7,
- 'd', 'e', 'f', 'a', 'u', 'l', 't',
- 0,0,0,5, // sortspec length
- 43,97,32,45,98, // sortspec
- 0,0,0,1, // num stackitems
- 0,0,0,8,4,
- 0,5,
- 99,104,97,105,110};
- assertEqualArrays(correctBuffer,encoded);
+ byte[] correctBuffer = new byte[] {0,0,0,55,0,0,0,-38,0,0,0,0, // Header
+ 0,0,0,-122, // Features
+ 2, // offset
+ 8, // maxhits
+ 0,0,0,1, // querytimeout
+ 0,0,0x40,0x03, // qflags
+ 7,
+ 'd', 'e', 'f', 'a', 'u', 'l', 't',
+ 0,0,0,5, // sortspec length
+ 43,97,32,45,98, // sortspec
+ 0,0,0,1, // num stackitems
+ 0,0,0,8,4,
+ 0,5,
+ 99,104,97,105,110};
+ assertEqualArrays(correctBuffer, encoded);
// Encode again to test grantEncodingBuffer
buffer = packet.grantEncodingBuffer(0);
encoded = new byte[buffer.limit()];
buffer.get(encoded);
- assertEqualArrays(correctBuffer,encoded);
+ assertEqualArrays(correctBuffer, encoded);
}
+ @Test
public void testPhraseEqualsPhraseWithPhraseSegment() throws BufferTooSmallException {
Query query = new Query();
PhraseItem p = new PhraseItem();
@@ -220,47 +228,48 @@ public class QueryTestCase extends junit.framework.TestCase {
assertEqualArrays(encoded2, encoded1);
}
- public void testPatchInChannelId() throws BufferTooSmallException {
- Query query=new Query("/?query=chain&timeout=0");
+ @Test
+ public void testPatchInChannelId() {
+ Query query = new Query("/?query=chain&timeout=0");
query.setWindow(2, 8);
- QueryPacket packet=QueryPacket.create(query);
+ QueryPacket packet = QueryPacket.create(query);
assertEquals(2,packet.getOffset());
assertEquals(8, packet.getHits());
ByteBuffer buffer = packet.grantEncodingBuffer(0x07070707);
- byte[] correctBuffer=new byte[] {0,0,0,46,0,0,0,-38,7,7,7,7, // Header
- 0,0,0,6, // Features
- 2,
- 8,
- 0,0,0,1, // querytimeout
- 0,0,0x40,0x03, // qflags
- 7,
- 'd', 'e', 'f', 'a', 'u', 'l', 't',
- 0,0,0,1,0,0,0,8,4,
- 0,5,
- 99,104,97,105,110};
-
- byte[] encoded=new byte[buffer.limit()];
+ byte[] correctBuffer = new byte[] {0,0,0,46,0,0,0,-38,7,7,7,7, // Header
+ 0,0,0,6, // Features
+ 2,
+ 8,
+ 0,0,0,1, // querytimeout
+ 0,0,0x40,0x03, // qflags
+ 7,
+ 'd', 'e', 'f', 'a', 'u', 'l', 't',
+ 0,0,0,1,0,0,0,8,4,
+ 0,5,
+ 99,104,97,105,110};
+
+ byte[] encoded = new byte[buffer.limit()];
buffer.get(encoded);
assertEqualArrays(correctBuffer,encoded);
packet.allocateAndEncode(0x07070707);
buffer = packet.grantEncodingBuffer(0x09090909);
- correctBuffer=new byte[] {0,0,0,46,0,0,0,-38,9,9,9,9, // Header
- 0,0,0,6, // Features
- 2,
- 8,
- 0,0,0,1, // querytimeout
- 0,0,0x40,0x03, // qflags
- 7,
- 'd', 'e', 'f', 'a', 'u', 'l', 't',
- 0,0,0,1,0,0,0,8,4,
- 0,5,
- 99,104,97,105,110};
-
- encoded=new byte[buffer.limit()];
+ correctBuffer = new byte[] {0,0,0,46,0,0,0,-38,9,9,9,9, // Header
+ 0,0,0,6, // Features
+ 2,
+ 8,
+ 0,0,0,1, // querytimeout
+ 0,0,0x40,0x03, // qflags
+ 7,
+ 'd', 'e', 'f', 'a', 'u', 'l', 't',
+ 0,0,0,1,0,0,0,8,4,
+ 0,5,
+ 99,104,97,105,110};
+
+ encoded = new byte[buffer.limit()];
buffer.get(encoded);
assertEqualArrays(correctBuffer,encoded);
@@ -268,10 +277,10 @@ public class QueryTestCase extends junit.framework.TestCase {
public static byte[] packetToBytes(Packet packet) {
try {
- ByteBuffer buffer=ByteBuffer.allocate(500);
+ ByteBuffer buffer = ByteBuffer.allocate(500);
buffer.limit(0);
- packet.encode(buffer,0);
- byte[] encoded=new byte[buffer.position()];
+ packet.encode(buffer, 0);
+ byte[] encoded = new byte[buffer.position()];
buffer.rewind();
buffer.get(encoded);
return encoded;
@@ -283,7 +292,7 @@ public class QueryTestCase extends junit.framework.TestCase {
public static void assertEqualArrays(byte[] correct, byte[] test) {
assertEquals("Incorrect length,", correct.length, test.length);
- for (int i=0; i<correct.length; i++) {
+ for (int i = 0; i < correct.length; i++) {
if (correct[i] == ignored) continue; // Special value used to ignore bytes we don't want to check
assertEquals("Byte nr " + i, correct[i], test[i]);
}