diff options
author | Geir Storli <geirst@yahooinc.com> | 2022-09-06 15:34:11 +0000 |
---|---|---|
committer | Geir Storli <geirst@yahooinc.com> | 2022-09-07 12:42:06 +0000 |
commit | 3052127c03446d531e60ec74170917ff3a610258 (patch) | |
tree | 06b34e9d365bb055fd294ee27d1b2aa9b4c09760 /config-model/src | |
parent | 9ebb7848b51f05209ab735e05d115c55d08ade1a (diff) |
Migrate unit tests that are still relevant after summarymap is removed.
Diffstat (limited to 'config-model/src')
-rw-r--r-- | config-model/src/test/java/com/yahoo/schema/derived/SummaryMapTestCase.java | 214 | ||||
-rw-r--r-- | config-model/src/test/java/com/yahoo/schema/derived/SummaryTestCase.java | 113 |
2 files changed, 108 insertions, 219 deletions
diff --git a/config-model/src/test/java/com/yahoo/schema/derived/SummaryMapTestCase.java b/config-model/src/test/java/com/yahoo/schema/derived/SummaryMapTestCase.java deleted file mode 100644 index 577bcf6efcc..00000000000 --- a/config-model/src/test/java/com/yahoo/schema/derived/SummaryMapTestCase.java +++ /dev/null @@ -1,214 +0,0 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.schema.derived; - -import com.yahoo.config.model.test.MockApplicationPackage; -import com.yahoo.schema.*; -import com.yahoo.vespa.config.search.SummarymapConfig; -import com.yahoo.config.model.application.provider.BaseDeployLogger; -import com.yahoo.document.PositionDataType; -import com.yahoo.schema.document.SDDocumentType; -import com.yahoo.schema.document.SDField; -import com.yahoo.schema.parser.ParseException; -import com.yahoo.schema.processing.Processing; -import com.yahoo.vespa.documentmodel.SummaryTransform; -import com.yahoo.vespa.model.container.search.QueryProfiles; -import org.junit.jupiter.api.Test; - -import java.io.IOException; -import java.util.Iterator; -import java.util.Set; - -import static com.yahoo.config.model.test.TestUtil.joinLines; -import static org.junit.jupiter.api.Assertions.*; - -/** - * Tests summary map extraction - * - * @author bratseth - */ -public class SummaryMapTestCase extends AbstractSchemaTestCase { - @Test - void testDeriving() throws IOException, ParseException { - Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/simple.sd"); - SummaryMap summaryMap = new SummaryMap(schema); - - Iterator<FieldResultTransform> transforms = summaryMap.resultTransforms().values().iterator(); - FieldResultTransform transform = transforms.next(); - assertEquals("dyndesc", transform.getFieldName()); - assertEquals(SummaryTransform.DYNAMICTEASER, transform.getTransform()); - - transform = transforms.next(); - assertEquals("dynlong", transform.getFieldName()); - assertEquals(SummaryTransform.DYNAMICTEASER, transform.getTransform()); - - transform = transforms.next(); - assertEquals("dyndesc2", transform.getFieldName()); - assertEquals(SummaryTransform.DYNAMICTEASER, transform.getTransform()); - - transform = transforms.next(); - assertEquals("measurement", transform.getFieldName()); - assertEquals(SummaryTransform.ATTRIBUTE, transform.getTransform()); - - transform = transforms.next(); - assertEquals("rankfeatures", transform.getFieldName()); - assertEquals(SummaryTransform.RANKFEATURES, transform.getTransform()); - - transform = transforms.next(); - assertEquals("summaryfeatures", transform.getFieldName()); - assertEquals(SummaryTransform.SUMMARYFEATURES, transform.getTransform()); - - transform = transforms.next(); - assertEquals("popsiness", transform.getFieldName()); - assertEquals(SummaryTransform.ATTRIBUTE, transform.getTransform()); - - transform = transforms.next(); - assertEquals("popularity", transform.getFieldName()); - assertEquals(SummaryTransform.ATTRIBUTE, transform.getTransform()); - - transform = transforms.next(); - assertEquals("access", transform.getFieldName()); - assertEquals(SummaryTransform.ATTRIBUTE, transform.getTransform()); - - transform = transforms.next(); - assertEquals("documentid", transform.getFieldName()); - assertEquals(SummaryTransform.DOCUMENT_ID, transform.getTransform()); - - assertFalse(transforms.hasNext()); - } - - @Test - void testPositionDeriving() { - Schema schema = new Schema("store", MockApplicationPackage.createEmpty()); - SDDocumentType document = new SDDocumentType("store"); - schema.addDocument(document); - String fieldName = "location"; - SDField field = document.addField(fieldName, PositionDataType.INSTANCE); - field.parseIndexingScript("{ attribute | summary }"); - new Processing().process(schema, new BaseDeployLogger(), new RankProfileRegistry(), new QueryProfiles(), - true, false, Set.of()); - SummaryMap summaryMap = new SummaryMap(schema); - - Iterator<FieldResultTransform> transforms = summaryMap.resultTransforms().values().iterator(); - - FieldResultTransform transform = transforms.next(); - - assertEquals(fieldName, transform.getFieldName()); - assertEquals(SummaryTransform.GEOPOS, transform.getTransform()); - - transform = transforms.next(); - assertEquals("rankfeatures", transform.getFieldName()); - assertEquals(SummaryTransform.RANKFEATURES, transform.getTransform()); - - transform = transforms.next(); - assertEquals("summaryfeatures", transform.getFieldName()); - assertEquals(SummaryTransform.SUMMARYFEATURES, transform.getTransform()); - - transform = transforms.next(); - assertEquals("location_zcurve", transform.getFieldName()); - assertEquals(SummaryTransform.ATTRIBUTE, transform.getTransform()); - - transform = transforms.next(); - assertEquals("documentid", transform.getFieldName()); - assertEquals(SummaryTransform.DOCUMENT_ID, transform.getTransform()); - - assertFalse(transforms.hasNext()); - - SummarymapConfig.Builder scb = new SummarymapConfig.Builder(); - summaryMap.getConfig(scb); - SummarymapConfig c = scb.build(); - - assertEquals(-1, c.defaultoutputclass()); - assertEquals(c.override().size(), 5); - - assertEquals(c.override(0).field(), fieldName); - assertEquals(c.override(0).command(), "geopos"); - assertEquals(c.override(0).arguments(), PositionDataType.getZCurveFieldName(fieldName)); - - assertEquals(c.override(1).field(), "rankfeatures"); - assertEquals(c.override(1).command(), "rankfeatures"); - assertEquals(c.override(1).arguments(), ""); - - assertEquals(c.override(2).field(), "summaryfeatures"); - assertEquals(c.override(2).command(), "summaryfeatures"); - assertEquals(c.override(2).arguments(), ""); - - assertEquals(c.override(3).field(), "location_zcurve"); - assertEquals(c.override(3).command(), "attribute"); - assertEquals(c.override(3).arguments(), "location_zcurve"); - } - - @Test - void testFailOnSummaryFieldSourceCollision() { - try { - ApplicationBuilder.buildFromFile("src/test/examples/summaryfieldcollision.sd"); - } catch (Exception e) { - assertTrue(e.getMessage().matches(".*equally named field.*")); - } - } - - @Test - void source_field_is_passed_as_argument_in_matched_elements_filter_transforms() throws ParseException { - assertOverride(joinLines("field my_field type map<string, string> {", - " indexing: summary", - " summary: matched-elements-only", - " struct-field key { indexing: attribute }", - "}"), "my_field", SummaryTransform.MATCHED_ELEMENTS_FILTER.getName()); - - assertOverride(joinLines("field my_field type map<string, string> {", - " indexing: summary", - " summary: matched-elements-only", - " struct-field key { indexing: attribute }", - " struct-field value { indexing: attribute }", - "}"), "my_field", SummaryTransform.MATCHED_ATTRIBUTE_ELEMENTS_FILTER.getName()); - } - - @Test - void commands_that_are_dynamic_and_require_the_query() { - assertTrue(SummaryMap.isDynamicCommand("dynamicteaser")); - assertTrue(SummaryMap.isDynamicCommand(SummaryTransform.MATCHED_ELEMENTS_FILTER.getName())); - assertTrue(SummaryMap.isDynamicCommand(SummaryTransform.MATCHED_ATTRIBUTE_ELEMENTS_FILTER.getName())); - assertFalse(SummaryMap.isDynamicCommand(SummaryTransform.ATTRIBUTE.getName())); - } - - @Test - void documentid_summary_field_has_corresponding_summary_transform() throws ParseException { - var schema = buildSchema("field foo type string { indexing: summary }", - joinLines("document-summary bar {", - " summary documentid type string {}", - "}")); - assertOverride(schema, "documentid", SummaryTransform.DOCUMENT_ID.getName(), ""); - } - - @Test - void documentid_summary_transform_requires_disk_access() { - assertFalse(SummaryTransform.DOCUMENT_ID.isInMemory()); - } - - private void assertOverride(String fieldContent, String expFieldName, String expCommand) throws ParseException { - assertOverride(buildSchema(fieldContent, ""), expFieldName, expCommand, expFieldName); - } - - private void assertOverride(Schema schema, String expFieldName, String expCommand, String expArguments) throws ParseException { - var summaryMap = new SummaryMap(schema); - var cfgBuilder = new SummarymapConfig.Builder(); - summaryMap.getConfig(cfgBuilder); - var cfg = new SummarymapConfig(cfgBuilder); - var override = cfg.override(0); - assertEquals(expFieldName, override.field()); - assertEquals(expCommand, override.command()); - assertEquals(expArguments, override.arguments()); - } - - private Schema buildSchema(String field, String documentSummary) throws ParseException { - var builder = new ApplicationBuilder(new RankProfileRegistry()); - builder.addSchema(joinLines("search test {", - " document test {", - field, - " }", - documentSummary, - "}")); - builder.build(true); - return builder.getSchema(); - } - -} diff --git a/config-model/src/test/java/com/yahoo/schema/derived/SummaryTestCase.java b/config-model/src/test/java/com/yahoo/schema/derived/SummaryTestCase.java index c83fc1ac63b..f2b03d9c955 100644 --- a/config-model/src/test/java/com/yahoo/schema/derived/SummaryTestCase.java +++ b/config-model/src/test/java/com/yahoo/schema/derived/SummaryTestCase.java @@ -2,19 +2,29 @@ package com.yahoo.schema.derived; import com.yahoo.config.model.application.provider.BaseDeployLogger; +import com.yahoo.config.model.test.MockApplicationPackage; +import com.yahoo.document.PositionDataType; +import com.yahoo.schema.RankProfileRegistry; import com.yahoo.schema.Schema; import com.yahoo.schema.ApplicationBuilder; import com.yahoo.schema.AbstractSchemaTestCase; +import com.yahoo.schema.document.SDDocumentType; +import com.yahoo.schema.document.SDField; import com.yahoo.schema.parser.ParseException; +import com.yahoo.schema.processing.Processing; import com.yahoo.vespa.config.search.SummaryConfig; +import com.yahoo.vespa.documentmodel.SummaryTransform; +import com.yahoo.vespa.model.container.search.QueryProfiles; import org.junit.jupiter.api.Test; import java.io.IOException; -import java.util.Iterator; +import java.util.Set; import static com.yahoo.config.model.test.TestUtil.joinLines; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; /** * Tests summary extraction @@ -60,10 +70,7 @@ public class SummaryTestCase extends AbstractSchemaTestCase { SummaryClass summary = new SummaryClass(schema, schema.getSummary("default"), new BaseDeployLogger()); assertEquals("default", summary.getName()); - Iterator<SummaryClassField> fields = summary.fields().values().iterator(); - - SummaryClassField field; - + var fields = summary.fields().values().iterator(); assertEquals(13, summary.fields().size()); assertSummaryField("exactemento", SummaryClassField.Type.LONGSTRING, fields.next()); @@ -157,4 +164,100 @@ public class SummaryTestCase extends AbstractSchemaTestCase { assertEquals(expected, config.omitsummaryfeatures()); } + @Test + void testPositionDeriving() { + Schema schema = new Schema("store", MockApplicationPackage.createEmpty()); + SDDocumentType document = new SDDocumentType("store"); + schema.addDocument(document); + String fieldName = "location"; + SDField field = document.addField(fieldName, PositionDataType.INSTANCE); + field.parseIndexingScript("{ attribute | summary }"); + new Processing().process(schema, new BaseDeployLogger(), new RankProfileRegistry(), new QueryProfiles(), + true, false, Set.of()); + + var summary = new SummaryClass(schema, schema.getSummary("default"), new BaseDeployLogger()); + var fields = summary.fields().values().iterator(); + assertEquals(4, summary.fields().size()); + assertSummaryField(fieldName, SummaryClassField.Type.JSONSTRING, "geopos", "location_zcurve", fields.next()); + assertSummaryField("rankfeatures", SummaryClassField.Type.FEATUREDATA, "rankfeatures", fields.next()); + assertSummaryField("summaryfeatures", SummaryClassField.Type.FEATUREDATA, "summaryfeatures", fields.next()); + assertSummaryField("documentid", SummaryClassField.Type.LONGSTRING, "documentid", fields.next()); + } + + @Test + void testFailOnSummaryFieldSourceCollision() { + try { + ApplicationBuilder.buildFromFile("src/test/examples/summaryfieldcollision.sd"); + } catch (Exception e) { + assertTrue(e.getMessage().matches(".*equally named field.*")); + } + } + + @Test + void source_field_is_passed_as_argument_in_matched_elements_filter_transforms() throws ParseException { + assertOverride(joinLines("field my_field type map<string, string> {", + " indexing: summary", + " summary: matched-elements-only", + " struct-field key { indexing: attribute }", + "}"), "my_field", SummaryTransform.MATCHED_ELEMENTS_FILTER.getName()); + + assertOverride(joinLines("field my_field type map<string, string> {", + " indexing: summary", + " summary: matched-elements-only", + " struct-field key { indexing: attribute }", + " struct-field value { indexing: attribute }", + "}"), "my_field", SummaryTransform.MATCHED_ATTRIBUTE_ELEMENTS_FILTER.getName()); + } + + @Test + void commands_that_are_dynamic_and_require_the_query() { + assertTrue(SummaryMap.isDynamicCommand("dynamicteaser")); + assertTrue(SummaryMap.isDynamicCommand(SummaryTransform.MATCHED_ELEMENTS_FILTER.getName())); + assertTrue(SummaryMap.isDynamicCommand(SummaryTransform.MATCHED_ATTRIBUTE_ELEMENTS_FILTER.getName())); + assertFalse(SummaryMap.isDynamicCommand(SummaryTransform.ATTRIBUTE.getName())); + } + + @Test + void documentid_summary_field_has_corresponding_summary_transform() throws ParseException { + var schema = buildSchema("field foo type string { indexing: summary }", + joinLines("document-summary bar {", + " summary documentid type string {}", + "}")); + assertOverride(schema, "documentid", SummaryTransform.DOCUMENT_ID.getName(), "", "bar"); + } + + @Test + void documentid_summary_transform_requires_disk_access() { + assertFalse(SummaryTransform.DOCUMENT_ID.isInMemory()); + } + + private void assertOverride(String fieldContent, String expFieldName, String expCommand) throws ParseException { + assertOverride(buildSchema(fieldContent, ""), expFieldName, expCommand, expFieldName); + } + + private void assertOverride(Schema schema, String expFieldName, String expCommand, String expSource) throws ParseException { + assertOverride(schema, expFieldName, expCommand, expSource, "default"); + } + + private void assertOverride(Schema schema, String expFieldName, String expCommand, String expSource, String summaryClass) throws ParseException { + var summary = new SummaryClass(schema, schema.getSummary(summaryClass), new BaseDeployLogger()); + var cfg = new SummaryConfig.Classes(summary.getSummaryClassConfig()); + var field = cfg.fields(0); + assertEquals(expFieldName, field.name()); + assertEquals(expCommand, field.command()); + assertEquals(expSource, field.source()); + } + + private Schema buildSchema(String field, String documentSummary) throws ParseException { + var builder = new ApplicationBuilder(new RankProfileRegistry()); + builder.addSchema(joinLines("search test {", + " document test {", + field, + " }", + documentSummary, + "}")); + builder.build(true); + return builder.getSchema(); + } + } |