diff options
Diffstat (limited to 'config-model')
43 files changed, 326 insertions, 134 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/SummaryClass.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/SummaryClass.java index af2168545dc..c173b2c11d9 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/SummaryClass.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/SummaryClass.java @@ -28,6 +28,7 @@ public class SummaryClass extends Derived { /** True if this summary class needs to access summary information on disk */ private boolean accessingDiskSummary = false; private final boolean rawAsBase64; + private final boolean omitSummaryFeatures; /** The summary fields of this indexed by name */ private Map<String,SummaryClassField> fields = new java.util.LinkedHashMap<>(); @@ -44,6 +45,7 @@ public class SummaryClass extends Derived { public SummaryClass(Search search, DocumentSummary summary, DeployLogger deployLogger) { this.deployLogger = deployLogger; this.rawAsBase64 = search.isRawAsBase64(); + this.omitSummaryFeatures = summary.omitSummaryFeatures(); deriveName(summary); deriveFields(search,summary); deriveImplicitFields(summary); @@ -128,7 +130,8 @@ public class SummaryClass extends Derived { } classBuilder. id(id). - name(getName()); + name(getName()). + omitsummaryfeatures(omitSummaryFeatures); for (SummaryClassField field : fields.values() ) { classBuilder.fields(new SummaryConfig.Classes.Fields.Builder(). name(field.getName()). diff --git a/config-model/src/main/java/com/yahoo/vespa/documentmodel/DocumentSummary.java b/config-model/src/main/java/com/yahoo/vespa/documentmodel/DocumentSummary.java index 3c6aa881af4..454d0f08ff0 100644 --- a/config-model/src/main/java/com/yahoo/vespa/documentmodel/DocumentSummary.java +++ b/config-model/src/main/java/com/yahoo/vespa/documentmodel/DocumentSummary.java @@ -14,6 +14,7 @@ import java.util.List; public class DocumentSummary extends FieldView { private boolean fromDisk = false; + private boolean omitSummaryFeatures = false; private DocumentSummary inherited; /** @@ -30,6 +31,14 @@ public class DocumentSummary extends FieldView { /** Returns whether the user has noted explicitly that this summary accesses disk */ public boolean isFromDisk() { return fromDisk; } + public void setOmitSummaryFeatures(boolean value) { + omitSummaryFeatures = value; + } + + public boolean omitSummaryFeatures() { + return omitSummaryFeatures; + } + /** * The model is constrained to ensure that summary fields of the same name * in different classes have the same summary transform, because this is diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java index fde3e3f012e..317ed0f66c7 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java @@ -111,8 +111,6 @@ public final class ApplicationContainerCluster extends ContainerCluster<Applicat addSimpleComponent("com.yahoo.container.jdisc.AthenzIdentityProviderProvider"); addSimpleComponent("com.yahoo.container.jdisc.SystemInfoProvider"); addSimpleComponent(com.yahoo.container.core.documentapi.DocumentAccessProvider.class.getName()); - addSimpleComponent("com.yahoo.container.jdisc.messagebus.SessionCache"); - addMetricsHandlers(); addTestrunnerComponentsIfTester(deployState); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerModelEvaluation.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerModelEvaluation.java index 37bfb8821c3..65247f29281 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerModelEvaluation.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerModelEvaluation.java @@ -10,7 +10,9 @@ import com.yahoo.vespa.config.search.core.RankingConstantsConfig; import com.yahoo.vespa.config.search.core.RankingExpressionsConfig; import com.yahoo.vespa.model.container.component.Handler; import com.yahoo.vespa.model.container.component.SystemBindingPattern; +import com.yahoo.vespa.model.container.xml.PlatformBundles; +import java.nio.file.Path; import java.util.List; import java.util.Objects; @@ -26,17 +28,21 @@ public class ContainerModelEvaluation implements OnnxModelsConfig.Producer, RankingExpressionsConfig.Producer { - private final static String BUNDLE_NAME = "model-evaluation"; + private final static String EVALUATION_BUNDLE_NAME = "model-evaluation"; + private final static String INTEGRATION_BUNDLE_NAME = "model-integration"; private final static String EVALUATOR_NAME = ModelsEvaluator.class.getName(); private final static String REST_HANDLER_NAME = "ai.vespa.models.handler.ModelsEvaluationHandler"; private final static String REST_BINDING_PATH = "/model-evaluation/v1"; + public static final Path MODEL_EVALUATION_BUNDLE_FILE = PlatformBundles.absoluteBundlePath(EVALUATION_BUNDLE_NAME); + public static final Path MODEL_INTEGRATION_BUNDLE_FILE = PlatformBundles.absoluteBundlePath(INTEGRATION_BUNDLE_NAME); + /** Global rank profiles, aka models */ private final RankProfileList rankProfileList; public ContainerModelEvaluation(ApplicationContainerCluster cluster, RankProfileList rankProfileList) { this.rankProfileList = Objects.requireNonNull(rankProfileList, "rankProfileList cannot be null"); - cluster.addSimpleComponent(EVALUATOR_NAME, null, BUNDLE_NAME); + cluster.addSimpleComponent(EVALUATOR_NAME, null, EVALUATION_BUNDLE_NAME); cluster.addComponent(ContainerModelEvaluation.getHandler()); } @@ -64,7 +70,7 @@ public class ContainerModelEvaluation implements } public static Handler<?> getHandler() { - Handler<?> handler = new Handler<>(new ComponentModel(REST_HANDLER_NAME, null, BUNDLE_NAME)); + Handler<?> handler = new Handler<>(new ComponentModel(REST_HANDLER_NAME, null, EVALUATION_BUNDLE_NAME)); handler.addServerBindings( SystemBindingPattern.fromHttpPath(REST_BINDING_PATH), SystemBindingPattern.fromHttpPath(REST_BINDING_PATH + "/*")); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ConfigServerContainerModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ConfigServerContainerModelBuilder.java index a37d0ef416f..a1f52cca9fd 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ConfigServerContainerModelBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ConfigServerContainerModelBuilder.java @@ -6,6 +6,7 @@ import com.yahoo.config.model.deploy.DeployState; import com.yahoo.container.logging.FileConnectionLog; import com.yahoo.vespa.model.container.ApplicationContainerCluster; import com.yahoo.vespa.model.container.ContainerModel; +import com.yahoo.vespa.model.container.ContainerModelEvaluation; import com.yahoo.vespa.model.container.component.AccessLogComponent; import com.yahoo.vespa.model.container.component.ConnectionLogComponent; import com.yahoo.vespa.model.container.configserver.ConfigserverCluster; @@ -61,6 +62,11 @@ public class ConfigServerContainerModelBuilder extends ContainerModelBuilder { cluster.getHttp().getHttpServer().get().setHostedVespa(isHosted()); } + @Override + protected void addModelEvaluationBundles(ApplicationContainerCluster cluster) { + // Model evaluation bundles are pre-installed in the standalone container. + } + /** Note: using {@link CloudConfigOptions} as {@link DeployState#isHosted()} returns <em>false</em> for hosted configserver/controller */ private boolean isHosted() { return options.hostedVespa().orElse(Boolean.FALSE); } } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java index 3b04d536300..5bf8aa5228e 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java @@ -187,6 +187,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { throwUponRestApi(spec); // TODO: remove addServlets(deployState, spec, cluster); addModelEvaluation(spec, cluster, context); + addModelEvaluationBundles(cluster); addProcessing(deployState, spec, cluster); addSearch(deployState, spec, cluster); @@ -565,6 +566,14 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { cluster.setModelEvaluation(new ContainerModelEvaluation(cluster, profiles)); } + protected void addModelEvaluationBundles(ApplicationContainerCluster cluster) { + /* These bundles are added to all application container clusters, even if they haven't + * declared 'model-evaluation' in services.xml, because there are many public API packages + * in the model-evaluation bundle that could be used by customer code. */ + cluster.addPlatformBundle(ContainerModelEvaluation.MODEL_EVALUATION_BUNDLE_FILE); + cluster.addPlatformBundle(ContainerModelEvaluation.MODEL_INTEGRATION_BUNDLE_FILE); + } + private void addProcessing(DeployState deployState, Element spec, ApplicationContainerCluster cluster) { Element processingElement = XML.getChild(spec, "processing"); if (processingElement == null) return; diff --git a/config-model/src/main/javacc/SDParser.jj b/config-model/src/main/javacc/SDParser.jj index c247100db76..fb24b50aa99 100644 --- a/config-model/src/main/javacc/SDParser.jj +++ b/config-model/src/main/javacc/SDParser.jj @@ -291,6 +291,7 @@ TOKEN : | < TO: "to" > | < DIRECT: "direct" > | < FROMDISK: "from-disk" > +| < OMITSUMMARYFEATURES: "omit-summary-features" > | < ALWAYS: "always" > | < ONDEMAND: "on-demand" > | < NEVER: "never" > @@ -1767,6 +1768,7 @@ Object documentSummary(Search search) : lbrace() ( <FROMDISK> { summary.setFromDisk(true); } | + <OMITSUMMARYFEATURES> { summary.setOmitSummaryFeatures(true); } | documentSummaryItem(summary) | <NL> )* diff --git a/config-model/src/test/derived/advanced/summary.cfg b/config-model/src/test/derived/advanced/summary.cfg index a56d0e6aa4f..f497461b460 100644 --- a/config-model/src/test/derived/advanced/summary.cfg +++ b/config-model/src/test/derived/advanced/summary.cfg @@ -1,6 +1,7 @@ defaultsummaryid 1271952241 classes[].id 1271952241 classes[].name "default" +classes[].omitsummaryfeatures false classes[].fields[].name "debug" classes[].fields[].type "longstring" classes[].fields[].name "attributes" @@ -25,6 +26,7 @@ classes[].fields[].name "documentid" classes[].fields[].type "longstring" classes[].id 472092010 classes[].name "attributeprefetch" +classes[].omitsummaryfeatures false classes[].fields[].name "location_zcurve" classes[].fields[].type "int64" classes[].fields[].name "rankfeatures" diff --git a/config-model/src/test/derived/array_of_struct_attribute/summary.cfg b/config-model/src/test/derived/array_of_struct_attribute/summary.cfg index c1679c57d1a..965c875d5ce 100644 --- a/config-model/src/test/derived/array_of_struct_attribute/summary.cfg +++ b/config-model/src/test/derived/array_of_struct_attribute/summary.cfg @@ -1,6 +1,7 @@ defaultsummaryid 252850086 classes[].id 252850086 classes[].name "default" +classes[].omitsummaryfeatures false classes[].fields[].name "elem_array" classes[].fields[].type "jsonstring" classes[].fields[].name "rankfeatures" diff --git a/config-model/src/test/derived/attributeprefetch/summary.cfg b/config-model/src/test/derived/attributeprefetch/summary.cfg index 13b17464946..f0189f9a3c7 100644 --- a/config-model/src/test/derived/attributeprefetch/summary.cfg +++ b/config-model/src/test/derived/attributeprefetch/summary.cfg @@ -1,27 +1,29 @@ defaultsummaryid 1151071433 -classes[0].id 1151071433 -classes[0].name "default" -classes[0].fields[0].name "rankfeatures" -classes[0].fields[0].type "featuredata" -classes[0].fields[1].name "summaryfeatures" -classes[0].fields[1].type "featuredata" -classes[0].fields[2].name "documentid" -classes[0].fields[2].type "longstring" -classes[1].id 1980470965 -classes[1].name "attributeprefetch" -classes[1].fields[0].name "singlebyte" -classes[1].fields[0].type "byte" -classes[1].fields[1].name "singleint" -classes[1].fields[1].type "integer" -classes[1].fields[2].name "singlelong" -classes[1].fields[2].type "int64" -classes[1].fields[3].name "singlefloat" -classes[1].fields[3].type "float" -classes[1].fields[4].name "singledouble" -classes[1].fields[4].type "double" -classes[1].fields[5].name "singlestring" -classes[1].fields[5].type "longstring" -classes[1].fields[6].name "rankfeatures" -classes[1].fields[6].type "featuredata" -classes[1].fields[7].name "summaryfeatures" -classes[1].fields[7].type "featuredata"
\ No newline at end of file +classes[].id 1151071433 +classes[].name "default" +classes[].omitsummaryfeatures false +classes[].fields[].name "rankfeatures" +classes[].fields[].type "featuredata" +classes[].fields[].name "summaryfeatures" +classes[].fields[].type "featuredata" +classes[].fields[].name "documentid" +classes[].fields[].type "longstring" +classes[].id 1980470965 +classes[].name "attributeprefetch" +classes[].omitsummaryfeatures false +classes[].fields[].name "singlebyte" +classes[].fields[].type "byte" +classes[].fields[].name "singleint" +classes[].fields[].type "integer" +classes[].fields[].name "singlelong" +classes[].fields[].type "int64" +classes[].fields[].name "singlefloat" +classes[].fields[].type "float" +classes[].fields[].name "singledouble" +classes[].fields[].type "double" +classes[].fields[].name "singlestring" +classes[].fields[].type "longstring" +classes[].fields[].name "rankfeatures" +classes[].fields[].type "featuredata" +classes[].fields[].name "summaryfeatures" +classes[].fields[].type "featuredata" diff --git a/config-model/src/test/derived/complex/summary.cfg b/config-model/src/test/derived/complex/summary.cfg index 5bb472b5f41..2dac4736d23 100644 --- a/config-model/src/test/derived/complex/summary.cfg +++ b/config-model/src/test/derived/complex/summary.cfg @@ -1,41 +1,43 @@ defaultsummaryid 1506848752 -classes[0].id 1506848752 -classes[0].name "default" -classes[0].fields[0].name "woe" -classes[0].fields[0].type "longstring" -classes[0].fields[1].name "exact" -classes[0].fields[1].type "longstring" -classes[0].fields[2].name "title" -classes[0].fields[2].type "longstring" -classes[0].fields[3].name "dyntitle" -classes[0].fields[3].type "longstring" -classes[0].fields[4].name "source" -classes[0].fields[4].type "longstring" -classes[0].fields[5].name "stringfield" -classes[0].fields[5].type "longstring" -classes[0].fields[6].name "rankfeatures" -classes[0].fields[6].type "featuredata" -classes[0].fields[7].name "summaryfeatures" -classes[0].fields[7].type "featuredata" -classes[0].fields[8].name "documentid" -classes[0].fields[8].type "longstring" -classes[1].id 128090024 -classes[1].name "attributeprefetch" -classes[1].fields[0].name "year_sub" -classes[1].fields[0].type "integer" -classes[1].fields[1].name "prefixenabled" -classes[1].fields[1].type "longstring" -classes[1].fields[2].name "fleeting2" -classes[1].fields[2].type "float" -classes[1].fields[3].name "foundat" -classes[1].fields[3].type "int64" -classes[1].fields[4].name "collapseby" -classes[1].fields[4].type "integer" -classes[1].fields[5].name "ts" -classes[1].fields[5].type "int64" -classes[1].fields[6].name "combineda" -classes[1].fields[6].type "integer" -classes[1].fields[7].name "rankfeatures" -classes[1].fields[7].type "featuredata" -classes[1].fields[8].name "summaryfeatures" -classes[1].fields[8].type "featuredata"
\ No newline at end of file +classes[].id 1506848752 +classes[].name "default" +classes[].omitsummaryfeatures false +classes[].fields[].name "woe" +classes[].fields[].type "longstring" +classes[].fields[].name "exact" +classes[].fields[].type "longstring" +classes[].fields[].name "title" +classes[].fields[].type "longstring" +classes[].fields[].name "dyntitle" +classes[].fields[].type "longstring" +classes[].fields[].name "source" +classes[].fields[].type "longstring" +classes[].fields[].name "stringfield" +classes[].fields[].type "longstring" +classes[].fields[].name "rankfeatures" +classes[].fields[].type "featuredata" +classes[].fields[].name "summaryfeatures" +classes[].fields[].type "featuredata" +classes[].fields[].name "documentid" +classes[].fields[].type "longstring" +classes[].id 128090024 +classes[].name "attributeprefetch" +classes[].omitsummaryfeatures false +classes[].fields[].name "year_sub" +classes[].fields[].type "integer" +classes[].fields[].name "prefixenabled" +classes[].fields[].type "longstring" +classes[].fields[].name "fleeting2" +classes[].fields[].type "float" +classes[].fields[].name "foundat" +classes[].fields[].type "int64" +classes[].fields[].name "collapseby" +classes[].fields[].type "integer" +classes[].fields[].name "ts" +classes[].fields[].type "int64" +classes[].fields[].name "combineda" +classes[].fields[].type "integer" +classes[].fields[].name "rankfeatures" +classes[].fields[].type "featuredata" +classes[].fields[].name "summaryfeatures" +classes[].fields[].type "featuredata" diff --git a/config-model/src/test/derived/emptychild/summary.cfg b/config-model/src/test/derived/emptychild/summary.cfg index ed3a61a5de5..82bed7fd55e 100644 --- a/config-model/src/test/derived/emptychild/summary.cfg +++ b/config-model/src/test/derived/emptychild/summary.cfg @@ -1,6 +1,7 @@ defaultsummaryid 1814603381 classes[].id 1814603381 classes[].name "default" +classes[].omitsummaryfeatures false classes[].fields[].name "a1" classes[].fields[].type "longstring" classes[].fields[].name "rankfeatures" @@ -11,6 +12,7 @@ classes[].fields[].name "documentid" classes[].fields[].type "longstring" classes[].id 1490368133 classes[].name "attributeprefetch" +classes[].omitsummaryfeatures false classes[].fields[].name "a1" classes[].fields[].type "longstring" classes[].fields[].name "rankfeatures" diff --git a/config-model/src/test/derived/emptydefault/summary.cfg b/config-model/src/test/derived/emptydefault/summary.cfg index e47f24b21c3..61294d97b4c 100644 --- a/config-model/src/test/derived/emptydefault/summary.cfg +++ b/config-model/src/test/derived/emptydefault/summary.cfg @@ -1,6 +1,7 @@ defaultsummaryid 1151071433 classes[].id 1151071433 classes[].name "default" +classes[].omitsummaryfeatures false classes[].fields[].name "rankfeatures" classes[].fields[].type "featuredata" classes[].fields[].name "summaryfeatures" diff --git a/config-model/src/test/derived/id/summary.cfg b/config-model/src/test/derived/id/summary.cfg index dbc9a90ebce..b50b970afe2 100644 --- a/config-model/src/test/derived/id/summary.cfg +++ b/config-model/src/test/derived/id/summary.cfg @@ -1,6 +1,7 @@ defaultsummaryid 1814716401 classes[].id 1814716401 classes[].name "default" +classes[].omitsummaryfeatures false classes[].fields[].name "uri" classes[].fields[].type "longstring" classes[].fields[].name "rankfeatures" diff --git a/config-model/src/test/derived/imported_position_field/summary.cfg b/config-model/src/test/derived/imported_position_field/summary.cfg index 8da2598a5fc..3ab8e7e29e5 100644 --- a/config-model/src/test/derived/imported_position_field/summary.cfg +++ b/config-model/src/test/derived/imported_position_field/summary.cfg @@ -1,17 +1,19 @@ defaultsummaryid 1570252291 -classes[0].id 1570252291 -classes[0].name "default" -classes[0].fields[0].name "parent_ref" -classes[0].fields[0].type "longstring" -classes[0].fields[1].name "rankfeatures" -classes[0].fields[1].type "featuredata" -classes[0].fields[2].name "summaryfeatures" -classes[0].fields[2].type "featuredata" -classes[0].fields[3].name "documentid" -classes[0].fields[3].type "longstring" -classes[1].id 1274088866 -classes[1].name "attributeprefetch" -classes[1].fields[0].name "rankfeatures" -classes[1].fields[0].type "featuredata" -classes[1].fields[1].name "summaryfeatures" -classes[1].fields[1].type "featuredata"
\ No newline at end of file +classes[].id 1570252291 +classes[].name "default" +classes[].omitsummaryfeatures false +classes[].fields[].name "parent_ref" +classes[].fields[].type "longstring" +classes[].fields[].name "rankfeatures" +classes[].fields[].type "featuredata" +classes[].fields[].name "summaryfeatures" +classes[].fields[].type "featuredata" +classes[].fields[].name "documentid" +classes[].fields[].type "longstring" +classes[].id 1274088866 +classes[].name "attributeprefetch" +classes[].omitsummaryfeatures false +classes[].fields[].name "rankfeatures" +classes[].fields[].type "featuredata" +classes[].fields[].name "summaryfeatures" +classes[].fields[].type "featuredata" diff --git a/config-model/src/test/derived/imported_position_field_summary/summary.cfg b/config-model/src/test/derived/imported_position_field_summary/summary.cfg index b607786ca36..76faac23170 100644 --- a/config-model/src/test/derived/imported_position_field_summary/summary.cfg +++ b/config-model/src/test/derived/imported_position_field_summary/summary.cfg @@ -1,6 +1,7 @@ defaultsummaryid 1194448774 classes[].id 1194448774 classes[].name "default" +classes[].omitsummaryfeatures false classes[].fields[].name "parent_ref" classes[].fields[].type "longstring" classes[].fields[].name "rankfeatures" @@ -17,6 +18,7 @@ classes[].fields[].name "documentid" classes[].fields[].type "longstring" classes[].id 890647799 classes[].name "mysummary" +classes[].omitsummaryfeatures false classes[].fields[].name "my_pos" classes[].fields[].type "jsonstring" classes[].fields[].name "rankfeatures" @@ -29,6 +31,7 @@ classes[].fields[].name "my_pos.distance" classes[].fields[].type "integer" classes[].id 1274088866 classes[].name "attributeprefetch" +classes[].omitsummaryfeatures false classes[].fields[].name "rankfeatures" classes[].fields[].type "featuredata" classes[].fields[].name "summaryfeatures" diff --git a/config-model/src/test/derived/imported_struct_fields/summary.cfg b/config-model/src/test/derived/imported_struct_fields/summary.cfg index 3a9bf4f5e0a..ab6c6853925 100644 --- a/config-model/src/test/derived/imported_struct_fields/summary.cfg +++ b/config-model/src/test/derived/imported_struct_fields/summary.cfg @@ -1,43 +1,47 @@ defaultsummaryid 1570252291 -classes[0].id 1570252291 -classes[0].name "default" -classes[0].fields[0].name "parent_ref" -classes[0].fields[0].type "longstring" -classes[0].fields[1].name "rankfeatures" -classes[0].fields[1].type "featuredata" -classes[0].fields[2].name "summaryfeatures" -classes[0].fields[2].type "featuredata" -classes[0].fields[3].name "documentid" -classes[0].fields[3].type "longstring" -classes[1].id 2126652894 -classes[1].name "mysummary" -classes[1].fields[0].name "documentid" -classes[1].fields[0].type "longstring" -classes[1].fields[1].name "my_elem_array" -classes[1].fields[1].type "jsonstring" -classes[1].fields[2].name "my_elem_map" -classes[1].fields[2].type "jsonstring" -classes[1].fields[3].name "my_str_int_map" -classes[1].fields[3].type "jsonstring" -classes[1].fields[4].name "rankfeatures" -classes[1].fields[4].type "featuredata" -classes[1].fields[5].name "summaryfeatures" -classes[1].fields[5].type "featuredata" -classes[2].id 1629947863 -classes[2].name "filtered" -classes[2].fields[0].name "elem_array_filtered" -classes[2].fields[0].type "jsonstring" -classes[2].fields[1].name "elem_map_filtered" -classes[2].fields[1].type "jsonstring" -classes[2].fields[2].name "str_int_map_filtered" -classes[2].fields[2].type "jsonstring" -classes[2].fields[3].name "rankfeatures" -classes[2].fields[3].type "featuredata" -classes[2].fields[4].name "summaryfeatures" -classes[2].fields[4].type "featuredata" -classes[3].id 1274088866 -classes[3].name "attributeprefetch" -classes[3].fields[0].name "rankfeatures" -classes[3].fields[0].type "featuredata" -classes[3].fields[1].name "summaryfeatures" -classes[3].fields[1].type "featuredata"
\ No newline at end of file +classes[].id 1570252291 +classes[].name "default" +classes[].omitsummaryfeatures false +classes[].fields[].name "parent_ref" +classes[].fields[].type "longstring" +classes[].fields[].name "rankfeatures" +classes[].fields[].type "featuredata" +classes[].fields[].name "summaryfeatures" +classes[].fields[].type "featuredata" +classes[].fields[].name "documentid" +classes[].fields[].type "longstring" +classes[].id 2126652894 +classes[].name "mysummary" +classes[].omitsummaryfeatures false +classes[].fields[].name "documentid" +classes[].fields[].type "longstring" +classes[].fields[].name "my_elem_array" +classes[].fields[].type "jsonstring" +classes[].fields[].name "my_elem_map" +classes[].fields[].type "jsonstring" +classes[].fields[].name "my_str_int_map" +classes[].fields[].type "jsonstring" +classes[].fields[].name "rankfeatures" +classes[].fields[].type "featuredata" +classes[].fields[].name "summaryfeatures" +classes[].fields[].type "featuredata" +classes[].id 1629947863 +classes[].name "filtered" +classes[].omitsummaryfeatures false +classes[].fields[].name "elem_array_filtered" +classes[].fields[].type "jsonstring" +classes[].fields[].name "elem_map_filtered" +classes[].fields[].type "jsonstring" +classes[].fields[].name "str_int_map_filtered" +classes[].fields[].type "jsonstring" +classes[].fields[].name "rankfeatures" +classes[].fields[].type "featuredata" +classes[].fields[].name "summaryfeatures" +classes[].fields[].type "featuredata" +classes[].id 1274088866 +classes[].name "attributeprefetch" +classes[].omitsummaryfeatures false +classes[].fields[].name "rankfeatures" +classes[].fields[].type "featuredata" +classes[].fields[].name "summaryfeatures" +classes[].fields[].type "featuredata" diff --git a/config-model/src/test/derived/importedfields/summary.cfg b/config-model/src/test/derived/importedfields/summary.cfg index f95949cfa62..74b5b44214e 100644 --- a/config-model/src/test/derived/importedfields/summary.cfg +++ b/config-model/src/test/derived/importedfields/summary.cfg @@ -1,6 +1,7 @@ defaultsummaryid 1294344677 classes[].id 1294344677 classes[].name "default" +classes[].omitsummaryfeatures false classes[].fields[].name "b_ref_with_summary" classes[].fields[].type "longstring" classes[].fields[].name "rankfeatures" @@ -11,6 +12,7 @@ classes[].fields[].name "documentid" classes[].fields[].type "longstring" classes[].id 159551552 classes[].name "mysummary" +classes[].omitsummaryfeatures false classes[].fields[].name "a_ref" classes[].fields[].type "longstring" classes[].fields[].name "b_ref_with_summary" @@ -33,6 +35,7 @@ classes[].fields[].name "summaryfeatures" classes[].fields[].type "featuredata" classes[].id 1274088866 classes[].name "attributeprefetch" +classes[].omitsummaryfeatures false classes[].fields[].name "rankfeatures" classes[].fields[].type "featuredata" classes[].fields[].name "summaryfeatures" diff --git a/config-model/src/test/derived/indexswitches/summary.cfg b/config-model/src/test/derived/indexswitches/summary.cfg index 5bdc8fcdef4..d04bc4eb167 100644 --- a/config-model/src/test/derived/indexswitches/summary.cfg +++ b/config-model/src/test/derived/indexswitches/summary.cfg @@ -1,6 +1,7 @@ defaultsummaryid 1698765342 classes[].id 1698765342 classes[].name "default" +classes[].omitsummaryfeatures false classes[].fields[].name "source" classes[].fields[].type "longstring" classes[].fields[].name "title" diff --git a/config-model/src/test/derived/inheritance/summary.cfg b/config-model/src/test/derived/inheritance/summary.cfg index dde71a1378c..dde9f95ecbe 100644 --- a/config-model/src/test/derived/inheritance/summary.cfg +++ b/config-model/src/test/derived/inheritance/summary.cfg @@ -1,6 +1,7 @@ defaultsummaryid 1797992819 classes[].id 1797992819 classes[].name "default" +classes[].omitsummaryfeatures false classes[].fields[].name "onlyfather" classes[].fields[].type "longstring" classes[].fields[].name "rankfeatures" @@ -11,6 +12,7 @@ classes[].fields[].name "documentid" classes[].fields[].type "longstring" classes[].id 1608562186 classes[].name "attributeprefetch" +classes[].omitsummaryfeatures false classes[].fields[].name "onlygrandparent" classes[].fields[].type "integer" classes[].fields[].name "overridden" diff --git a/config-model/src/test/derived/integerattributetostringindex/summary.cfg b/config-model/src/test/derived/integerattributetostringindex/summary.cfg index 267585e3fda..d5eb316ff01 100644 --- a/config-model/src/test/derived/integerattributetostringindex/summary.cfg +++ b/config-model/src/test/derived/integerattributetostringindex/summary.cfg @@ -1,6 +1,7 @@ defaultsummaryid 1195656216 classes[].id 1195656216 classes[].name "default" +classes[].omitsummaryfeatures false classes[].fields[].name "attinx" classes[].fields[].type "integer" classes[].fields[].name "artist" @@ -17,6 +18,7 @@ classes[].fields[].name "documentid" classes[].fields[].type "longstring" classes[].id 1706878063 classes[].name "attributeprefetch" +classes[].omitsummaryfeatures false classes[].fields[].name "attinx" classes[].fields[].type "integer" classes[].fields[].name "artist" diff --git a/config-model/src/test/derived/map_attribute/summary.cfg b/config-model/src/test/derived/map_attribute/summary.cfg index 24d6cab7697..b465bdfa541 100644 --- a/config-model/src/test/derived/map_attribute/summary.cfg +++ b/config-model/src/test/derived/map_attribute/summary.cfg @@ -1,6 +1,7 @@ defaultsummaryid 1376056200 classes[].id 1376056200 classes[].name "default" +classes[].omitsummaryfeatures false classes[].fields[].name "str_map" classes[].fields[].type "jsonstring" classes[].fields[].name "int_map" diff --git a/config-model/src/test/derived/map_of_struct_attribute/summary.cfg b/config-model/src/test/derived/map_of_struct_attribute/summary.cfg index f70025c8f02..67988dbf30e 100644 --- a/config-model/src/test/derived/map_of_struct_attribute/summary.cfg +++ b/config-model/src/test/derived/map_of_struct_attribute/summary.cfg @@ -1,6 +1,7 @@ defaultsummaryid 1131098132 classes[].id 1131098132 classes[].name "default" +classes[].omitsummaryfeatures false classes[].fields[].name "str_elem_map" classes[].fields[].type "jsonstring" classes[].fields[].name "int_elem_map" diff --git a/config-model/src/test/derived/mlr/summary.cfg b/config-model/src/test/derived/mlr/summary.cfg index cb5bf17df84..b6a53a9a1d9 100644 --- a/config-model/src/test/derived/mlr/summary.cfg +++ b/config-model/src/test/derived/mlr/summary.cfg @@ -1,6 +1,7 @@ defaultsummaryid 1868876861 classes[].id 1868876861 classes[].name "default" +classes[].omitsummaryfeatures false classes[].fields[].name "a" classes[].fields[].type "longstring" classes[].fields[].name "b" @@ -13,6 +14,7 @@ classes[].fields[].name "documentid" classes[].fields[].type "longstring" classes[].id 1944325986 classes[].name "attributeprefetch" +classes[].omitsummaryfeatures false classes[].fields[].name "a" classes[].fields[].type "longstring" classes[].fields[].name "ranklog" diff --git a/config-model/src/test/derived/music/summary.cfg b/config-model/src/test/derived/music/summary.cfg index 3eca077dbc8..bc55727b407 100644 --- a/config-model/src/test/derived/music/summary.cfg +++ b/config-model/src/test/derived/music/summary.cfg @@ -1,6 +1,7 @@ defaultsummaryid 2086497905 classes[].id 2086497905 classes[].name "default" +classes[].omitsummaryfeatures false classes[].fields[].name "bgndata" classes[].fields[].type "longstring" classes[].fields[].name "sales" @@ -79,6 +80,7 @@ classes[].fields[].name "documentid" classes[].fields[].type "longstring" classes[].id 2060710706 classes[].name "attributeprefetch" +classes[].omitsummaryfeatures false classes[].fields[].name "sales" classes[].fields[].type "integer" classes[].fields[].name "pto" diff --git a/config-model/src/test/derived/newrank/summary.cfg b/config-model/src/test/derived/newrank/summary.cfg index 7cd92c26e02..0b98b20c342 100644 --- a/config-model/src/test/derived/newrank/summary.cfg +++ b/config-model/src/test/derived/newrank/summary.cfg @@ -1,6 +1,7 @@ defaultsummaryid 912980235 classes[].id 912980235 classes[].name "default" +classes[].omitsummaryfeatures false classes[].fields[].name "bgndata" classes[].fields[].type "longstring" classes[].fields[].name "sales" @@ -71,6 +72,7 @@ classes[].fields[].name "documentid" classes[].fields[].type "longstring" classes[].id 1606815285 classes[].name "attributeprefetch" +classes[].omitsummaryfeatures false classes[].fields[].name "sales" classes[].fields[].type "integer" classes[].fields[].name "pto" diff --git a/config-model/src/test/derived/position_nosummary/summary.cfg b/config-model/src/test/derived/position_nosummary/summary.cfg index fad012393ef..4222e88cc2f 100644 --- a/config-model/src/test/derived/position_nosummary/summary.cfg +++ b/config-model/src/test/derived/position_nosummary/summary.cfg @@ -1,6 +1,7 @@ defaultsummaryid 1727020212 classes[].id 1727020212 classes[].name "default" +classes[].omitsummaryfeatures false classes[].fields[].name "pos.position" classes[].fields[].type "xmlstring" classes[].fields[].name "pos.distance" @@ -13,6 +14,7 @@ classes[].fields[].name "documentid" classes[].fields[].type "longstring" classes[].id 1530141163 classes[].name "attributeprefetch" +classes[].omitsummaryfeatures false classes[].fields[].name "pos_zcurve" classes[].fields[].type "int64" classes[].fields[].name "rankfeatures" diff --git a/config-model/src/test/derived/position_summary/summary.cfg b/config-model/src/test/derived/position_summary/summary.cfg index af801f43cc0..f54066d865e 100644 --- a/config-model/src/test/derived/position_summary/summary.cfg +++ b/config-model/src/test/derived/position_summary/summary.cfg @@ -1,6 +1,7 @@ defaultsummaryid 230670304 classes[].id 230670304 classes[].name "default" +classes[].omitsummaryfeatures false classes[].fields[].name "pos" classes[].fields[].type "jsonstring" classes[].fields[].name "pos.position" @@ -15,6 +16,7 @@ classes[].fields[].name "documentid" classes[].fields[].type "longstring" classes[].id 1530141163 classes[].name "attributeprefetch" +classes[].omitsummaryfeatures false classes[].fields[].name "pos_zcurve" classes[].fields[].type "int64" classes[].fields[].name "rankfeatures" diff --git a/config-model/src/test/derived/predicate_attribute/summary.cfg b/config-model/src/test/derived/predicate_attribute/summary.cfg index 6e33bd4e567..9cc613107e0 100644 --- a/config-model/src/test/derived/predicate_attribute/summary.cfg +++ b/config-model/src/test/derived/predicate_attribute/summary.cfg @@ -1,6 +1,7 @@ defaultsummaryid 1391971216 classes[].id 1391971216 classes[].name "default" +classes[].omitsummaryfeatures false classes[].fields[].name "some_predicate_field" classes[].fields[].type "string" classes[].fields[].name "rankfeatures" @@ -11,6 +12,7 @@ classes[].fields[].name "documentid" classes[].fields[].type "longstring" classes[].id 1274088866 classes[].name "attributeprefetch" +classes[].omitsummaryfeatures false classes[].fields[].name "rankfeatures" classes[].fields[].type "featuredata" classes[].fields[].name "summaryfeatures" diff --git a/config-model/src/test/derived/rankexpression/summary.cfg b/config-model/src/test/derived/rankexpression/summary.cfg index f8b56baf8f2..4f417a848a7 100644 --- a/config-model/src/test/derived/rankexpression/summary.cfg +++ b/config-model/src/test/derived/rankexpression/summary.cfg @@ -1,6 +1,7 @@ defaultsummaryid 1753207254 classes[].id 1753207254 classes[].name "default" +classes[].omitsummaryfeatures false classes[].fields[].name "artist" classes[].fields[].type "longstring" classes[].fields[].name "title" @@ -17,6 +18,7 @@ classes[].fields[].name "documentid" classes[].fields[].type "longstring" classes[].id 1736696699 classes[].name "attributeprefetch" +classes[].omitsummaryfeatures false classes[].fields[].name "year" classes[].fields[].type "integer" classes[].fields[].name "foo1" diff --git a/config-model/src/test/derived/ranktypes/summary.cfg b/config-model/src/test/derived/ranktypes/summary.cfg index 9644eb878ea..49b668e9edf 100644 --- a/config-model/src/test/derived/ranktypes/summary.cfg +++ b/config-model/src/test/derived/ranktypes/summary.cfg @@ -1,6 +1,7 @@ defaultsummaryid 1567556360 classes[].id 1567556360 classes[].name "default" +classes[].omitsummaryfeatures false classes[].fields[].name "title" classes[].fields[].type "longstring" classes[].fields[].name "descr" diff --git a/config-model/src/test/derived/reference_fields/summary.cfg b/config-model/src/test/derived/reference_fields/summary.cfg index 49037473d88..410bccff7b3 100644 --- a/config-model/src/test/derived/reference_fields/summary.cfg +++ b/config-model/src/test/derived/reference_fields/summary.cfg @@ -1,6 +1,7 @@ defaultsummaryid 1987541865 classes[].id 1987541865 classes[].name "default" +classes[].omitsummaryfeatures false classes[].fields[].name "campaign_ref" classes[].fields[].type "longstring" classes[].fields[].name "rankfeatures" @@ -11,6 +12,7 @@ classes[].fields[].name "documentid" classes[].fields[].type "longstring" classes[].id 428144659 classes[].name "explicit_summary" +classes[].omitsummaryfeatures false classes[].fields[].name "yet_another_ref" classes[].fields[].type "longstring" classes[].fields[].name "rankfeatures" @@ -19,6 +21,7 @@ classes[].fields[].name "summaryfeatures" classes[].fields[].type "featuredata" classes[].id 1274088866 classes[].name "attributeprefetch" +classes[].omitsummaryfeatures false classes[].fields[].name "rankfeatures" classes[].fields[].type "featuredata" classes[].fields[].name "summaryfeatures" diff --git a/config-model/src/test/derived/streamingstruct/summary.cfg b/config-model/src/test/derived/streamingstruct/summary.cfg index 28f19e6fe25..655499a88be 100644 --- a/config-model/src/test/derived/streamingstruct/summary.cfg +++ b/config-model/src/test/derived/streamingstruct/summary.cfg @@ -1,6 +1,7 @@ defaultsummaryid 569269436 classes[].id 569269436 classes[].name "default" +classes[].omitsummaryfeatures false classes[].fields[].name "coupleof" classes[].fields[].type "longstring" classes[].fields[].name "anothersummaryfield" @@ -41,6 +42,7 @@ classes[].fields[].name "documentid" classes[].fields[].type "longstring" classes[].id 109252281 classes[].name "summ" +classes[].omitsummaryfeatures false classes[].fields[].name "snippet" classes[].fields[].type "longstring" classes[].fields[].name "snippet2" diff --git a/config-model/src/test/derived/streamingstructdefault/summary.cfg b/config-model/src/test/derived/streamingstructdefault/summary.cfg index caa44931c6a..a52b34925dc 100644 --- a/config-model/src/test/derived/streamingstructdefault/summary.cfg +++ b/config-model/src/test/derived/streamingstructdefault/summary.cfg @@ -1,6 +1,7 @@ defaultsummaryid 718801936 classes[].id 718801936 classes[].name "default" +classes[].omitsummaryfeatures false classes[].fields[].name "sum1" classes[].fields[].type "longstring" classes[].fields[].name "f1" diff --git a/config-model/src/test/derived/tensor/summary.cfg b/config-model/src/test/derived/tensor/summary.cfg index fb32eacbb4c..355cba0e561 100644 --- a/config-model/src/test/derived/tensor/summary.cfg +++ b/config-model/src/test/derived/tensor/summary.cfg @@ -1,6 +1,7 @@ defaultsummaryid 898020074 classes[].id 898020074 classes[].name "default" +classes[].omitsummaryfeatures false classes[].fields[].name "f1" classes[].fields[].type "tensor" classes[].fields[].name "f3" @@ -17,6 +18,7 @@ classes[].fields[].name "documentid" classes[].fields[].type "longstring" classes[].id 1476352352 classes[].name "attributeprefetch" +classes[].omitsummaryfeatures false classes[].fields[].name "f2" classes[].fields[].type "tensor" classes[].fields[].name "f3" diff --git a/config-model/src/test/derived/tokenization/ilscripts.cfg b/config-model/src/test/derived/tokenization/ilscripts.cfg new file mode 100644 index 00000000000..ead74110db3 --- /dev/null +++ b/config-model/src/test/derived/tokenization/ilscripts.cfg @@ -0,0 +1,9 @@ +maxtermoccurrences 100 +fieldmatchmaxlength 1000000 +ilscript[].doctype "tokenization" +ilscript[].docfield[] "text" +ilscript[].docfield[] "text_array" +ilscript[].content[] "clear_state | guard { input text_array | for_each { lowercase } | for_each { normalize } | for_each { tokenize normalize stem:\"BEST\" } | index text_array_derived | summary text_array_derived; }" +ilscript[].content[] "clear_state | guard { input text | normalize | tokenize normalize stem:\"BEST\" | index text_derived | summary text_derived; }" +ilscript[].content[] "clear_state | guard { input text | tokenize normalize stem:\"BEST\" | index text | summary text; }" +ilscript[].content[] "clear_state | guard { input text_array | for_each { tokenize normalize stem:\"BEST\" } | index text_array | summary text_array; }"
\ No newline at end of file diff --git a/config-model/src/test/derived/tokenization/tokenization.sd b/config-model/src/test/derived/tokenization/tokenization.sd new file mode 100644 index 00000000000..4510a574d60 --- /dev/null +++ b/config-model/src/test/derived/tokenization/tokenization.sd @@ -0,0 +1,23 @@ +schema tokenization { + + document tokenization { + + field text type string { + indexing: index | summary + } + + field text_array type array<string> { + indexing: index | summary + } + + } + + field text_derived type string { + indexing: input text | normalize | index | summary + } + + field text_array_derived type array<string> { + indexing: input text_array | for_each { lowercase } | for_each { normalize } | index | summary + } + +}
\ No newline at end of file diff --git a/config-model/src/test/derived/types/summary.cfg b/config-model/src/test/derived/types/summary.cfg index e5485a24c8c..e0e67a5669d 100644 --- a/config-model/src/test/derived/types/summary.cfg +++ b/config-model/src/test/derived/types/summary.cfg @@ -1,6 +1,7 @@ defaultsummaryid 1131946680 classes[].id 1131946680 classes[].name "default" +classes[].omitsummaryfeatures false classes[].fields[].name "abyte" classes[].fields[].type "byte" classes[].fields[].name "along" @@ -25,6 +26,7 @@ classes[].fields[].name "documentid" classes[].fields[].type "longstring" classes[].id 1027812395 classes[].name "attributeprefetch" +classes[].omitsummaryfeatures false classes[].fields[].name "other" classes[].fields[].type "int64" classes[].fields[].name "abyte" diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryTestCase.java index bfc738a4f87..ef7da4f23d0 100644 --- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryTestCase.java +++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryTestCase.java @@ -6,6 +6,7 @@ import com.yahoo.searchdefinition.Search; import com.yahoo.searchdefinition.SearchBuilder; import com.yahoo.searchdefinition.SchemaTestCase; import com.yahoo.searchdefinition.parser.ParseException; +import com.yahoo.vespa.config.search.SummaryConfig; import org.junit.Test; import java.io.IOException; @@ -14,6 +15,7 @@ import java.util.Iterator; import static com.yahoo.config.model.test.TestUtil.joinLines; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; /** * Tests summary extraction @@ -151,4 +153,30 @@ public class SummaryTestCase extends SchemaTestCase { return builder.getSearch("ad"); } + @Test + public void omit_summary_features_specified_for_document_summary() throws ParseException { + String sd = joinLines( + "schema test {", + " document test {", + " field foo type string { indexing: summary }", + " }", + " document-summary bar {", + " summary foo type string {}", + " omit-summary-features", + " }", + " document-summary baz {", + " summary foo type string {}", + " }", + "}"); + var search = SearchBuilder.createFromString(sd).getSearch(); + assertOmitSummaryFeatures(true, search, "bar"); + assertOmitSummaryFeatures(false, search, "baz"); + } + + private void assertOmitSummaryFeatures(boolean expected, Search search, String summaryName) { + var summary = new SummaryClass(search, search.getSummary(summaryName), new BaseDeployLogger()); + var config = new SummaryConfig.Classes(summary.getSummaryClassConfig()); + assertEquals(expected, config.omitsummaryfeatures()); + } + } diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/TokenizationTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/TokenizationTestCase.java new file mode 100755 index 00000000000..6fe367ef6d1 --- /dev/null +++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/TokenizationTestCase.java @@ -0,0 +1,19 @@ +// Copyright Verizon media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.searchdefinition.derived; + +import com.yahoo.searchdefinition.parser.ParseException; +import org.junit.Test; + +import java.io.IOException; + +/** + * @author bratseh + */ +public class TokenizationTestCase extends AbstractExportingTestCase { + + @Test + public void testTokenizationScripts() throws IOException, ParseException { + assertCorrectDeriving("tokenization"); + } + +} diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/configserver/ConfigserverClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/configserver/ConfigserverClusterTest.java index 2b55d7a3948..2144c3c9a66 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/container/configserver/ConfigserverClusterTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/container/configserver/ConfigserverClusterTest.java @@ -9,6 +9,7 @@ import com.yahoo.config.model.deploy.DeployState; import com.yahoo.config.model.producer.AbstractConfigProducerRoot; import com.yahoo.config.model.test.MockRoot; import com.yahoo.container.StatisticsConfig; +import com.yahoo.container.di.config.PlatformBundlesConfig; import com.yahoo.container.jdisc.config.HealthMonitorConfig; import com.yahoo.net.HostName; import com.yahoo.text.XML; @@ -16,6 +17,7 @@ import com.yahoo.vespa.defaults.Defaults; import com.yahoo.vespa.model.HostResource; import com.yahoo.vespa.model.container.Container; import com.yahoo.vespa.model.container.ContainerModel; +import com.yahoo.vespa.model.container.ContainerModelEvaluation; import com.yahoo.vespa.model.container.configserver.option.CloudConfigOptions; import com.yahoo.vespa.model.container.xml.ConfigServerContainerModelBuilder; import org.junit.Test; @@ -27,6 +29,8 @@ import java.util.Optional; import java.util.function.Function; import java.util.stream.Collectors; +import static org.hamcrest.CoreMatchers.not; +import static org.hamcrest.Matchers.hasItem; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; @@ -124,6 +128,14 @@ public class ConfigserverClusterTest { assertTrue(config.zookeeperLocalhostAffinity()); } + @Test + public void model_evaluation_bundles_are_not_installed_via_config() { + // These bundles must be pre-installed because they are used by config-model. + PlatformBundlesConfig config = getConfig(PlatformBundlesConfig.class); + assertThat(config.bundlePaths(), not(hasItem(ContainerModelEvaluation.MODEL_INTEGRATION_BUNDLE_FILE.toString()))); + assertThat(config.bundlePaths(), not(hasItem(ContainerModelEvaluation.MODEL_EVALUATION_BUNDLE_FILE.toString()))); + } + @SuppressWarnings("varargs") private static <T> void assertZookeeperServerProperty( List<ZookeeperServerConfig.Server> zkServers, Function<ZookeeperServerConfig.Server, T> propertyMapper, T... expectedProperties) { diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java index 543318f9224..ccee21c87dc 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java @@ -27,6 +27,7 @@ import com.yahoo.container.ComponentsConfig; import com.yahoo.container.QrConfig; import com.yahoo.container.core.ChainsConfig; import com.yahoo.container.core.VipStatusConfig; +import com.yahoo.container.di.config.PlatformBundlesConfig; import com.yahoo.container.handler.VipStatusHandler; import com.yahoo.container.handler.metrics.MetricsV2Handler; import com.yahoo.container.handler.observability.ApplicationStatusHandler; @@ -52,6 +53,7 @@ import com.yahoo.vespa.model.VespaModel; import com.yahoo.vespa.model.container.ApplicationContainer; import com.yahoo.vespa.model.container.ApplicationContainerCluster; import com.yahoo.vespa.model.container.ContainerCluster; +import com.yahoo.vespa.model.container.ContainerModelEvaluation; import com.yahoo.vespa.model.container.SecretStore; import com.yahoo.vespa.model.container.component.Component; import com.yahoo.vespa.model.container.http.ConnectorFactory; @@ -124,6 +126,14 @@ public class ContainerModelBuilderTest extends ContainerModelBuilderTestBase { public TemporaryFolder applicationFolder = new TemporaryFolder(); @Test + public void model_evaluation_bundles_are_deployed() { + createBasicContainerModel(); + PlatformBundlesConfig config = root.getConfig(PlatformBundlesConfig.class, "default"); + assertThat(config.bundlePaths(), hasItem(ContainerModelEvaluation.MODEL_EVALUATION_BUNDLE_FILE.toString())); + assertThat(config.bundlePaths(), hasItem(ContainerModelEvaluation.MODEL_INTEGRATION_BUNDLE_FILE.toString())); + } + + @Test public void deprecated_jdisc_tag_is_allowed() { Element clusterElem = DomBuilderTest.parse( "<jdisc version='1.0'>", @@ -244,10 +254,7 @@ public class ContainerModelBuilderTest extends ContainerModelBuilderTestBase { @Test public void verify_bindings_for_builtin_handlers() { - Element clusterElem = DomBuilderTest.parse( - "<container id='default' version='1.0' />" - ); - createModel(root, clusterElem); + createBasicContainerModel(); JdiscBindingsConfig config = root.getConfig(JdiscBindingsConfig.class, "default/container.0"); JdiscBindingsConfig.Handlers defaultRootHandler = config.handlers(BindingsOverviewHandler.class.getName()); diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTestBase.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTestBase.java index 9e02572737e..7034176da14 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTestBase.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTestBase.java @@ -4,6 +4,7 @@ package com.yahoo.vespa.model.container.xml; import com.yahoo.collections.Pair; import com.yahoo.component.ComponentId; import com.yahoo.config.application.api.DeployLogger; +import com.yahoo.config.model.builder.xml.test.DomBuilderTest; import com.yahoo.config.model.deploy.DeployState; import com.yahoo.config.model.test.MockRoot; import com.yahoo.container.ComponentsConfig; @@ -51,6 +52,11 @@ public abstract class ContainerModelBuilderTestBase { protected MockRoot root; + protected void createBasicContainerModel() { + Element clusterElem = DomBuilderTest.parse("<container id='default' version='1.0' />"); + createModel(root, clusterElem); + } + public static void createModel(MockRoot root, DeployState deployState, VespaModel vespaModel, Element... containerElems) { for (Element containerElem : containerElems) { ContainerModel model = new ContainerModelBuilder(false, ContainerModelBuilder.Networking.enable) |