aboutsummaryrefslogtreecommitdiffstats
path: root/config-model/src
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@oath.com>2018-11-22 16:20:27 +0100
committerTor Brede Vekterli <vekterli@oath.com>2018-11-22 16:33:24 +0100
commitcb4ffb997d22a1128b33fe3ea0b07f1a2b9862b9 (patch)
tree38de3229e1e0b6a26fd2db8d8daa453410600c56 /config-model/src
parent439f4d13240ee420a9270625406035ffa28a5ba7 (diff)
Add unit test for position zcurve field not being part of [document] fieldset
Should work as expected when the field is defined in a parent document type.
Diffstat (limited to 'config-model/src')
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/SearchBuilder.java29
-rw-r--r--config-model/src/test/examples/position_base.sd8
-rw-r--r--config-model/src/test/examples/position_inherited.sd4
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/PositionTestCase.java13
4 files changed, 53 insertions, 1 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/SearchBuilder.java b/config-model/src/main/java/com/yahoo/searchdefinition/SearchBuilder.java
index d8ec0b053ad..cf88886029f 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/SearchBuilder.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/SearchBuilder.java
@@ -25,6 +25,8 @@ import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
@@ -335,10 +337,21 @@ public class SearchBuilder {
return createFromFile(fileName, new BaseDeployLogger());
}
+ /**
+ * Convenience factory methdd to create a SearchBuilder from multiple SD files. Only for testing.
+ */
+ public static SearchBuilder createFromFiles(Collection<String> fileNames) throws IOException, ParseException {
+ return createFromFiles(fileNames, new BaseDeployLogger());
+ }
+
public static SearchBuilder createFromFile(String fileName, DeployLogger logger) throws IOException, ParseException {
return createFromFile(fileName, logger, new RankProfileRegistry(), new QueryProfileRegistry());
}
+ public static SearchBuilder createFromFiles(Collection<String> fileNames, DeployLogger logger) throws IOException, ParseException {
+ return createFromFiles(fileNames, logger, new RankProfileRegistry(), new QueryProfileRegistry());
+ }
+
/**
* Convenience factory method to import and build a {@link Search} object from a file.
*
@@ -354,10 +367,24 @@ public class SearchBuilder {
RankProfileRegistry rankProfileRegistry,
QueryProfileRegistry queryprofileRegistry)
throws IOException, ParseException {
+ return createFromFiles(Collections.singletonList(fileName), deployLogger,
+ rankProfileRegistry, queryprofileRegistry);
+ }
+
+ /**
+ * Convenience factory methdd to create a SearchBuilder from multiple SD files..
+ */
+ public static SearchBuilder createFromFiles(Collection<String> fileNames,
+ DeployLogger deployLogger,
+ RankProfileRegistry rankProfileRegistry,
+ QueryProfileRegistry queryprofileRegistry)
+ throws IOException, ParseException {
SearchBuilder builder = new SearchBuilder(MockApplicationPackage.createEmpty(),
rankProfileRegistry,
queryprofileRegistry);
- builder.importFile(fileName);
+ for (String fileName : fileNames) {
+ builder.importFile(fileName);
+ }
builder.build(true, deployLogger);
return builder;
}
diff --git a/config-model/src/test/examples/position_base.sd b/config-model/src/test/examples/position_base.sd
new file mode 100644
index 00000000000..8f8ff85cff2
--- /dev/null
+++ b/config-model/src/test/examples/position_base.sd
@@ -0,0 +1,8 @@
+# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search position_base {
+ document position_base {
+ field pos type position {
+ indexing: attribute
+ }
+ }
+}
diff --git a/config-model/src/test/examples/position_inherited.sd b/config-model/src/test/examples/position_inherited.sd
new file mode 100644
index 00000000000..b3341e01f80
--- /dev/null
+++ b/config-model/src/test/examples/position_inherited.sd
@@ -0,0 +1,4 @@
+# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search position_inherited {
+ document position_inherited inherits position_base {}
+}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/PositionTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/PositionTestCase.java
index d8749d8eb32..9cf555e2c9a 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/PositionTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/PositionTestCase.java
@@ -6,6 +6,7 @@ import com.yahoo.document.PositionDataType;
import com.yahoo.searchdefinition.Search;
import com.yahoo.searchdefinition.SearchBuilder;
import com.yahoo.searchdefinition.document.Attribute;
+import com.yahoo.searchdefinition.document.FieldSet;
import com.yahoo.searchdefinition.parser.ParseException;
import com.yahoo.vespa.documentmodel.SummaryField;
import com.yahoo.vespa.documentmodel.SummaryTransform;
@@ -14,6 +15,7 @@ import org.junit.Ignore;
import org.junit.Test;
import java.io.IOException;
+import java.util.Arrays;
import java.util.Iterator;
import static org.junit.Assert.*;
@@ -26,6 +28,17 @@ import static org.junit.Assert.*;
public class PositionTestCase {
@Test
+ public void inherited_position_zcurve_field_is_not_added_to_document_fieldset() throws Exception {
+ SearchBuilder sb = SearchBuilder.createFromFiles(Arrays.asList(
+ "src/test/examples/position_base.sd",
+ "src/test/examples/position_inherited.sd"));
+
+ Search search = sb.getSearch("position_inherited");
+ FieldSet fieldSet = search.getDocument().getFieldSets().builtInFieldSets().get("[document]"); // TODO why is this not public in BuiltInFieldSets?
+ assertFalse(fieldSet.getFieldNames().contains(PositionDataType.getZCurveFieldName("pos")));
+ }
+
+ @Test
public void requireThatPositionCanBeAttribute() throws Exception {
Search search = SearchBuilder.buildFromFile("src/test/examples/position_attribute.sd");
assertNull(search.getAttribute("pos"));