aboutsummaryrefslogtreecommitdiffstats
path: root/container-search/src/test
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@oath.com>2018-08-15 15:11:38 +0200
committerJon Bratseth <bratseth@oath.com>2018-08-15 15:11:38 +0200
commit3ad3382721036e58dab67a0d2cc79dfa93263087 (patch)
tree317f08cb4cb2b21879ed6380b242c2104daa698c /container-search/src/test
parent506ea9c1367748ddd4ff20203fc13211d635f5a6 (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')
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/fastsearch/test/FastSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/GroupingQueryParserTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/GroupingRequestTestCase.java33
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/UniqueGroupingSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/result/GroupListTestCase.java6
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/result/HitListTestCase.java6
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/result/HitRendererTestCase.java7
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/vespa/CompositeContinuationTestCase.java5
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/vespa/GroupingTransformTestCase.java5
-rw-r--r--container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java20
-rw-r--r--container-search/src/test/java/com/yahoo/search/yql/MinimalQueryInserterTestCase.java3
-rw-r--r--container-search/src/test/java/com/yahoo/select/SelectTestCase.java (renamed from container-search/src/test/java/com/yahoo/select/SelectParserTestCase.java)98
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 {
}
}
-
}