From 5e444ba5af219de555edeeb78aeeaaaae9fd8335 Mon Sep 17 00:00:00 2001 From: Jon Bratseth Date: Mon, 26 Feb 2018 09:12:06 +0100 Subject: Nonfunctional changes only --- .../java/com/yahoo/fs4/test/QueryTestCase.java | 243 +++++++++++---------- 1 file changed, 126 insertions(+), 117 deletions(-) (limited to 'container-search') 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