aboutsummaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2022-01-28 12:54:30 +0100
committerJon Bratseth <bratseth@gmail.com>2022-01-28 12:54:30 +0100
commit0b3976a46f761b0add47e0b112d79be8290060fa (patch)
tree8c54f5108e8da28e38e73b3daf1dbb023f693b80 /config-model
parent87c1e9391b9b94a72ae36a84900ff39fcd1baa30 (diff)
Add tests
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/SchemaTestCase.java95
1 files changed, 94 insertions, 1 deletions
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/SchemaTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/SchemaTestCase.java
index 818e05a46f0..112dbd2587e 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/SchemaTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/SchemaTestCase.java
@@ -34,7 +34,7 @@ public class SchemaTestCase {
ApplicationBuilder.createFromStrings(logger, schema);
assertEquals("schema 'test' inherits 'nonesuch', but this schema does not exist",
logger.entries.get(0).message);
- fail("Expected failure");
+ fail("Expected exception");
}
catch (IllegalArgumentException e) {
assertEquals("schema 'test' inherits 'nonesuch', but this schema does not exist", e.getMessage());
@@ -61,6 +61,7 @@ public class SchemaTestCase {
" }" +
"}");
ApplicationBuilder.createFromStrings(new DeployLoggerStub(), parent, child);
+ fail("Expected exception");
}
catch (IllegalArgumentException e) {
assertEquals("schema 'child' inherits 'parent', " +
@@ -320,6 +321,98 @@ public class SchemaTestCase {
assertInheritedFromParent(application.schemas().get("grandchild"), application, builder.getRankProfileRegistry());
}
+ @Test
+ public void testInheritingMultipleRankProfilesWithOverlappingConstructsIsDisallowed1() throws ParseException {
+ try {
+ String profile = joinLines(
+ "schema test {" +
+ " document test {" +
+ " field title type string {" +
+ " indexing: summary" +
+ " }" +
+ " }" +
+ " rank-profile r1 {" +
+ " first-phase {" +
+ " expression: fieldMatch(title)" +
+ " }" +
+ " }" +
+ " rank-profile r2 {" +
+ " first-phase {" +
+ " expression: fieldMatch(title)" +
+ " }" +
+ " }" +
+ " rank-profile r3 inherits r1, r2 {" +
+ " }" +
+ "}");
+ ApplicationBuilder.createFromStrings(new DeployLoggerStub(), profile);
+ fail("Expected exception");
+ }
+ catch (IllegalArgumentException e) {
+ assertEquals("Only one of the profiles inherited by rank profile 'r3' can contain first-phase expression, but it is present in all of [rank profile 'r1', rank profile 'r2']",
+ e.getMessage());
+ }
+ }
+
+ @Test
+ public void testInheritingMultipleRankProfilesWithOverlappingConstructsIsAllowedWhenDefinedInChild() throws ParseException {
+ String profile = joinLines(
+ "schema test {" +
+ " document test {" +
+ " field title type string {" +
+ " indexing: summary" +
+ " }" +
+ " }" +
+ " rank-profile r1 {" +
+ " first-phase {" +
+ " expression: fieldMatch(title)" +
+ " }" +
+ " }" +
+ " rank-profile r2 {" +
+ " first-phase {" +
+ " expression: fieldMatch(title)" +
+ " }" +
+ " }" +
+ " rank-profile r3 inherits r1, r2 {" +
+ " first-phase {" + // Redefined here so this does not cause failure
+ " expression: nativeRank" +
+ " }" +
+ " }" +
+ "}");
+ ApplicationBuilder.createFromStrings(new DeployLoggerStub(), profile);
+ }
+
+ @Test
+ public void testInheritingMultipleRankProfilesWithOverlappingConstructsIsDisallowed2() throws ParseException {
+ try {
+ String profile = joinLines(
+ "schema test {" +
+ " document test {" +
+ " field title type string {" +
+ " indexing: summary" +
+ " }" +
+ " }" +
+ " rank-profile r1 {" +
+ " function f1() {" +
+ " expression: fieldMatch(title)" +
+ " }" +
+ " }" +
+ " rank-profile r2 {" +
+ " function f1() {" +
+ " expression: fieldMatch(title)" +
+ " }" +
+ " }" +
+ " rank-profile r3 inherits r1, r2 {" +
+ " }" +
+ "}");
+ ApplicationBuilder.createFromStrings(new DeployLoggerStub(), profile);
+ fail("Expected exception");
+ }
+ catch (IllegalArgumentException e) {
+ assertEquals("rank profile 'r3' inherits rank profile 'r2' which contains function 'f1', but this function is already defined in another profile this inherits",
+ e.getMessage());
+ }
+ }
+
private void assertInheritedFromParent(Schema schema, Application application, RankProfileRegistry rankProfileRegistry) {
assertEquals("pf1", schema.fieldSets().userFieldSets().get("parent_set").getFieldNames().stream().findFirst().get());
assertEquals(Stemming.NONE, schema.getStemming());