diff options
author | Jon Bratseth <bratseth@oath.com> | 2018-08-15 15:11:38 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@oath.com> | 2018-08-15 15:11:38 +0200 |
commit | 3ad3382721036e58dab67a0d2cc79dfa93263087 (patch) | |
tree | 317f08cb4cb2b21879ed6380b242c2104daa698c /container-search/src/test | |
parent | 506ea9c1367748ddd4ff20203fc13211d635f5a6 (diff) |
Revert "Merge pull request #6582 from vespa-engine/revert-6557-revert-6553-revert-6512-henrhoi/object-structured-grouping"
This reverts commit 506ea9c1367748ddd4ff20203fc13211d635f5a6, reversing
changes made to 4f6b34dcf9ad904f0ddb89eb506f5920360d5344.
Diffstat (limited to 'container-search/src/test')
12 files changed, 122 insertions, 67 deletions
diff --git a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/FastSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/FastSearcherTestCase.java index ec586e67763..c9773008e05 100644 --- a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/FastSearcherTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/FastSearcherTestCase.java @@ -491,7 +491,7 @@ public class FastSearcherTestCase { } private void assertForceSinglePassIs(boolean expected, Query query) { - for (GroupingRequest request : GroupingRequest.getRequests(query)) + for (GroupingRequest request : query.getSelect().getGrouping()) assertForceSinglePassIs(expected, request.getRootOperation()); } diff --git a/container-search/src/test/java/com/yahoo/search/grouping/GroupingQueryParserTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/GroupingQueryParserTestCase.java index 8de704a8a0e..90459fe614f 100644 --- a/container-search/src/test/java/com/yahoo/search/grouping/GroupingQueryParserTestCase.java +++ b/container-search/src/test/java/com/yahoo/search/grouping/GroupingQueryParserTestCase.java @@ -105,6 +105,6 @@ public class GroupingQueryParserTestCase { query.properties().set(GroupingQueryParser.PARAM_CONTINUE, continuation); query.properties().set(GroupingQueryParser.PARAM_TIMEZONE, timeZone); new Execution(new GroupingQueryParser(), Execution.Context.createContextStub()).search(query); - return GroupingRequest.getRequests(query); + return query.getSelect().getGrouping(); } } diff --git a/container-search/src/test/java/com/yahoo/search/grouping/GroupingRequestTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/GroupingRequestTestCase.java index 494602be7b3..8b1bbb6842e 100644 --- a/container-search/src/test/java/com/yahoo/search/grouping/GroupingRequestTestCase.java +++ b/container-search/src/test/java/com/yahoo/search/grouping/GroupingRequestTestCase.java @@ -10,8 +10,10 @@ import com.yahoo.search.result.Hit; import org.junit.Test; import java.lang.reflect.Field; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.List; import static org.junit.Assert.*; @@ -26,7 +28,10 @@ public class GroupingRequestTestCase { assertTrue(req.continuations().isEmpty()); Continuation foo = new Continuation() { - + @Override + public Continuation copy() { + return null; + } }; req.continuations().add(foo); assertEquals(Arrays.asList(foo), req.continuations()); @@ -105,32 +110,22 @@ public class GroupingRequestTestCase { @Test public void requireThatGetRequestsReturnsAllRequests() { Query query = new Query(); - assertEquals(Collections.emptyList(), GroupingRequest.getRequests(query)); + assertEquals(Collections.emptyList(), query.getSelect().getGrouping()); GroupingRequest foo = GroupingRequest.newInstance(query); - assertEquals(Arrays.asList(foo), GroupingRequest.getRequests(query)); + assertEquals(Arrays.asList(foo), query.getSelect().getGrouping()); GroupingRequest bar = GroupingRequest.newInstance(query); - assertEquals(Arrays.asList(foo, bar), GroupingRequest.getRequests(query)); - } - - @Test - public void requireThatGetRequestThrowsIllegalArgumentOnBadProperty() throws Exception { - Query query = new Query(); - Field propName = GroupingRequest.class.getDeclaredField("PROP_REQUEST"); - propName.setAccessible(true); - query.properties().set((CompoundName)propName.get(null), new Object()); - try { - GroupingRequest.getRequests(query); - fail(); - } catch (IllegalArgumentException e) { - - } + assertEquals(Arrays.asList(foo, bar), query.getSelect().getGrouping()); } + private static RootGroup newRootGroup(int id) { return new RootGroup(id, new Continuation() { - + @Override + public Continuation copy() { + return null; + } }); } } diff --git a/container-search/src/test/java/com/yahoo/search/grouping/UniqueGroupingSearcherTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/UniqueGroupingSearcherTestCase.java index b570adc51c6..22e5196c0c6 100644 --- a/container-search/src/test/java/com/yahoo/search/grouping/UniqueGroupingSearcherTestCase.java +++ b/container-search/src/test/java/com/yahoo/search/grouping/UniqueGroupingSearcherTestCase.java @@ -210,7 +210,7 @@ public class UniqueGroupingSearcherTestCase { Result result = new Result(query); if (addGroupingData) { result.hits().add(resultGroup); - GroupingRequest.getRequests(query).get(0).setResultGroup(resultGroup); + query.getSelect().getGrouping().get(0).setResultGroup(resultGroup); result.setTotalHitCount(totalHitCount); } return result; diff --git a/container-search/src/test/java/com/yahoo/search/grouping/result/GroupListTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/result/GroupListTestCase.java index 651321a3b69..b8cc25930e2 100644 --- a/container-search/src/test/java/com/yahoo/search/grouping/result/GroupListTestCase.java +++ b/container-search/src/test/java/com/yahoo/search/grouping/result/GroupListTestCase.java @@ -31,5 +31,11 @@ public class GroupListTestCase { private static class MyContinuation extends Continuation { + @Override + public Continuation copy() { + return null; + } + } + } diff --git a/container-search/src/test/java/com/yahoo/search/grouping/result/HitListTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/result/HitListTestCase.java index 05a78b71cac..8203691e11e 100644 --- a/container-search/src/test/java/com/yahoo/search/grouping/result/HitListTestCase.java +++ b/container-search/src/test/java/com/yahoo/search/grouping/result/HitListTestCase.java @@ -31,5 +31,11 @@ public class HitListTestCase { private static class MyContinuation extends Continuation { + @Override + public Continuation copy() { + return null; + } + } + } diff --git a/container-search/src/test/java/com/yahoo/search/grouping/result/HitRendererTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/result/HitRendererTestCase.java index 85b8ff7a6d5..657c169720e 100644 --- a/container-search/src/test/java/com/yahoo/search/grouping/result/HitRendererTestCase.java +++ b/container-search/src/test/java/com/yahoo/search/grouping/result/HitRendererTestCase.java @@ -167,8 +167,15 @@ public class HitRendererTestCase { } @Override + public Continuation copy() { + return null; + } + + @Override public String toString() { return str; } + } + } diff --git a/container-search/src/test/java/com/yahoo/search/grouping/vespa/CompositeContinuationTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/vespa/CompositeContinuationTestCase.java index 6a6741ae1b4..b9887495940 100644 --- a/container-search/src/test/java/com/yahoo/search/grouping/vespa/CompositeContinuationTestCase.java +++ b/container-search/src/test/java/com/yahoo/search/grouping/vespa/CompositeContinuationTestCase.java @@ -109,6 +109,11 @@ public class CompositeContinuationTestCase { private static class MyContinuation extends EncodableContinuation { @Override + public EncodableContinuation copy() { + return null; + } + + @Override public void encode(IntegerEncoder out) { } diff --git a/container-search/src/test/java/com/yahoo/search/grouping/vespa/GroupingTransformTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/vespa/GroupingTransformTestCase.java index 038df42bd28..161c3a24801 100644 --- a/container-search/src/test/java/com/yahoo/search/grouping/vespa/GroupingTransformTestCase.java +++ b/container-search/src/test/java/com/yahoo/search/grouping/vespa/GroupingTransformTestCase.java @@ -162,7 +162,10 @@ public class GroupingTransformTestCase { GroupingTransform transform = newTransform(); try { transform.addContinuation(new Continuation() { - + @Override + public Continuation copy() { + return null; + } }); fail(); } catch (UnsupportedOperationException e) { diff --git a/container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java b/container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java index caad1c76362..726d5cb76be 100644 --- a/container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java +++ b/container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java @@ -790,6 +790,11 @@ public class JsonRendererTestCase { Result r = newEmptyResult(); RootGroup rg = new RootGroup(0, new Continuation() { @Override + public Continuation copy() { + return null; + } + + @Override public String toString() { return "AAAA"; } @@ -797,12 +802,22 @@ public class JsonRendererTestCase { GroupList gl = new GroupList("customer"); gl.continuations().put("prev", new Continuation() { @Override + public Continuation copy() { + return null; + } + + @Override public String toString() { return "BBBB"; } }); gl.continuations().put("next", new Continuation() { @Override + public Continuation copy() { + return null; + } + + @Override public String toString() { return "CCCC"; } @@ -860,6 +875,11 @@ public class JsonRendererTestCase { Result r = newEmptyResult(); RootGroup rg = new RootGroup(0, new Continuation() { @Override + public Continuation copy() { + return null; + } + + @Override public String toString() { return "AAAA"; } diff --git a/container-search/src/test/java/com/yahoo/search/yql/MinimalQueryInserterTestCase.java b/container-search/src/test/java/com/yahoo/search/yql/MinimalQueryInserterTestCase.java index e5dbe10a0e4..b23e25e173e 100644 --- a/container-search/src/test/java/com/yahoo/search/yql/MinimalQueryInserterTestCase.java +++ b/container-search/src/test/java/com/yahoo/search/yql/MinimalQueryInserterTestCase.java @@ -329,9 +329,8 @@ public class MinimalQueryInserterTestCase { private static void assertGrouping(String expected, Query query) { List<String> actual = new ArrayList<>(); - for (GroupingRequest request : GroupingRequest.getRequests(query)) { + for (GroupingRequest request : query.getSelect().getGrouping()) actual.add(request.continuations().toString() + request.getRootOperation()); - } assertEquals(expected, actual.toString()); } diff --git a/container-search/src/test/java/com/yahoo/select/SelectParserTestCase.java b/container-search/src/test/java/com/yahoo/select/SelectTestCase.java index 031ba386ad4..6871e26b96a 100644 --- a/container-search/src/test/java/com/yahoo/select/SelectParserTestCase.java +++ b/container-search/src/test/java/com/yahoo/select/SelectTestCase.java @@ -15,14 +15,14 @@ import com.yahoo.prelude.query.WeakAndItem; import com.yahoo.prelude.query.WordAlternativesItem; import com.yahoo.prelude.query.WordItem; import com.yahoo.search.Query; -import com.yahoo.search.federation.ProviderConfig; +import com.yahoo.search.grouping.GroupingRequest; +import com.yahoo.search.grouping.request.AllOperation; import com.yahoo.search.query.QueryTree; import com.yahoo.search.query.Select; import com.yahoo.search.query.SelectParser; import com.yahoo.search.query.parser.Parsable; import com.yahoo.search.query.parser.ParserEnvironment; import com.yahoo.search.yql.VespaGroupingStep; -import org.apache.http.client.utils.URIBuilder; import org.json.JSONException; import org.json.JSONObject; import org.junit.Test; @@ -33,24 +33,23 @@ import java.util.List; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotSame; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; - /** - * Specification for the conversion of Select expressions to Vespa search queries. + * Tests Query.Select * * @author henrhoi + * @author bratseth */ - -public class SelectParserTestCase { +public class SelectTestCase { private final SelectParser parser = new SelectParser(new ParserEnvironment()); - - /** WHERE TESTS */ + //------------------------------------------------------------------- "where" tests @Test public void test_contains() throws Exception { @@ -136,7 +135,6 @@ public class SelectParserTestCase { "+title:madonna -title:saint"); } - @Test public void testLessThan() throws JSONException { JSONObject range_json = new JSONObject(); @@ -165,7 +163,6 @@ public class SelectParserTestCase { "price:>500"); } - @Test public void testLessThanOrEqual() throws JSONException { JSONObject range_json = new JSONObject(); @@ -326,7 +323,6 @@ public class SelectParserTestCase { assertEquals(3, origin.end); } - @Test public void testSameElement() { assertParse("{ \"contains\": [ \"baz\", {\"sameElement\" : [ { \"contains\" : [\"f1\", \"a\"] }, { \"contains\" : [\"f2\", \"b\"] } ]} ] }", @@ -420,7 +416,7 @@ public class SelectParserTestCase { WordItem first = (WordItem)root.getItem(0); WordItem second = (WordItem)root.getItem(1); WordItem third = (WordItem)root.getItem(2); - assertTrue(first.getConnectedItem() == third); + assertEquals(third, first.getConnectedItem()); assertEquals(first.getConnectivity(), 7.0d, 1E-6); assertNull(second.getConnectedItem()); @@ -557,17 +553,17 @@ public class SelectParserTestCase { @Test public void testAffixItems() { assertRootClass("{ \"contains\" : { \"children\" : [\"baz\", \"colors\"], \"attributes\" : {\"suffix\": true} } }", - SuffixItem.class); + SuffixItem.class); assertRootClass("{ \"contains\" : { \"children\" : [\"baz\", \"colors\"], \"attributes\" : {\"prefix\": true} } }", - PrefixItem.class); + PrefixItem.class); assertRootClass("{ \"contains\" : { \"children\" : [\"baz\", \"colors\"], \"attributes\" : {\"substring\": true} } }", - SubstringItem.class); + SubstringItem.class); assertParseFail("{ \"contains\" : { \"children\" : [\"baz\", \"colors\"], \"attributes\" : {\"suffix\": true, \"prefix\" : true} } }", - new IllegalArgumentException("Only one of prefix, substring and suffix can be set.")); + new IllegalArgumentException("Only one of prefix, substring and suffix can be set.")); assertParseFail("{ \"contains\" : { \"children\" : [\"baz\", \"colors\"], \"attributes\" : {\"suffix\": true, \"substring\" : true} } }", - new IllegalArgumentException("Only one of prefix, substring and suffix can be set.")); + new IllegalArgumentException("Only one of prefix, substring and suffix can be set.")); } @Test @@ -641,7 +637,7 @@ public class SelectParserTestCase { checkWordAlternativesContent(alternatives); } - /** GROUPING TESTS */ + //------------------------------------------------------------------- grouping tests @Test public void testGrouping(){ @@ -659,9 +655,7 @@ public class SelectParserTestCase { assertGrouping(expected, parseGrouping(grouping)); } - - - /** OTHER TESTS */ + //------------------------------------------------------------------- Other tests @Test public void testOverridingOtherQueryTree() { @@ -669,16 +663,15 @@ public class SelectParserTestCase { assertEquals("default:query", query.getModel().getQueryTree().toString()); assertEquals(Query.Type.ALL, query.getModel().getType()); - query.getSelect().setWhere("{\"contains\" : [\"default\", \"select\"] }"); + query.getSelect().setWhereString("{\"contains\" : [\"default\", \"select\"] }"); assertEquals("default:select", query.getModel().getQueryTree().toString()); assertEquals(Query.Type.SELECT, query.getModel().getType()); } - @Test public void testOverridingWhereQueryTree() { - Query query = new Query(); - query.getSelect().setWhere("{\"contains\" : [\"default\", \"select\"] }"); + Query query = new Query("?query=default:query"); + query.getSelect().setWhereString("{\"contains\" : [\"default\", \"select\"] }"); assertEquals("default:select", query.getModel().getQueryTree().toString()); assertEquals(Query.Type.SELECT, query.getModel().getType()); @@ -688,10 +681,44 @@ public class SelectParserTestCase { assertEquals(Query.Type.ALL, query.getModel().getType()); } + @Test + public void testProgrammaticAssignment() { + Query query = new Query(); + query.getSelect().setGroupingString("[ { \"all\" : { \"group\" : \"time.year(a)\", \"each\" : { \"output\" : \"count()\" } } } ]"); + assertEquals(1, query.getSelect().getGrouping().size()); + assertEquals("all(group(time.year(a)) each(output(count())))", query.getSelect().getGrouping().get(0).getRootOperation().toString()); + // Setting from string resets the grouping expression + query.getSelect().setGroupingString("[ { \"all\" : { \"group\" : \"time.dayofmonth(a)\", \"each\" : { \"output\" : \"count()\" } } } ]"); + assertEquals(1, query.getSelect().getGrouping().size()); + assertEquals("all(group(time.dayofmonth(a)) each(output(count())))", query.getSelect().getGrouping().get(0).getRootOperation().toString()); + } + @Test + public void testConstructionAndClone() { + Query query = new Query(); + query.getSelect().setWhereString("{\"contains\" : [\"default\", \"select\"] }"); + query.getSelect().setGroupingString("[ { \"all\" : { \"group\" : \"time.dayofmonth(a)\", \"each\" : { \"output\" : \"count()\" } } } ]"); + GroupingRequest secondRequest = GroupingRequest.newInstance(query); + assertEquals("default:select", query.getModel().getQueryTree().toString()); + assertEquals(2, query.getSelect().getGrouping().size()); + assertEquals("all(group(time.dayofmonth(a)) each(output(count())))", query.getSelect().getGrouping().get(0).toString()); + + Query clone = query.clone(); + assertNotSame(query.getSelect(), clone.getSelect()); + assertNotSame(query.getSelect().getGrouping(), clone.getSelect().getGrouping()); + assertNotSame(query.getSelect().getGrouping().get(0), clone.getSelect().getGrouping().get(0)); + assertNotSame(query.getSelect().getGrouping().get(1), clone.getSelect().getGrouping().get(1)); + assertEquals(query.getSelect().getWhereString(), clone.getSelect().getWhereString()); + assertEquals(query.getSelect().getGroupingString(), clone.getSelect().getGroupingString()); + assertEquals(query.getSelect().getGrouping().get(0).toString(), clone.getSelect().getGrouping().get(0).toString()); + assertEquals(query.getSelect().getGrouping().get(1).toString(), clone.getSelect().getGrouping().get(1).toString()); + + + } + + //------------------------------------------------------------------- Assert methods - /** Assert-methods */ private void assertParse(String where, String expectedQueryTree) { String queryTree = parseWhere(where).toString(); assertEquals(expectedQueryTree, queryTree); @@ -721,13 +748,10 @@ public class SelectParserTestCase { assertEquals(expected, actual.toString()); } - - - - /** Parse-methods*/ + //------------------------------------------------------------------- Parse methods private QueryTree parseWhere(String where) { - Select select = new Select(where, ""); + Select select = new Select(where, "", new Query()); return parser.parse(new Parsable().setSelect(select)); } @@ -737,17 +761,8 @@ public class SelectParserTestCase { return parser.getGroupingSteps(grouping); } - private QueryTree parse(String where, String grouping) { - Select select = new Select(where, grouping); + //------------------------------------------------------------------- Other methods - return parser.parse(new Parsable().setSelect(select)); - } - - - - - - /** Other methods */ private WordItem getRootWord(String yqlQuery) { Item root = parseWhere(yqlQuery).getRoot(); assertTrue(root instanceof WordItem); @@ -775,5 +790,4 @@ public class SelectParserTestCase { } } - } |