aboutsummaryrefslogtreecommitdiffstats
path: root/config-model/src/test/java/com/yahoo
diff options
context:
space:
mode:
Diffstat (limited to 'config-model/src/test/java/com/yahoo')
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/ApplicationDeployTest.java16
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/ApplicationPackageTester.java4
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java10
-rw-r--r--config-model/src/test/java/com/yahoo/document/test/SDDocumentTypeTestCase.java8
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/ArraysTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/ArraysWeightedSetsTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/AttributeSettingsTestCase.java32
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/CommentTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/DiversityTestCase.java20
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/DocumentGraphValidatorTest.java3
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/DocumentReferenceResolverTest.java11
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/ImportedFieldsEnumeratorTest.java7
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/IncorrectRankingExpressionFileRefTestCase.java6
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/IncorrectSummaryTypesTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/IndexSettingsTestCase.java4
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/IndexingParsingTestCase.java4
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/MultipleSummariesTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/NameFieldCheckTestCase.java6
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/OutsideTestCase.java4
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/PredicateDataTypeTestCase.java20
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/RankProfileRegistryTest.java5
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/RankProfileTestCase.java65
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/RankPropertiesTestCase.java12
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/RankingConstantTest.java48
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionConstantsTestCase.java36
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionInliningTestCase.java34
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionLoopDetectionTestCase.java48
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionShadowingTestCase.java24
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionValidationTestCase.java28
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/ReservedWordsAsFieldNamesTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/SchemaImporterTestCase.java63
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/SchemaParsingTestCase.java18
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/SchemaTestCase.java119
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/StemmingSettingTestCase.java4
-rwxr-xr-xconfig-model/src/test/java/com/yahoo/searchdefinition/StructTestCase.java4
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/SummaryTestCase.java16
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/UrlFieldValidationTestCase.java14
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/AbstractExportingTestCase.java21
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/AttributeListTestCase.java12
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/CasingTestCase.java4
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/EmptyRankProfileTestCase.java7
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/ExportingTestCase.java30
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/IdTestCase.java3
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/InheritanceTestCase.java53
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/LiteralBoostTestCase.java13
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/MailTestCase.java6
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/MultipleSummariesTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/SchemaInheritanceTestCase.java10
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/SchemaOrdererTestCase.java3
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/SimpleInheritTestCase.java10
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/SliceTestCase.java27
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/StructInheritanceTestCase.java12
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryMapTestCase.java21
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryTestCase.java42
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/TwoStreamingStructsTestCase.java20
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/TypeConversionTestCase.java3
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/VsmFieldsTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/document/ComplexAttributeFieldUtilsTestCase.java4
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/AddAttributeTransformToSummaryOfImportedFieldsTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/AssertSearchBuilder.java6
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/AttributesExactMatchTestCase.java4
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/BoldingTestCase.java6
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/BoolAttributeValidatorTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/DictionaryTestCase.java8
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/DisallowComplexMapAndWsetKeyTypesTestCase.java8
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/FastAccessValidatorTest.java10
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitSchemaFieldsTestCase.java22
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitStructTypesTestCase.java6
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitSummariesTestCase.java10
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitSummaryFieldsTestCase.java4
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsTestCase.java100
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingScriptRewriterTestCase.java9
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingValidationTestCase.java4
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/IntegerIndex2AttributeTestCase.java4
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/MatchedElementsOnlyResolverTestCase.java26
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/NGramTestCase.java10
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/PagedAttributeValidatorTestCase.java90
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/ParentChildSearchModel.java3
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/PositionTestCase.java14
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/RankModifierTestCase.java4
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/RankProfileSearchFixture.java8
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/RankPropertyVariablesTestCase.java10
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionTypeResolverTestCase.java76
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithOnnxTestCase.java6
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithTransformerTokensTestCase.java8
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionsTestCase.java4
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/ReferenceFieldTestCase.java21
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/ReservedRankingExpressionFunctionNamesTestCase.java6
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/SchemaMustHaveDocumentTest.java4
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/SummaryConsistencyTestCase.java4
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/SummaryFieldsMustHaveValidSourceTestCase.java10
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/TensorFieldTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/TensorTransformTestCase.java6
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/ValidateFieldTypesTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/WeightedSetSummaryToTestCase.java4
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/documentmodel/DocumentModelBuilderImportedFieldsTestCase.java30
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/documentmodel/DocumentModelBuilderReferenceTypeTestCase.java20
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/documentmodel/DocumentModelBuilderTestCase.java22
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/HostResourceTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/admin/ClusterControllerTestCase.java4
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/AwsAccessControlValidatorTest.java23
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/BundleValidatorTest.java67
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/ComplexAttributeFieldsValidatorTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/ConstantTensorJsonValidatorTest.java22
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/RankingConstantsValidatorTest.java4
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/ValidationOverridesValidatorTest.java4
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/first/AccessControlOnFirstDeploymentValidatorTest.java21
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java120
-rwxr-xr-xconfig-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java50
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/configserver/ConfigserverClusterTest.java5
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/configserver/TestOptions.java11
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/ml/ModelsEvaluatorTest.java3
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SourceGroupTest.java5
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/xml/ApplicationBuilderTest.java (renamed from config-model/src/test/java/com/yahoo/vespa/model/container/xml/SchemaBuilderTest.java)2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/xml/JvmOptionsTest.java10
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/ClusterResourceLimitsTest.java46
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java68
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/ContentSchemaClusterTest.java23
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/DistributorTest.java4
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/FleetControllerClusterTest.java26
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/IndexingAndDocprocRoutingTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/StorageClusterTest.java55
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/cluster/DomContentApplicationBuilderTest.java (renamed from config-model/src/test/java/com/yahoo/vespa/model/content/cluster/DomContentSchemaBuilderTest.java)2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/ml/ModelEvaluationTest.java3
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/ml/StatelessOnnxEvaluationTest.java6
-rwxr-xr-xconfig-model/src/test/java/com/yahoo/vespa/model/routing/test/RoutingTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/search/test/SchemaClusterTest.java15
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/search/test/SchemaNodeTest.java8
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/ModelAmendingTestCase.java8
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTestCase.java4
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/utils/ApplicationPackageUtils.java9
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/utils/VespaModelCreatorWithFilePkg.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/utils/VespaModelCreatorWithMockPkg.java2
134 files changed, 1226 insertions, 1021 deletions
diff --git a/config-model/src/test/java/com/yahoo/config/model/ApplicationDeployTest.java b/config-model/src/test/java/com/yahoo/config/model/ApplicationDeployTest.java
index 0ccbec529ed..3acc44113d0 100644
--- a/config-model/src/test/java/com/yahoo/config/model/ApplicationDeployTest.java
+++ b/config-model/src/test/java/com/yahoo/config/model/ApplicationDeployTest.java
@@ -18,7 +18,6 @@ import com.yahoo.searchdefinition.Schema;
import com.yahoo.vespa.config.ConfigDefinition;
import com.yahoo.vespa.config.ConfigDefinitionKey;
import com.yahoo.vespa.model.VespaModel;
-import com.yahoo.vespa.model.search.NamedSchema;
import org.junit.After;
import org.junit.Rule;
import org.junit.Test;
@@ -55,19 +54,18 @@ public class ApplicationDeployTest {
public void testVespaModel() throws SAXException, IOException {
ApplicationPackageTester tester = ApplicationPackageTester.create(TESTDIR + "app1");
new VespaModel(tester.app());
- List<NamedSchema> schemas = tester.getSchemas();
+ List<Schema> schemas = tester.getSchemas();
assertEquals(schemas.size(), 5);
- for (NamedSchema searchDefinition : schemas) {
- Schema s = searchDefinition.getSearch();
- switch (s.getName()) {
+ for (Schema schema : schemas) {
+ switch (schema.getName()) {
case "music":
case "laptop":
case "pc":
case "sock":
break;
case "product":
- assertTrue(s instanceof DocumentOnlySchema);
- assertEquals(DataType.STRING, s.getDocument().getField("title").getDataType());
+ assertTrue(schema instanceof DocumentOnlySchema);
+ assertEquals(DataType.STRING, schema.getDocument().getField("title").getDataType());
break;
default:
fail();
@@ -95,8 +93,8 @@ public class ApplicationDeployTest {
// Check that getFilename works
ArrayList<String> sdFileNames = new ArrayList<>();
- for (NamedSchema sd : schemas)
- sdFileNames.add(sd.getFilename());
+ for (Schema schema : schemas)
+ sdFileNames.add(schema.getName() + ApplicationPackage.SD_NAME_SUFFIX);
Collections.sort(sdFileNames);
assertEquals("laptop.sd", sdFileNames.get(0));
assertEquals("music.sd", sdFileNames.get(1));
diff --git a/config-model/src/test/java/com/yahoo/config/model/ApplicationPackageTester.java b/config-model/src/test/java/com/yahoo/config/model/ApplicationPackageTester.java
index 3d799375420..96186150108 100644
--- a/config-model/src/test/java/com/yahoo/config/model/ApplicationPackageTester.java
+++ b/config-model/src/test/java/com/yahoo/config/model/ApplicationPackageTester.java
@@ -5,7 +5,7 @@ import com.yahoo.component.Version;
import com.yahoo.config.model.application.provider.ApplicationPackageXmlFilesValidator;
import com.yahoo.config.model.application.provider.FilesApplicationPackage;
import com.yahoo.config.model.deploy.DeployState;
-import com.yahoo.vespa.model.search.NamedSchema;
+import com.yahoo.searchdefinition.Schema;
import java.io.File;
import java.io.IOException;
@@ -39,7 +39,7 @@ public class ApplicationPackageTester {
public FilesApplicationPackage app() { return applicationPackage; }
- public List<NamedSchema> getSchemas() {
+ public List<Schema> getSchemas() {
return new DeployState.Builder().applicationPackage(app()).build().getSchemas();
}
diff --git a/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java b/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java
index 10f883bdc75..ba70b7493a2 100644
--- a/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java
+++ b/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java
@@ -2054,7 +2054,7 @@ public class ModelProvisioningTest {
assertTrue("Initial servers are not joining", config.build().server().stream().noneMatch(ZookeeperServerConfig.Server::joining));
}
{
- VespaModel nextModel = tester.createModel(Zone.defaultZone(), servicesXml.apply(5), true, false, false, 0, Optional.of(model), new DeployState.Builder());
+ VespaModel nextModel = tester.createModel(Zone.defaultZone(), servicesXml.apply(3), true, false, false, 0, Optional.of(model), new DeployState.Builder(), "node-1-3-10-04", "node-1-3-10-03");
ApplicationContainerCluster cluster = nextModel.getContainerClusters().get("zk");
ZookeeperServerConfig.Builder config = new ZookeeperServerConfig.Builder();
cluster.getContainers().forEach(c -> c.getConfig(config));
@@ -2067,6 +2067,14 @@ public class ModelProvisioningTest {
4, true),
config.build().server().stream().collect(Collectors.toMap(ZookeeperServerConfig.Server::id,
ZookeeperServerConfig.Server::joining)));
+ assertEquals("Retired nodes are retired",
+ Map.of(0, false,
+ 1, true,
+ 2, true,
+ 3, false,
+ 4, false),
+ config.build().server().stream().collect(Collectors.toMap(ZookeeperServerConfig.Server::id,
+ ZookeeperServerConfig.Server::retired)));
}
}
diff --git a/config-model/src/test/java/com/yahoo/document/test/SDDocumentTypeTestCase.java b/config-model/src/test/java/com/yahoo/document/test/SDDocumentTypeTestCase.java
index f1bebdb0a29..d4ebbe62507 100644
--- a/config-model/src/test/java/com/yahoo/document/test/SDDocumentTypeTestCase.java
+++ b/config-model/src/test/java/com/yahoo/document/test/SDDocumentTypeTestCase.java
@@ -5,12 +5,10 @@ import com.yahoo.document.DataType;
import com.yahoo.document.DataTypeName;
import com.yahoo.documentmodel.VespaDocumentType;
import com.yahoo.searchdefinition.AbstractSchemaTestCase;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.document.SDDocumentType;
import com.yahoo.searchdefinition.document.SDField;
import com.yahoo.searchdefinition.parser.ParseException;
-import com.yahoo.searchdefinition.processing.ImportedFieldsResolver;
-import com.yahoo.searchdefinition.processing.OnnxModelTypeResolver;
import com.yahoo.vespa.model.test.utils.DeployLoggerStub;
import org.junit.Test;
@@ -122,8 +120,8 @@ public class SDDocumentTypeTestCase extends AbstractSchemaTestCase {
" }" +
"}");
- SchemaBuilder builder = new SchemaBuilder(new DeployLoggerStub());
- builder.importString(schemaLines);
+ ApplicationBuilder builder = new ApplicationBuilder(new DeployLoggerStub());
+ builder.addSchema(schemaLines);
builder.build(true);
var application = builder.application();
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/ArraysTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/ArraysTestCase.java
index aaf75f0c852..2ed1ab6892a 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/ArraysTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/ArraysTestCase.java
@@ -22,7 +22,7 @@ public class ArraysTestCase extends AbstractSchemaTestCase {
@Test
public void testArrayImporting() throws IOException, ParseException {
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/arrays.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/arrays.sd");
SDField tags = (SDField) schema.getDocument().getField("tags");
assertEquals(DataType.STRING, ((CollectionDataType)tags.getDataType()).getNestedType());
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/ArraysWeightedSetsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/ArraysWeightedSetsTestCase.java
index 1dd2c987d90..9c70fcf79f7 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/ArraysWeightedSetsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/ArraysWeightedSetsTestCase.java
@@ -19,7 +19,7 @@ import static org.junit.Assert.assertTrue;
public class ArraysWeightedSetsTestCase extends AbstractSchemaTestCase {
@Test
public void testArrayWeightedSetsImporting() throws java.io.IOException, com.yahoo.searchdefinition.parser.ParseException {
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/arraysweightedsets.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/arraysweightedsets.sd");
SDField tags = (SDField) schema.getDocument().getField("tags");
assertTrue(tags.getDataType() instanceof ArrayDataType);
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/AttributeSettingsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/AttributeSettingsTestCase.java
index e4de0aef622..7b2ed2d7a7f 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/AttributeSettingsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/AttributeSettingsTestCase.java
@@ -30,7 +30,7 @@ public class AttributeSettingsTestCase extends AbstractSchemaTestCase {
@Test
public void testAttributeSettings() throws IOException, ParseException {
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/attributesettings.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/attributesettings.sd");
SDField f1=(SDField) schema.getDocument().getField("f1");
assertEquals(1, f1.getAttributes().size());
@@ -91,22 +91,22 @@ public class AttributeSettingsTestCase extends AbstractSchemaTestCase {
@Test
public void requireThatFastAccessCanBeSet() throws IOException, ParseException {
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/attributesettings.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/attributesettings.sd");
SDField field = (SDField) schema.getDocument().getField("fast_access");
assertEquals(1, field.getAttributes().size());
Attribute attr = field.getAttributes().get(field.getName());
assertTrue(attr.isFastAccess());
}
- private Schema getSearch(String sd) throws ParseException {
- SchemaBuilder builder = new SchemaBuilder();
- builder.importString(sd);
- builder.build();
+ private Schema getSchema(String sd) throws ParseException {
+ ApplicationBuilder builder = new ApplicationBuilder();
+ builder.addSchema(sd);
+ builder.build(true);
return builder.getSchema();
}
private Attribute getAttributeF(String sd) throws ParseException {
- Schema schema = getSearch(sd);
+ Schema schema = getSchema(sd);
SDField field = (SDField) schema.getDocument().getField("f");
return field.getAttributes().get(field.getName());
}
@@ -153,14 +153,14 @@ public class AttributeSettingsTestCase extends AbstractSchemaTestCase {
@Test
public void requireThatMutableCanNotbeSetInDocument() throws ParseException {
try {
- getSearch("search test {\n" +
- " document test {\n" +
- " field f type int {\n" +
- " indexing: attribute\n" +
- " attribute: mutable\n" +
- " }\n" +
- " }\n" +
- "}\n");
+ getSchema("search test {\n" +
+ " document test {\n" +
+ " field f type int {\n" +
+ " indexing: attribute\n" +
+ " attribute: mutable\n" +
+ " }\n" +
+ " }\n" +
+ "}\n");
fail();
} catch (IllegalArgumentException e) {
assertEquals("Field 'f' in 'test' can not be marked mutable as it is inside the document clause.", e.getMessage());
@@ -185,7 +185,7 @@ public class AttributeSettingsTestCase extends AbstractSchemaTestCase {
}
private Schema getSearchWithMutables() throws ParseException {
- return getSearch(
+ return getSchema(
"search test {\n" +
" document test { \n" +
" field a type int { \n" +
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/CommentTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/CommentTestCase.java
index 8b7f0885907..3e92c1df9e7 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/CommentTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/CommentTestCase.java
@@ -18,7 +18,7 @@ public class CommentTestCase extends AbstractSchemaTestCase {
@Test
public void testComments() throws IOException, ParseException {
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/comment.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/comment.sd");
SDField field = schema.getConcreteField("a");
assertEquals("{ input a | tokenize normalize stem:\"BEST\" | summary a | index a; }",
field.getIndexingScript().toString());
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/DiversityTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/DiversityTestCase.java
index 7c5c5c6fccc..ca7313a5c3f 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/DiversityTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/DiversityTestCase.java
@@ -15,8 +15,8 @@ public class DiversityTestCase {
@Test
public void testDiversity() throws ParseException {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(rankProfileRegistry);
- builder.importString(
+ ApplicationBuilder builder = new ApplicationBuilder(rankProfileRegistry);
+ builder.addSchema(
"search test {\n" +
" document test { \n" +
" field a type int { \n" +
@@ -42,7 +42,7 @@ public class DiversityTestCase {
" }\n" +
" }\n" +
"}\n");
- builder.build();
+ builder.build(true);
Schema s = builder.getSchema();
RankProfile.MatchPhaseSettings matchPhase = rankProfileRegistry.get(s, "parent").getMatchPhaseSettings();
RankProfile.DiversitySettings diversity = matchPhase.getDiversity();
@@ -60,10 +60,10 @@ public class DiversityTestCase {
}
@Test
public void requireSingleNumericOrString() throws ParseException {
- SchemaBuilder builder = getSearchBuilder("field b type predicate { indexing: attribute }");
+ ApplicationBuilder builder = getSearchBuilder("field b type predicate { indexing: attribute }");
try {
- builder.build();
+ builder.build(true);
fail("Should throw.");
} catch (IllegalArgumentException e) {
assertEquals(getMessagePrefix() + "must be single value numeric, or enumerated attribute, but it is 'predicate'", e.getMessage());
@@ -72,19 +72,19 @@ public class DiversityTestCase {
@Test
public void requireSingle() throws ParseException {
- SchemaBuilder builder = getSearchBuilder("field b type array<int> { indexing: attribute }");
+ ApplicationBuilder builder = getSearchBuilder("field b type array<int> { indexing: attribute }");
try {
- builder.build();
+ builder.build(true);
fail("Should throw.");
} catch (IllegalArgumentException e) {
assertEquals(getMessagePrefix() + "must be single value numeric, or enumerated attribute, but it is 'Array<int>'", e.getMessage());
}
}
- private SchemaBuilder getSearchBuilder(String diversity) throws ParseException {
+ private ApplicationBuilder getSearchBuilder(String diversity) throws ParseException {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(rankProfileRegistry);
- builder.importString(
+ ApplicationBuilder builder = new ApplicationBuilder(rankProfileRegistry);
+ builder.addSchema(
"search test {\n" +
" document test { \n" +
" field a type int { \n" +
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/DocumentGraphValidatorTest.java b/config-model/src/test/java/com/yahoo/searchdefinition/DocumentGraphValidatorTest.java
index fb552f5cfb0..81a44261daf 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/DocumentGraphValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/DocumentGraphValidatorTest.java
@@ -1,6 +1,7 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
+import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.document.ReferenceDataType;
import com.yahoo.document.TemporaryStructuredDataType;
import com.yahoo.searchdefinition.document.SDDocumentType;
@@ -143,7 +144,7 @@ public class DocumentGraphValidatorTest {
}
private static Schema createSearchWithName(String name, Schema... parents) {
- Schema campaignSchema = new Schema(name);
+ Schema campaignSchema = new Schema(name, MockApplicationPackage.createEmpty());
SDDocumentType document = new SDDocumentType(name);
campaignSchema.addDocument(document);
document.setDocumentReferences(new DocumentReferences(Collections.emptyMap()));
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/DocumentReferenceResolverTest.java b/config-model/src/test/java/com/yahoo/searchdefinition/DocumentReferenceResolverTest.java
index cc45a2aaec0..66f1850bd10 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/DocumentReferenceResolverTest.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/DocumentReferenceResolverTest.java
@@ -1,6 +1,7 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
+import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.document.DataType;
import com.yahoo.document.ReferenceDataType;
import com.yahoo.document.TemporaryStructuredDataType;
@@ -32,7 +33,7 @@ public class DocumentReferenceResolverTest {
@Test
public void reference_from_one_document_to_another_is_resolved() {
// Create bar document with no fields
- Schema barSchema = new Schema(BAR);
+ Schema barSchema = new Schema(BAR, MockApplicationPackage.createEmpty());
SDDocumentType barDocument = new SDDocumentType(BAR, barSchema);
barSchema.addDocument(barDocument);
@@ -41,7 +42,7 @@ public class DocumentReferenceResolverTest {
("bar_ref", ReferenceDataType.createWithInferredId(barDocument.getDocumentType()));
AttributeUtils.addAttributeAspect(fooRefToBarField);
SDField irrelevantField = new SDField("irrelevant_stuff", DataType.INT);
- Schema fooSchema = new Schema(FOO);
+ Schema fooSchema = new Schema(FOO, MockApplicationPackage.createEmpty());
SDDocumentType fooDocument = new SDDocumentType("foo", fooSchema);
fooDocument.addField(fooRefToBarField);
fooDocument.addField(irrelevantField);
@@ -64,7 +65,7 @@ public class DocumentReferenceResolverTest {
SDField fooRefToBarField = new SDField(
"bar_ref", ReferenceDataType.createWithInferredId(TemporaryStructuredDataType.create("bar")));
AttributeUtils.addAttributeAspect(fooRefToBarField);
- Schema fooSchema = new Schema(FOO);
+ Schema fooSchema = new Schema(FOO, MockApplicationPackage.createEmpty());
SDDocumentType fooDocument = new SDDocumentType("foo", fooSchema);
fooDocument.addField(fooRefToBarField);
fooSchema.addDocument(fooDocument);
@@ -80,14 +81,14 @@ public class DocumentReferenceResolverTest {
@Test
public void throws_exception_if_reference_is_not_an_attribute() {
// Create bar document with no fields
- Schema barSchema = new Schema(BAR);
+ Schema barSchema = new Schema(BAR, MockApplicationPackage.createEmpty());
SDDocumentType barDocument = new SDDocumentType("bar", barSchema);
barSchema.addDocument(barDocument);
// Create foo document with document reference to bar
SDField fooRefToBarField = new SDField
("bar_ref", ReferenceDataType.createWithInferredId(barDocument.getDocumentType()));
- Schema fooSchema = new Schema(FOO);
+ Schema fooSchema = new Schema(FOO, MockApplicationPackage.createEmpty());
SDDocumentType fooDocument = new SDDocumentType("foo", fooSchema);
fooDocument.addField(fooRefToBarField);
fooSchema.addDocument(fooDocument);
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/ImportedFieldsEnumeratorTest.java b/config-model/src/test/java/com/yahoo/searchdefinition/ImportedFieldsEnumeratorTest.java
index 4057fc469bc..7d2386030da 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/ImportedFieldsEnumeratorTest.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/ImportedFieldsEnumeratorTest.java
@@ -1,6 +1,7 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
+import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.document.DataType;
import com.yahoo.document.ReferenceDataType;
import com.yahoo.searchdefinition.document.SDDocumentType;
@@ -19,7 +20,7 @@ public class ImportedFieldsEnumeratorTest {
@Test
public void imported_fields_are_enumerated_and_copied_from_correct_search_instance() {
String PARENT = "parent";
- Schema parentSchema = new Schema(PARENT);
+ Schema parentSchema = new Schema(PARENT, MockApplicationPackage.createEmpty());
SDDocumentType parentDocument = new SDDocumentType(PARENT, parentSchema);
var parentField = new SDField("their_field", DataType.INT);
AttributeUtils.addAttributeAspect(parentField);
@@ -27,7 +28,7 @@ public class ImportedFieldsEnumeratorTest {
parentSchema.addDocument(parentDocument);
String FOO = "foo";
- Schema fooSchema = new Schema(FOO);
+ Schema fooSchema = new Schema(FOO, MockApplicationPackage.createEmpty());
SDField fooRefToParent = new SDField(
"foo_ref", ReferenceDataType.createWithInferredId(parentDocument.getDocumentType()));
AttributeUtils.addAttributeAspect(fooRefToParent);
@@ -38,7 +39,7 @@ public class ImportedFieldsEnumeratorTest {
fooSchema.addDocument(fooDocument);
String BAR = "bar";
- Schema barSchema = new Schema(BAR);
+ Schema barSchema = new Schema(BAR, MockApplicationPackage.createEmpty());
SDField barRefToParent = new SDField(
"bar_ref", ReferenceDataType.createWithInferredId(parentDocument.getDocumentType()));
AttributeUtils.addAttributeAspect(barRefToParent);
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/IncorrectRankingExpressionFileRefTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/IncorrectRankingExpressionFileRefTestCase.java
index 621e7061203..23be59e38f5 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/IncorrectRankingExpressionFileRefTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/IncorrectRankingExpressionFileRefTestCase.java
@@ -21,9 +21,9 @@ public class IncorrectRankingExpressionFileRefTestCase extends AbstractSchemaTes
public void testIncorrectRef() throws IOException, ParseException {
try {
RankProfileRegistry registry = new RankProfileRegistry();
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/incorrectrankingexpressionfileref.sd",
- registry,
- new QueryProfileRegistry());
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/incorrectrankingexpressionfileref.sd",
+ registry,
+ new QueryProfileRegistry());
new DerivedConfiguration(schema, registry); // cause rank profile parsing
fail("parsing should have failed");
} catch (IllegalArgumentException e) {
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/IncorrectSummaryTypesTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/IncorrectSummaryTypesTestCase.java
index 55593ef64e4..d81d07bf6e2 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/IncorrectSummaryTypesTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/IncorrectSummaryTypesTestCase.java
@@ -15,7 +15,7 @@ public class IncorrectSummaryTypesTestCase extends AbstractSchemaTestCase {
@Test
public void testImportingIncorrect() throws ParseException {
try {
- SchemaBuilder.createFromString(
+ ApplicationBuilder.createFromString(
"search incorrectsummarytypes {\n" +
" document incorrectsummarytypes {\n" +
" field somestring type string {\n" +
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/IndexSettingsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/IndexSettingsTestCase.java
index f2e50439306..198f8b6c79e 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/IndexSettingsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/IndexSettingsTestCase.java
@@ -21,7 +21,7 @@ public class IndexSettingsTestCase extends AbstractSchemaTestCase {
@Test
public void testStemmingSettings() throws IOException, ParseException {
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/indexsettings.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/indexsettings.sd");
SDField usingDefault=(SDField) schema.getDocument().getField("usingdefault");
assertEquals(Stemming.SHORTEST,usingDefault.getStemming(schema));
@@ -38,7 +38,7 @@ public class IndexSettingsTestCase extends AbstractSchemaTestCase {
@Test
public void requireThatInterlavedFeaturesAreSetOnExtraField() throws ParseException {
- SchemaBuilder builder = SchemaBuilder.createFromString(joinLines(
+ ApplicationBuilder builder = ApplicationBuilder.createFromString(joinLines(
"search test {",
" document test {",
" field content type string {",
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/IndexingParsingTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/IndexingParsingTestCase.java
index 60728ab7d99..8ba7dfdb14f 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/IndexingParsingTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/IndexingParsingTestCase.java
@@ -15,13 +15,13 @@ public class IndexingParsingTestCase extends AbstractSchemaTestCase {
@Test
public void requireThatIndexingExpressionsCanBeParsed() throws Exception {
- assertNotNull(SchemaBuilder.buildFromFile("src/test/examples/indexing.sd"));
+ assertNotNull(ApplicationBuilder.buildFromFile("src/test/examples/indexing.sd"));
}
@Test
public void requireThatParseExceptionPositionIsCorrect() throws Exception {
try {
- SchemaBuilder.buildFromFile("src/test/examples/indexing_invalid_expression.sd");
+ ApplicationBuilder.buildFromFile("src/test/examples/indexing_invalid_expression.sd");
} catch (ParseException e) {
if (!e.getMessage().contains("at line 5, column 57.")) {
throw e;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/MultipleSummariesTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/MultipleSummariesTestCase.java
index 41321b5c81e..0fcc6e09b02 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/MultipleSummariesTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/MultipleSummariesTestCase.java
@@ -14,6 +14,6 @@ import java.io.IOException;
public class MultipleSummariesTestCase extends AbstractSchemaTestCase {
@Test
public void testArrayImporting() throws IOException, ParseException {
- SchemaBuilder.buildFromFile("src/test/examples/multiplesummaries.sd");
+ ApplicationBuilder.buildFromFile("src/test/examples/multiplesummaries.sd");
}
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/NameFieldCheckTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/NameFieldCheckTestCase.java
index fc94bbe8731..1e766b7793d 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/NameFieldCheckTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/NameFieldCheckTestCase.java
@@ -19,7 +19,7 @@ public class NameFieldCheckTestCase extends AbstractSchemaTestCase {
@Test
public void testNameField() {
try {
- SchemaBuilder.createFromString(
+ ApplicationBuilder.createFromString(
"search simple {\n" +
" document name-check {\n" +
" field title type string {\n" +
@@ -40,7 +40,7 @@ public class NameFieldCheckTestCase extends AbstractSchemaTestCase {
@Test
public void testDuplicateNamesInSearchDifferentType() {
try {
- SchemaBuilder.createFromString(
+ ApplicationBuilder.createFromString(
"search duplicatenamesinsearch {\n" +
" document {\n" +
" field grpphotoids64 type string { }\n" +
@@ -60,7 +60,7 @@ public class NameFieldCheckTestCase extends AbstractSchemaTestCase {
@Test
public void testDuplicateNamesInDoc() {
try {
- SchemaBuilder.createFromString(
+ ApplicationBuilder.createFromString(
"search duplicatenamesindoc {\n" +
" document {\n" +
" field foo type int {\n" +
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/OutsideTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/OutsideTestCase.java
index 5663473481b..6563fb8d3f1 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/OutsideTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/OutsideTestCase.java
@@ -17,7 +17,7 @@ public class OutsideTestCase extends AbstractSchemaTestCase {
@Test
public void testOutsideIndex() throws IOException, ParseException {
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/outsidedoc.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/outsidedoc.sd");
Index defaultIndex= schema.getIndex("default");
assertTrue(defaultIndex.isPrefix());
@@ -26,7 +26,7 @@ public class OutsideTestCase extends AbstractSchemaTestCase {
@Test
public void testOutsideSummary() throws IOException, ParseException {
- SchemaBuilder.buildFromFile("src/test/examples/outsidesummary.sd");
+ ApplicationBuilder.buildFromFile("src/test/examples/outsidesummary.sd");
}
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/PredicateDataTypeTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/PredicateDataTypeTestCase.java
index 456a236f293..2b49f3d67a6 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/PredicateDataTypeTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/PredicateDataTypeTestCase.java
@@ -68,7 +68,7 @@ public class PredicateDataTypeTestCase {
lowerBoundParameter(lowerBound) +
upperBoundParameter(upperBound))));
- SchemaBuilder sb = SchemaBuilder.createFromString(sd);
+ ApplicationBuilder sb = ApplicationBuilder.createFromString(sd);
for (ImmutableSDField field : sb.getSchema().allConcreteFields()) {
if (field.getDataType() == DataType.PREDICATE) {
for (Index index : field.getIndices().values()) {
@@ -95,7 +95,7 @@ public class PredicateDataTypeTestCase {
"lower-bound: -100000000000000000L\n" + // +'L'
upperBoundParameter(upperBound))));
- SchemaBuilder sb = SchemaBuilder.createFromString(sd);
+ ApplicationBuilder sb = ApplicationBuilder.createFromString(sd);
for (ImmutableSDField field : sb.getSchema().allConcreteFields()) {
if (field.getDataType() == DataType.PREDICATE) {
for (Index index : field.getIndices().values()) {
@@ -113,7 +113,7 @@ public class PredicateDataTypeTestCase {
predicateFieldSd(
attributeFieldSd(
arityParameter(2))));
- SchemaBuilder sb = SchemaBuilder.createFromString(sd);
+ ApplicationBuilder sb = ApplicationBuilder.createFromString(sd);
for (ImmutableSDField field : sb.getSchema().allConcreteFields()) {
if (field.getDataType() == DataType.PREDICATE) {
for (Index index : field.getIndices().values()) {
@@ -131,7 +131,7 @@ public class PredicateDataTypeTestCase {
exception.expect(IllegalArgumentException.class);
exception.expectMessage("Missing arity value in predicate field.");
- SchemaBuilder.createFromString(sd);
+ ApplicationBuilder.createFromString(sd);
fail();
}
@@ -141,7 +141,7 @@ public class PredicateDataTypeTestCase {
exception.expect(IllegalArgumentException.class);
exception.expectMessage("For schema 'p', field 'pf': Use 'attribute' instead of 'index'. This will require a refeed if you have upgraded.");
- SchemaBuilder.createFromString(sd);
+ ApplicationBuilder.createFromString(sd);
}
@Test
@@ -150,7 +150,7 @@ public class PredicateDataTypeTestCase {
exception.expect(IllegalArgumentException.class);
exception.expectMessage("For schema 'p', field 'pf': Use 'attribute' instead of 'index'. This will require a refeed if you have upgraded.");
- SchemaBuilder.createFromString(sd);
+ ApplicationBuilder.createFromString(sd);
}
@@ -160,7 +160,7 @@ public class PredicateDataTypeTestCase {
exception.expect(IllegalArgumentException.class);
exception.expectMessage("Invalid arity value in predicate field, must be greater than 1.");
- SchemaBuilder.createFromString(sd);
+ ApplicationBuilder.createFromString(sd);
}
@Test
@@ -169,7 +169,7 @@ public class PredicateDataTypeTestCase {
exception.expect(IllegalArgumentException.class);
exception.expectMessage("Arity parameter is used only for predicate type fields.");
- SchemaBuilder.createFromString(sd);
+ ApplicationBuilder.createFromString(sd);
}
@Test
@@ -181,7 +181,7 @@ public class PredicateDataTypeTestCase {
exception.expect(IllegalArgumentException.class);
exception.expectMessage("Parameters lower-bound and upper-bound are used only for predicate type fields.");
- SchemaBuilder.createFromString(sd);
+ ApplicationBuilder.createFromString(sd);
}
@Test
@@ -193,7 +193,7 @@ public class PredicateDataTypeTestCase {
exception.expect(IllegalArgumentException.class);
exception.expectMessage("Collections of predicates are not allowed.");
- SchemaBuilder.createFromString(sd);
+ ApplicationBuilder.createFromString(sd);
}
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/RankProfileRegistryTest.java b/config-model/src/test/java/com/yahoo/searchdefinition/RankProfileRegistryTest.java
index d2486395340..d07f4513c3c 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/RankProfileRegistryTest.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/RankProfileRegistryTest.java
@@ -2,6 +2,7 @@
package com.yahoo.searchdefinition;
import com.yahoo.config.model.application.provider.FilesApplicationPackage;
+import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.config.model.test.TestDriver;
import com.yahoo.config.model.test.TestRoot;
import com.yahoo.searchlib.rankingexpression.ExpressionFunction;
@@ -33,7 +34,7 @@ public class RankProfileRegistryTest {
@Test(expected = IllegalArgumentException.class)
public void testRankProfileDuplicateNameIsIllegal() {
- Schema schema = new Schema("foo");
+ Schema schema = new Schema("foo", MockApplicationPackage.createEmpty());
RankProfileRegistry rankProfileRegistry = RankProfileRegistry.createRankProfileRegistryWithBuiltinRankProfiles(schema);
RankProfile barRankProfile = new RankProfile("bar", schema, rankProfileRegistry, schema.rankingConstants());
rankProfileRegistry.add(barRankProfile);
@@ -42,7 +43,7 @@ public class RankProfileRegistryTest {
@Test
public void testRankProfileDuplicateNameLegalForOverridableRankProfiles() {
- Schema schema = new Schema("foo");
+ Schema schema = new Schema("foo", MockApplicationPackage.createEmpty());
RankProfileRegistry rankProfileRegistry = RankProfileRegistry.createRankProfileRegistryWithBuiltinRankProfiles(schema);
for (String rankProfileName : RankProfileRegistry.overridableRankProfileNames) {
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/RankProfileTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/RankProfileTestCase.java
index 3fa129eae39..d77c6d822e3 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/RankProfileTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/RankProfileTestCase.java
@@ -6,6 +6,7 @@ import com.yahoo.component.ComponentId;
import com.yahoo.config.model.api.ModelContext;
import com.yahoo.config.model.application.provider.MockFileRegistry;
import com.yahoo.config.model.deploy.TestProperties;
+import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.document.DataType;
import com.yahoo.search.query.profile.QueryProfileRegistry;
import com.yahoo.search.query.profile.types.FieldDescription;
@@ -43,7 +44,7 @@ public class RankProfileTestCase extends AbstractSchemaTestCase {
@Test
public void testRankProfileInheritance() {
- Schema schema = new Schema("test");
+ Schema schema = new Schema("test", MockApplicationPackage.createEmpty());
RankProfileRegistry rankProfileRegistry = RankProfileRegistry.createRankProfileRegistryWithBuiltinRankProfiles(schema);
SDDocumentType document = new SDDocumentType("test");
SDField a = document.addField("a", DataType.STRING);
@@ -51,7 +52,7 @@ public class RankProfileTestCase extends AbstractSchemaTestCase {
document.addField("b", DataType.STRING);
schema.addDocument(document);
RankProfile child = new RankProfile("child", schema, rankProfileRegistry, schema.rankingConstants());
- child.setInherited("default");
+ child.inherit("default");
rankProfileRegistry.add(child);
Iterator<RankProfile.RankSetting> i = child.rankSettingIterator();
@@ -69,8 +70,8 @@ public class RankProfileTestCase extends AbstractSchemaTestCase {
public void requireThatIllegalInheritanceIsChecked() throws ParseException {
try {
RankProfileRegistry registry = new RankProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(registry, setupQueryProfileTypes());
- builder.importString(joinLines(
+ ApplicationBuilder builder = new ApplicationBuilder(registry, setupQueryProfileTypes());
+ builder.addSchema(joinLines(
"search test {",
" document test { } ",
" rank-profile p1 inherits notexist {}",
@@ -78,7 +79,7 @@ public class RankProfileTestCase extends AbstractSchemaTestCase {
builder.build(true);
fail();
} catch (IllegalArgumentException e) {
- assertEquals("rank-profile 'p1' inherits 'notexist', but it does not exist anywhere in the inheritance of search 'test'.", e.getMessage());
+ assertEquals("rank-profile 'p1' inherits 'notexist', but this is not found in schema 'test'", e.getMessage());
}
}
@@ -86,8 +87,8 @@ public class RankProfileTestCase extends AbstractSchemaTestCase {
public void requireThatSelfInheritanceIsIllegal() throws ParseException {
try {
RankProfileRegistry registry = new RankProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(registry, setupQueryProfileTypes());
- builder.importString(joinLines(
+ ApplicationBuilder builder = new ApplicationBuilder(registry, setupQueryProfileTypes());
+ builder.addSchema(joinLines(
"schema test {",
" document test { } ",
" rank-profile self inherits self {}",
@@ -102,13 +103,13 @@ public class RankProfileTestCase extends AbstractSchemaTestCase {
@Test
public void requireThatSelfInheritanceIsLegalWhenOverloading() throws ParseException {
RankProfileRegistry registry = new RankProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(registry, setupQueryProfileTypes());
- builder.importString(joinLines(
+ ApplicationBuilder builder = new ApplicationBuilder(registry, setupQueryProfileTypes());
+ builder.addSchema(joinLines(
"schema base {",
" document base { } ",
" rank-profile self inherits default {}",
"}"));
- builder.importString(joinLines(
+ builder.addSchema(joinLines(
"schema test {",
" document test inherits base { } ",
" rank-profile self inherits self {}",
@@ -119,8 +120,8 @@ public class RankProfileTestCase extends AbstractSchemaTestCase {
@Test
public void requireThatSidewaysInheritanceIsImpossible() throws ParseException {
RankProfileRegistry registry = new RankProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(registry, setupQueryProfileTypes());
- builder.importString(joinLines(
+ ApplicationBuilder builder = new ApplicationBuilder(registry, setupQueryProfileTypes());
+ builder.addSchema(joinLines(
"schema child1 {",
" document child1 {",
" field field1 type int {",
@@ -141,7 +142,7 @@ public class RankProfileTestCase extends AbstractSchemaTestCase {
" }",
" }",
"}\n"));
- builder.importString(joinLines(
+ builder.addSchema(joinLines(
"schema child2 {",
" document child2 {",
" field field1 type int {",
@@ -165,15 +166,15 @@ public class RankProfileTestCase extends AbstractSchemaTestCase {
builder.build(true);
fail("Sideways inheritance should have been enforced");
} catch (IllegalArgumentException e) {
- assertEquals("rank-profile 'child' inherits 'parent', but it does not exist anywhere in the inheritance of search 'child1'.", e.getMessage());
+ assertEquals("rank-profile 'child' inherits 'parent', but this is not found in schema 'child1'", e.getMessage());
}
}
@Test
- public void requireThatDefaultCanAlwaysBeInherited() throws ParseException {
+ public void requireThatDefaultInheritingDefaultIsIgnored() throws ParseException {
RankProfileRegistry registry = new RankProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(registry, setupQueryProfileTypes());
- builder.importString(joinLines(
+ ApplicationBuilder builder = new ApplicationBuilder(registry, setupQueryProfileTypes());
+ builder.addSchema(joinLines(
"schema test {",
" document test { } ",
" rank-profile default inherits default {}",
@@ -185,8 +186,8 @@ public class RankProfileTestCase extends AbstractSchemaTestCase {
public void requireThatCyclicInheritanceIsIllegal() throws ParseException {
try {
RankProfileRegistry registry = new RankProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(registry, setupQueryProfileTypes());
- builder.importString(joinLines(
+ ApplicationBuilder builder = new ApplicationBuilder(registry, setupQueryProfileTypes());
+ builder.addSchema(joinLines(
"search test {",
" document test { } ",
" rank-profile a inherits b {}",
@@ -204,8 +205,8 @@ public class RankProfileTestCase extends AbstractSchemaTestCase {
public void requireThatRankProfilesCanInheritNotYetSeenProfiles() throws ParseException
{
RankProfileRegistry registry = new RankProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(registry, setupQueryProfileTypes());
- builder.importString(joinLines(
+ ApplicationBuilder builder = new ApplicationBuilder(registry, setupQueryProfileTypes());
+ builder.addSchema(joinLines(
"search test {",
" document test { } ",
" rank-profile p1 inherits not_yet_defined {}",
@@ -246,9 +247,9 @@ public class RankProfileTestCase extends AbstractSchemaTestCase {
private void verifyTermwiseLimitAndSomeMoreIncludingInheritance(ModelContext.Properties deployProperties, String sd, Double termwiseLimit) throws ParseException {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(rankProfileRegistry);
- builder.importString(sd);
- builder.build();
+ ApplicationBuilder builder = new ApplicationBuilder(rankProfileRegistry);
+ builder.addSchema(sd);
+ builder.build(true);
Schema schema = builder.getSchema();
AttributeFields attributeFields = new AttributeFields(schema);
verifyRankProfile(rankProfileRegistry.get(schema, "parent"), attributeFields, deployProperties, termwiseLimit);
@@ -279,8 +280,8 @@ public class RankProfileTestCase extends AbstractSchemaTestCase {
@Test
public void requireThatConfigIsDerivedForAttributeTypeSettings() throws ParseException {
RankProfileRegistry registry = new RankProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(registry);
- builder.importString(joinLines(
+ ApplicationBuilder builder = new ApplicationBuilder(registry);
+ builder.addSchema(joinLines(
"search test {",
" document test { ",
" field a type tensor(x[10]) { indexing: attribute }",
@@ -290,7 +291,7 @@ public class RankProfileTestCase extends AbstractSchemaTestCase {
" rank-profile p1 {}",
" rank-profile p2 {}",
"}"));
- builder.build();
+ builder.build(true);
Schema schema = builder.getSchema();
assertEquals(4, registry.all().size());
@@ -303,14 +304,14 @@ public class RankProfileTestCase extends AbstractSchemaTestCase {
@Test
public void requireThatDenseDimensionsMustBeBound() throws ParseException {
try {
- SchemaBuilder builder = new SchemaBuilder(new RankProfileRegistry());
- builder.importString(joinLines(
+ ApplicationBuilder builder = new ApplicationBuilder(new RankProfileRegistry());
+ builder.addSchema(joinLines(
"search test {",
" document test { ",
" field a type tensor(x[]) { indexing: attribute }",
" }",
"}"));
- builder.build();
+ builder.build(true);
}
catch (IllegalArgumentException e) {
assertEquals("Illegal type in field a type tensor(x[]): Dense tensor dimensions must have a size",
@@ -332,8 +333,8 @@ public class RankProfileTestCase extends AbstractSchemaTestCase {
@Test
public void requireThatConfigIsDerivedForQueryFeatureTypeSettings() throws ParseException {
RankProfileRegistry registry = new RankProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(registry, setupQueryProfileTypes());
- builder.importString(joinLines(
+ ApplicationBuilder builder = new ApplicationBuilder(registry, setupQueryProfileTypes());
+ builder.addSchema(joinLines(
"search test {",
" document test { } ",
" rank-profile p1 {}",
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/RankPropertiesTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/RankPropertiesTestCase.java
index d6065e74af5..6de890549c1 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/RankPropertiesTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/RankPropertiesTestCase.java
@@ -23,8 +23,8 @@ public class RankPropertiesTestCase extends AbstractSchemaTestCase {
@Test
public void testRankPropertyInheritance() throws ParseException {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(rankProfileRegistry);
- builder.importString(joinLines(
+ ApplicationBuilder builder = new ApplicationBuilder(rankProfileRegistry);
+ builder.addSchema(joinLines(
"search test {",
" document test {",
" field a type string { ",
@@ -48,7 +48,7 @@ public class RankPropertiesTestCase extends AbstractSchemaTestCase {
" }",
" }",
"}"));
- builder.build();
+ builder.build(true);
Schema schema = builder.getSchema();
AttributeFields attributeFields = new AttributeFields(schema);
@@ -80,8 +80,8 @@ public class RankPropertiesTestCase extends AbstractSchemaTestCase {
@Test
public void testRankProfileMutate() throws ParseException {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(rankProfileRegistry);
- builder.importString(joinLines(
+ ApplicationBuilder builder = new ApplicationBuilder(rankProfileRegistry);
+ builder.addSchema(joinLines(
"search test {",
" document test {",
" field a type int { ",
@@ -128,7 +128,7 @@ public class RankPropertiesTestCase extends AbstractSchemaTestCase {
" }",
" }",
"}"));
- builder.build();
+ builder.build(true);
Schema schema = builder.getSchema();
RankProfile a = rankProfileRegistry.get(schema, "a");
List<RankProfile.MutateOperation> operations = a.getMutateOperations();
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/RankingConstantTest.java b/config-model/src/test/java/com/yahoo/searchdefinition/RankingConstantTest.java
index 1925b7e77b9..6eb74dede62 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/RankingConstantTest.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/RankingConstantTest.java
@@ -28,8 +28,8 @@ public class RankingConstantTest {
final String TENSOR_FILE = "path/my-tensor-file.json";
final String TENSOR_TYPE = "tensor(x{})";
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder schemaBuilder = new SchemaBuilder(rankProfileRegistry);
- schemaBuilder.importString(joinLines(
+ ApplicationBuilder schemaBuilder = new ApplicationBuilder(rankProfileRegistry);
+ schemaBuilder.addSchema(joinLines(
"search test {",
" document test { }",
" rank-profile my_rank_profile {",
@@ -43,7 +43,7 @@ public class RankingConstantTest {
" }",
"}"
));
- schemaBuilder.build();
+ schemaBuilder.build(true);
Schema schema = schemaBuilder.getSchema();
Iterator<RankingConstant> constantIterator = schema.rankingConstants().asMap().values().iterator();
@@ -59,10 +59,10 @@ public class RankingConstantTest {
@Test
public void tensor_constant_must_have_a_type() throws Exception {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder schemaBuilder = new SchemaBuilder(rankProfileRegistry);
+ ApplicationBuilder schemaBuilder = new ApplicationBuilder(rankProfileRegistry);
thrown.expect(IllegalArgumentException.class);
thrown.expectMessage("must have a type");
- schemaBuilder.importString(joinLines(
+ schemaBuilder.addSchema(joinLines(
"search test {",
" document test { }",
" constant foo {",
@@ -75,10 +75,10 @@ public class RankingConstantTest {
@Test
public void tensor_constant_must_have_a_file() throws Exception {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder schemaBuilder = new SchemaBuilder(rankProfileRegistry);
+ ApplicationBuilder schemaBuilder = new ApplicationBuilder(rankProfileRegistry);
thrown.expect(IllegalArgumentException.class);
thrown.expectMessage("must have a file");
- schemaBuilder.importString(joinLines(
+ schemaBuilder.addSchema(joinLines(
"search test {",
" document test { }",
" constant foo {",
@@ -91,8 +91,8 @@ public class RankingConstantTest {
@Test
public void constant_file_does_not_need_path_or_ending() throws Exception {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder schemaBuilder = new SchemaBuilder(rankProfileRegistry);
- schemaBuilder.importString(joinLines(
+ ApplicationBuilder schemaBuilder = new ApplicationBuilder(rankProfileRegistry);
+ schemaBuilder.addSchema(joinLines(
"search test {",
" document test { }",
" constant foo {",
@@ -101,7 +101,7 @@ public class RankingConstantTest {
" }",
"}"
));
- schemaBuilder.build();
+ schemaBuilder.build(true);
Schema schema = schemaBuilder.getSchema();
RankingConstant constant = schema.rankingConstants().asMap().values().iterator().next();
assertEquals("simplename", constant.getFileName());
@@ -110,8 +110,8 @@ public class RankingConstantTest {
@Test
public void constant_uri_is_allowed() throws Exception {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder schemaBuilder = new SchemaBuilder(rankProfileRegistry);
- schemaBuilder.importString(joinLines(
+ ApplicationBuilder schemaBuilder = new ApplicationBuilder(rankProfileRegistry);
+ schemaBuilder.addSchema(joinLines(
"search test {",
" document test { }",
" constant foo {",
@@ -120,7 +120,7 @@ public class RankingConstantTest {
" }",
"}"
));
- schemaBuilder.build();
+ schemaBuilder.build(true);
Schema schema = schemaBuilder.getSchema();
RankingConstant constant = schema.rankingConstants().asMap().values().iterator().next();
assertEquals(RankingConstant.PathType.URI, constant.getPathType());
@@ -130,8 +130,8 @@ public class RankingConstantTest {
@Test
public void constant_https_uri_is_allowed() throws Exception {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder schemaBuilder = new SchemaBuilder(rankProfileRegistry);
- schemaBuilder.importString(joinLines(
+ ApplicationBuilder schemaBuilder = new ApplicationBuilder(rankProfileRegistry);
+ schemaBuilder.addSchema(joinLines(
"search test {",
" document test { }",
" constant foo {",
@@ -140,7 +140,7 @@ public class RankingConstantTest {
" }",
"}"
));
- schemaBuilder.build();
+ schemaBuilder.build(true);
Schema schema = schemaBuilder.getSchema();
RankingConstant constant = schema.rankingConstants().asMap().values().iterator().next();
assertEquals(RankingConstant.PathType.URI, constant.getPathType());
@@ -150,8 +150,8 @@ public class RankingConstantTest {
@Test
public void constant_uri_with_port_is_allowed() throws Exception {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder schemaBuilder = new SchemaBuilder(rankProfileRegistry);
- schemaBuilder.importString(joinLines(
+ ApplicationBuilder schemaBuilder = new ApplicationBuilder(rankProfileRegistry);
+ schemaBuilder.addSchema(joinLines(
"search test {",
" document test { }",
" constant foo {",
@@ -160,7 +160,7 @@ public class RankingConstantTest {
" }",
"}"
));
- schemaBuilder.build();
+ schemaBuilder.build(true);
Schema schema = schemaBuilder.getSchema();
RankingConstant constant = schema.rankingConstants().asMap().values().iterator().next();
assertEquals(RankingConstant.PathType.URI, constant.getPathType());
@@ -170,8 +170,8 @@ public class RankingConstantTest {
@Test
public void constant_uri_no_dual_slashes_is_allowed() throws Exception {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder schemaBuilder = new SchemaBuilder(rankProfileRegistry);
- schemaBuilder.importString(joinLines(
+ ApplicationBuilder schemaBuilder = new ApplicationBuilder(rankProfileRegistry);
+ schemaBuilder.addSchema(joinLines(
"search test {",
" document test { }",
" constant foo {",
@@ -180,7 +180,7 @@ public class RankingConstantTest {
" }",
"}"
));
- schemaBuilder.build();
+ schemaBuilder.build(true);
Schema schema = schemaBuilder.getSchema();
RankingConstant constant = schema.rankingConstants().asMap().values().iterator().next();
assertEquals(RankingConstant.PathType.URI, constant.getPathType());
@@ -190,12 +190,12 @@ public class RankingConstantTest {
@Test
public void constant_uri_only_supports_http_and_https() {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder schemaBuilder = new SchemaBuilder(rankProfileRegistry);
+ ApplicationBuilder schemaBuilder = new ApplicationBuilder(rankProfileRegistry);
String expectedMessage = "Encountered \" <IDENTIFIER> \"ftp\"\" at line 5, column 10.\n\n" +
"Was expecting:\n\n" +
"<URI_PATH> ...";
try {
- schemaBuilder.importString(joinLines(
+ schemaBuilder.addSchema(joinLines(
"search test {",
" document test { }",
" constant foo {",
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionConstantsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionConstantsTestCase.java
index 87b406c39fa..4646ff2f394 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionConstantsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionConstantsTestCase.java
@@ -25,8 +25,8 @@ public class RankingExpressionConstantsTestCase extends AbstractSchemaTestCase {
public void testConstants() throws ParseException {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
QueryProfileRegistry queryProfileRegistry = new QueryProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(rankProfileRegistry);
- builder.importString(
+ ApplicationBuilder builder = new ApplicationBuilder(rankProfileRegistry);
+ builder.addSchema(
"search test {\n" +
" document test { \n" +
" field a type string { \n" +
@@ -66,7 +66,7 @@ public class RankingExpressionConstantsTestCase extends AbstractSchemaTestCase {
" }\n" +
"\n" +
"}\n");
- builder.build();
+ builder.build(true);
Schema s = builder.getSchema();
RankProfile parent = rankProfileRegistry.get(s, "parent").compile(queryProfileRegistry, new ImportedMlModels());
assertEquals("0.0", parent.getFirstPhaseRanking().getRoot().toString());
@@ -91,8 +91,8 @@ public class RankingExpressionConstantsTestCase extends AbstractSchemaTestCase {
@Test
public void testNameCollision() throws ParseException {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(rankProfileRegistry);
- builder.importString(
+ ApplicationBuilder builder = new ApplicationBuilder(rankProfileRegistry);
+ builder.addSchema(
"search test {\n" +
" document test { \n" +
" field a type string { \n" +
@@ -110,7 +110,7 @@ public class RankingExpressionConstantsTestCase extends AbstractSchemaTestCase {
" }\n" +
"\n" +
"}\n");
- builder.build();
+ builder.build(true);
Schema s = builder.getSchema();
try {
rankProfileRegistry.get(s, "test").compile(new QueryProfileRegistry(), new ImportedMlModels());
@@ -125,8 +125,8 @@ public class RankingExpressionConstantsTestCase extends AbstractSchemaTestCase {
@Test
public void testNegativeLiteralArgument() throws ParseException {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(rankProfileRegistry);
- builder.importString(
+ ApplicationBuilder builder = new ApplicationBuilder(rankProfileRegistry);
+ builder.addSchema(
"search test {\n" +
" document test { \n" +
" field a type string { \n" +
@@ -141,7 +141,7 @@ public class RankingExpressionConstantsTestCase extends AbstractSchemaTestCase {
" }\n" +
"\n" +
"}\n");
- builder.build();
+ builder.build(true);
Schema s = builder.getSchema();
RankProfile profile = rankProfileRegistry.get(s, "test");
assertEquals("safeLog(popShareSlowDecaySignal,-9.21034037)", profile.getFunctions().get("POP_SLOW_SCORE").function().getBody().getRoot().toString());
@@ -150,8 +150,8 @@ public class RankingExpressionConstantsTestCase extends AbstractSchemaTestCase {
@Test
public void testNegativeConstantArgument() throws ParseException {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(rankProfileRegistry);
- builder.importString(
+ ApplicationBuilder builder = new ApplicationBuilder(rankProfileRegistry);
+ builder.addSchema(
"search test {\n" +
" document test { \n" +
" field a type string { \n" +
@@ -169,7 +169,7 @@ public class RankingExpressionConstantsTestCase extends AbstractSchemaTestCase {
" }\n" +
"\n" +
"}\n");
- builder.build();
+ builder.build(true);
Schema s = builder.getSchema();
RankProfile profile = rankProfileRegistry.get(s, "test");
assertEquals("safeLog(popShareSlowDecaySignal,myValue)", profile.getFunctions().get("POP_SLOW_SCORE").function().getBody().getRoot().toString());
@@ -180,8 +180,8 @@ public class RankingExpressionConstantsTestCase extends AbstractSchemaTestCase {
@Test
public void testConstantDivisorInFunction() throws ParseException {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(rankProfileRegistry);
- builder.importString(
+ ApplicationBuilder builder = new ApplicationBuilder(rankProfileRegistry);
+ builder.addSchema(
"search test {\n" +
" document test { \n" +
" }\n" +
@@ -193,7 +193,7 @@ public class RankingExpressionConstantsTestCase extends AbstractSchemaTestCase {
" }\n" +
"\n" +
"}\n");
- builder.build();
+ builder.build(true);
Schema s = builder.getSchema();
RankProfile profile = rankProfileRegistry.get(s, "test");
assertEquals("k1 + (k2 + k3) / 1.0E8",
@@ -203,8 +203,8 @@ public class RankingExpressionConstantsTestCase extends AbstractSchemaTestCase {
@Test
public void test3() throws ParseException {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(rankProfileRegistry);
- builder.importString(
+ ApplicationBuilder builder = new ApplicationBuilder(rankProfileRegistry);
+ builder.addSchema(
"search test {\n" +
" document test { \n" +
" field rating_yelp type int {" +
@@ -219,7 +219,7 @@ public class RankingExpressionConstantsTestCase extends AbstractSchemaTestCase {
" }\n" +
"\n" +
"}\n");
- builder.build();
+ builder.build(true);
Schema s = builder.getSchema();
RankProfile profile = rankProfileRegistry.get(s, "test");
assertEquals("0.5 + 50 * (attribute(rating_yelp) - 3)",
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionInliningTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionInliningTestCase.java
index 0598fee538a..94d25deb16a 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionInliningTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionInliningTestCase.java
@@ -28,8 +28,8 @@ public class RankingExpressionInliningTestCase extends AbstractSchemaTestCase {
@Test
public void testFunctionInliningPreserveArithmeticOrdering() throws ParseException {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(rankProfileRegistry);
- builder.importString(
+ ApplicationBuilder builder = new ApplicationBuilder(rankProfileRegistry);
+ builder.addSchema(
"search test {\n" +
" document test { \n" +
" field a type double { \n" +
@@ -65,7 +65,7 @@ public class RankingExpressionInliningTestCase extends AbstractSchemaTestCase {
" }\n" +
"\n" +
"}\n");
- builder.build();
+ builder.build(true);
Schema s = builder.getSchema();
RankProfile parent = rankProfileRegistry.get(s, "parent").compile(new QueryProfileRegistry(), new ImportedMlModels());
@@ -79,8 +79,8 @@ public class RankingExpressionInliningTestCase extends AbstractSchemaTestCase {
@Test
public void testConstants() throws ParseException {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(rankProfileRegistry);
- builder.importString(
+ ApplicationBuilder builder = new ApplicationBuilder(rankProfileRegistry);
+ builder.addSchema(
"search test {\n" +
" document test { \n" +
" field a type string { \n" +
@@ -125,7 +125,7 @@ public class RankingExpressionInliningTestCase extends AbstractSchemaTestCase {
" }\n" +
"\n" +
"}\n");
- builder.build();
+ builder.build(true);
Schema s = builder.getSchema();
RankProfile parent = rankProfileRegistry.get(s, "parent").compile(new QueryProfileRegistry(), new ImportedMlModels());
@@ -150,8 +150,8 @@ public class RankingExpressionInliningTestCase extends AbstractSchemaTestCase {
@Test
public void testNonTopLevelInlining() throws ParseException {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(rankProfileRegistry);
- builder.importString(
+ ApplicationBuilder builder = new ApplicationBuilder(rankProfileRegistry);
+ builder.addSchema(
"search test {\n" +
" document test { \n" +
" field a type double { \n" +
@@ -181,7 +181,7 @@ public class RankingExpressionInliningTestCase extends AbstractSchemaTestCase {
" }\n" +
"\n" +
"}\n");
- builder.build();
+ builder.build(true);
Schema s = builder.getSchema();
RankProfile test = rankProfileRegistry.get(s, "test").compile(new QueryProfileRegistry(), new ImportedMlModels());
@@ -194,13 +194,13 @@ public class RankingExpressionInliningTestCase extends AbstractSchemaTestCase {
public void testFunctionInliningWithReplacement() throws ParseException {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
MockDeployLogger deployLogger = new MockDeployLogger();
- SchemaBuilder builder = new SchemaBuilder(MockApplicationPackage.createEmpty(),
- new MockFileRegistry(),
- deployLogger,
- new TestProperties(),
- rankProfileRegistry,
- new QueryProfileRegistry());
- builder.importString(
+ ApplicationBuilder builder = new ApplicationBuilder(MockApplicationPackage.createEmpty(),
+ new MockFileRegistry(),
+ deployLogger,
+ new TestProperties(),
+ rankProfileRegistry,
+ new QueryProfileRegistry());
+ builder.addSchema(
"search test {\n" +
" document test { }\n" +
" rank-profile test {\n" +
@@ -215,7 +215,7 @@ public class RankingExpressionInliningTestCase extends AbstractSchemaTestCase {
" }\n" +
" }\n" +
"}\n");
- builder.build();
+ builder.build(true);
Schema s = builder.getSchema();
RankProfile test = rankProfileRegistry.get(s, "test").compile(new QueryProfileRegistry(), new ImportedMlModels());
assertEquals("foo(2)", test.getFirstPhaseRanking().getRoot().toString());
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionLoopDetectionTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionLoopDetectionTestCase.java
index 689b75690ae..ff8a9df4076 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionLoopDetectionTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionLoopDetectionTestCase.java
@@ -16,8 +16,8 @@ public class RankingExpressionLoopDetectionTestCase {
@Test
public void testSelfLoop() throws ParseException {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(rankProfileRegistry);
- builder.importString(
+ ApplicationBuilder builder = new ApplicationBuilder(rankProfileRegistry);
+ builder.addSchema(
"search test {\n" +
" document test { \n" +
" field a type string { \n" +
@@ -36,7 +36,7 @@ public class RankingExpressionLoopDetectionTestCase {
"\n" +
"}\n");
try {
- builder.build();
+ builder.build(true);
fail("Excepted exception");
}
catch (IllegalArgumentException e) {
@@ -48,8 +48,8 @@ public class RankingExpressionLoopDetectionTestCase {
@Test
public void testNestedLoop() throws ParseException {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(rankProfileRegistry);
- builder.importString(
+ ApplicationBuilder builder = new ApplicationBuilder(rankProfileRegistry);
+ builder.addSchema(
"search test {\n" +
" document test { \n" +
" field a type string { \n" +
@@ -71,7 +71,7 @@ public class RankingExpressionLoopDetectionTestCase {
"\n" +
"}\n");
try {
- builder.build();
+ builder.build(true);
fail("Excepted exception");
}
catch (IllegalArgumentException e) {
@@ -83,8 +83,8 @@ public class RankingExpressionLoopDetectionTestCase {
@Test
public void testSelfArgumentLoop() throws ParseException {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(rankProfileRegistry);
- builder.importString(
+ ApplicationBuilder builder = new ApplicationBuilder(rankProfileRegistry);
+ builder.addSchema(
"search test {\n" +
" document test { \n" +
" field a type string { \n" +
@@ -106,7 +106,7 @@ public class RankingExpressionLoopDetectionTestCase {
"\n" +
"}\n");
try {
- builder.build();
+ builder.build(true);
fail("Excepted exception");
}
catch (IllegalArgumentException e) {
@@ -118,8 +118,8 @@ public class RankingExpressionLoopDetectionTestCase {
@Test
public void testNoLoopWithSameLocalArgument() throws ParseException {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(rankProfileRegistry);
- builder.importString(
+ ApplicationBuilder builder = new ApplicationBuilder(rankProfileRegistry);
+ builder.addSchema(
"search test {\n" +
" document test { \n" +
" field a type string { \n" +
@@ -140,14 +140,14 @@ public class RankingExpressionLoopDetectionTestCase {
" }\n" +
"\n" +
"}\n");
- builder.build();
+ builder.build(true);
}
@Test
public void testNoLoopWithMultipleInvocations() throws ParseException {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(rankProfileRegistry);
- builder.importString(
+ ApplicationBuilder builder = new ApplicationBuilder(rankProfileRegistry);
+ builder.addSchema(
"search test {\n" +
" document test { \n" +
" field a type string { \n" +
@@ -168,14 +168,14 @@ public class RankingExpressionLoopDetectionTestCase {
" }\n" +
"\n" +
"}\n");
- builder.build();
+ builder.build(true);
}
@Test
public void testNoLoopWithBoundIdentifiers() throws ParseException {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(rankProfileRegistry);
- builder.importString(
+ ApplicationBuilder builder = new ApplicationBuilder(rankProfileRegistry);
+ builder.addSchema(
"search test {\n" +
" document test { \n" +
" }\n" +
@@ -191,14 +191,14 @@ public class RankingExpressionLoopDetectionTestCase {
" }\n" +
" }\n" +
"}\n");
- builder.build();
+ builder.build(true);
}
@Test
public void testNoLoopWithTheSameNestedIdentifierWhichIsUnbound() throws ParseException {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(rankProfileRegistry);
- builder.importString(
+ ApplicationBuilder builder = new ApplicationBuilder(rankProfileRegistry);
+ builder.addSchema(
"search test {\n" +
" document test { \n" +
" }\n" +
@@ -214,14 +214,14 @@ public class RankingExpressionLoopDetectionTestCase {
" }\n" +
" }\n" +
"}\n");
- builder.build();
+ builder.build(true);
}
@Test
public void testNoLoopWithTheSameAlternatingNestedIdentifierWhichIsUnbound() throws ParseException {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(rankProfileRegistry);
- builder.importString(
+ ApplicationBuilder builder = new ApplicationBuilder(rankProfileRegistry);
+ builder.addSchema(
"search test {\n" +
" document test { \n" +
" }\n" +
@@ -240,7 +240,7 @@ public class RankingExpressionLoopDetectionTestCase {
" }\n" +
" }\n" +
"}\n");
- builder.build();
+ builder.build(true);
}
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionShadowingTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionShadowingTestCase.java
index ff146fedd88..8354eb59416 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionShadowingTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionShadowingTestCase.java
@@ -26,8 +26,8 @@ public class RankingExpressionShadowingTestCase extends AbstractSchemaTestCase {
@Test
public void testBasicFunctionShadowing() throws ParseException {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(rankProfileRegistry);
- builder.importString(
+ ApplicationBuilder builder = new ApplicationBuilder(rankProfileRegistry);
+ builder.addSchema(
"search test {\n" +
" document test { \n" +
" field a type string { \n" +
@@ -45,7 +45,7 @@ public class RankingExpressionShadowingTestCase extends AbstractSchemaTestCase {
" }\n" +
"\n" +
"}\n");
- builder.build();
+ builder.build(true);
Schema s = builder.getSchema();
RankProfile test = rankProfileRegistry.get(s, "test").compile(new QueryProfileRegistry(), new ImportedMlModels());
List<Pair<String, String>> testRankProperties = createRawRankProfile(test, new QueryProfileRegistry(), s).configProperties();
@@ -61,8 +61,8 @@ public class RankingExpressionShadowingTestCase extends AbstractSchemaTestCase {
@Test
public void testMultiLevelFunctionShadowing() throws ParseException {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(rankProfileRegistry);
- builder.importString(
+ ApplicationBuilder builder = new ApplicationBuilder(rankProfileRegistry);
+ builder.addSchema(
"search test {\n" +
" document test { \n" +
" field a type string { \n" +
@@ -86,7 +86,7 @@ public class RankingExpressionShadowingTestCase extends AbstractSchemaTestCase {
" }\n" +
"\n" +
"}\n");
- builder.build();
+ builder.build(true);
Schema s = builder.getSchema();
RankProfile test = rankProfileRegistry.get(s, "test").compile(new QueryProfileRegistry(), new ImportedMlModels());
List<Pair<String, String>> testRankProperties = createRawRankProfile(test, new QueryProfileRegistry(), s).configProperties();
@@ -113,8 +113,8 @@ public class RankingExpressionShadowingTestCase extends AbstractSchemaTestCase {
@Test
public void testFunctionShadowingArguments() throws ParseException {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(rankProfileRegistry);
- builder.importString(
+ ApplicationBuilder builder = new ApplicationBuilder(rankProfileRegistry);
+ builder.addSchema(
"search test {\n" +
" document test { \n" +
" field a type string { \n" +
@@ -132,7 +132,7 @@ public class RankingExpressionShadowingTestCase extends AbstractSchemaTestCase {
" }\n" +
"\n" +
"}\n");
- builder.build();
+ builder.build(true);
Schema s = builder.getSchema();
RankProfile test = rankProfileRegistry.get(s, "test").compile(new QueryProfileRegistry(), new ImportedMlModels());
List<Pair<String, String>> testRankProperties = createRawRankProfile(test, new QueryProfileRegistry(), s).configProperties();
@@ -153,8 +153,8 @@ public class RankingExpressionShadowingTestCase extends AbstractSchemaTestCase {
// Note: the type assigned to query profile and constant tensors here is not the correct type
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
QueryProfileRegistry queryProfiles = queryProfileWith("query(q)", "tensor(input[1])");
- SchemaBuilder builder = new SchemaBuilder(rankProfileRegistry, queryProfiles);
- builder.importString(
+ ApplicationBuilder builder = new ApplicationBuilder(rankProfileRegistry, queryProfiles);
+ builder.addSchema(
"search test {\n" +
" document test { \n" +
" field a type string { \n" +
@@ -193,7 +193,7 @@ public class RankingExpressionShadowingTestCase extends AbstractSchemaTestCase {
" file: ignored.json\n" +
" }\n" +
"}\n");
- builder.build();
+ builder.build(true);
Schema s = builder.getSchema();
RankProfile test = rankProfileRegistry.get(s, "test").compile(queryProfiles, new ImportedMlModels());
List<Pair<String, String>> testRankProperties = createRawRankProfile(test, queryProfiles, s).configProperties();
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionValidationTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionValidationTestCase.java
index 299724ea39e..ee3b4ab25e0 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionValidationTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionValidationTestCase.java
@@ -32,20 +32,20 @@ public class RankingExpressionValidationTestCase extends AbstractSchemaTestCase
}
private Schema importWithExpression(String expression, RankProfileRegistry registry) throws ParseException {
- SchemaBuilder builder = new SchemaBuilder(registry);
- builder.importString("search test {" +
- " document test { " +
- " field a type string { " +
- " indexing: index " +
- " }" +
- " }" +
- " rank-profile default {" +
- " first-phase {" +
- " expression: " + expression +
- " }" +
- " }" +
- "}");
- builder.build();
+ ApplicationBuilder builder = new ApplicationBuilder(registry);
+ builder.addSchema("search test {" +
+ " document test { " +
+ " field a type string { " +
+ " indexing: index " +
+ " }" +
+ " }" +
+ " rank-profile default {" +
+ " first-phase {" +
+ " expression: " + expression +
+ " }" +
+ " }" +
+ "}");
+ builder.build(true);
return builder.getSchema();
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/ReservedWordsAsFieldNamesTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/ReservedWordsAsFieldNamesTestCase.java
index a6f76897c0b..a8aaee83938 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/ReservedWordsAsFieldNamesTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/ReservedWordsAsFieldNamesTestCase.java
@@ -15,7 +15,7 @@ public class ReservedWordsAsFieldNamesTestCase extends AbstractSchemaTestCase {
@Test
public void testIt() throws IOException, ParseException {
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/reserved_words_as_field_names.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/reserved_words_as_field_names.sd");
assertNotNull(schema.getDocument().getField("inline"));
assertNotNull(schema.getDocument().getField("constants"));
assertNotNull(schema.getDocument().getField("reference"));
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/SchemaImporterTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/SchemaImporterTestCase.java
index c2816336076..9c895b452d5 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/SchemaImporterTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/SchemaImporterTestCase.java
@@ -18,6 +18,7 @@ import org.junit.Test;
import java.io.IOException;
import java.util.Iterator;
+import static com.google.common.collect.testing.Helpers.assertEmpty;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
@@ -36,9 +37,9 @@ public class SchemaImporterTestCase extends AbstractSchemaTestCase {
@SuppressWarnings("deprecation")
public void testSimpleImporting() throws IOException, ParseException {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder sb = new SchemaBuilder(rankProfileRegistry, new QueryProfileRegistry());
- sb.importFile("src/test/examples/simple.sd");
- sb.build();
+ ApplicationBuilder sb = new ApplicationBuilder(rankProfileRegistry, new QueryProfileRegistry());
+ sb.addSchemaFile("src/test/examples/simple.sd");
+ sb.build(true);
Schema schema = sb.getSchema();
assertEquals("simple", schema.getName());
assertTrue(schema.hasDocument());
@@ -53,14 +54,14 @@ public class SchemaImporterTestCase extends AbstractSchemaTestCase {
new MakeAliases(schema, new BaseDeployLogger(), rankProfileRegistry, new QueryProfiles()).process(true, false);
// First field
- field=(SDField) document.getField("title");
- assertEquals(DataType.STRING,field.getDataType());
+ field = (SDField) document.getField("title");
+ assertEquals(DataType.STRING, field.getDataType());
assertEquals("{ input title | tokenize normalize stem:\"BEST\" | summary title | index title; }", field.getIndexingScript().toString());
assertFalse(schema.getIndex("default").isPrefix());
assertTrue(schema.getIndex("title").isPrefix());
- Iterator<String> titleAliases= schema.getIndex("title").aliasIterator();
- assertEquals("aliaz",titleAliases.next());
- assertEquals("analias.totitle",titleAliases.next());
+ Iterator<String> titleAliases = schema.getIndex("title").aliasIterator();
+ assertEquals("aliaz", titleAliases.next());
+ assertEquals("analias.totitle", titleAliases.next());
assertEquals("analias.todefault",
schema.getIndex("default").aliasIterator().next());
assertEquals(RankType.IDENTITY, field.getRankType());
@@ -70,7 +71,7 @@ public class SchemaImporterTestCase extends AbstractSchemaTestCase {
assertTrue(field.isHeader());
// Second field
- field=(SDField) document.getField("description");
+ field = (SDField) document.getField("description");
assertEquals(RankType.ABOUT, field.getRankType());
assertEquals(SummaryTransform.NONE,
field.getSummaryField("description").getTransform());
@@ -81,30 +82,30 @@ public class SchemaImporterTestCase extends AbstractSchemaTestCase {
assertEquals("hallo", schema.getIndex("description").aliasIterator().next());
// Third field
- field=(SDField) document.getField("chatter");
+ field = (SDField) document.getField("chatter");
assertEquals(RankType.ABOUT, field.getRankType());
assertNull(field.getStemming());
assertTrue(field.getNormalizing().doRemoveAccents());
// Fourth field
- field=(SDField) document.getField("category");
+ field = (SDField) document.getField("category");
assertEquals(0, field.getAttributes().size());
assertEquals(Stemming.NONE, field.getStemming());
assertFalse(field.getNormalizing().doRemoveAccents());
// Fifth field
- field=(SDField) document.getField("popularity");
+ field = (SDField) document.getField("popularity");
assertEquals("{ input popularity | attribute popularity; }",
field.getIndexingScript().toString());
// Sixth field
- field=(SDField) document.getField("measurement");
- assertEquals(DataType.INT,field.getDataType());
+ field = (SDField) document.getField("measurement");
+ assertEquals(DataType.INT, field.getDataType());
assertEquals(RankType.EMPTY, field.getRankType());
assertEquals(1, field.getAttributes().size());
// Seventh field
- field= schema.getConcreteField("categories");
+ field = schema.getConcreteField("categories");
assertEquals("{ input categories_src | lowercase | normalize | tokenize normalize stem:\"BEST\" | index categories; }",
field.getIndexingScript().toString());
assertTrue(field.isHeader());
@@ -139,27 +140,27 @@ public class SchemaImporterTestCase extends AbstractSchemaTestCase {
assertEquals(Attribute.CollectionType.ARRAY, attribute.getCollectionType());
// Rank Profiles
- RankProfile profile=rankProfileRegistry.get(schema, "default");
+ RankProfile profile = rankProfileRegistry.get(schema, "default");
assertNotNull(profile);
- assertNull(profile.getInheritedName());
+ assertEmpty(profile.inheritedNames());
assertNull(profile.getDeclaredRankSetting("measurement", RankProfile.RankSetting.Type.RANKTYPE));
assertEquals(RankType.EMPTY,
profile.getRankSetting("measurement", RankProfile.RankSetting.Type.RANKTYPE).getValue());
- profile=rankProfileRegistry.get(schema, "experimental");
+ profile = rankProfileRegistry.get(schema, "experimental");
assertNotNull(profile);
- assertEquals("default",profile.getInheritedName());
+ assertEquals("default", profile.inheritedNames().get(0));
assertEquals(RankType.IDENTITY,
profile.getDeclaredRankSetting("measurement", RankProfile.RankSetting.Type.RANKTYPE).getValue());
- profile=rankProfileRegistry.get(schema, "other");
+ profile = rankProfileRegistry.get(schema, "other");
assertNotNull(profile);
- assertEquals("experimental",profile.getInheritedName());
+ assertEquals("experimental", profile.inheritedNames().get(0));
// The extra-document field
- SDField exact= schema.getConcreteField("exact");
- assertNotNull("Extra field was parsed",exact);
- assertEquals("exact",exact.getName());
- assertEquals(Stemming.NONE,exact.getStemming());
+ SDField exact = schema.getConcreteField("exact");
+ assertNotNull("Extra field was parsed", exact);
+ assertEquals("exact", exact.getName());
+ assertEquals(Stemming.NONE, exact.getStemming());
assertFalse(exact.getNormalizing().doRemoveAccents());
assertEquals("{ input title . \" \" . input category | tokenize | summary exact | index exact; }",
exact.getIndexingScript().toString());
@@ -170,7 +171,7 @@ public class SchemaImporterTestCase extends AbstractSchemaTestCase {
public void testDocumentImporting() throws IOException, ParseException {
try {
// Having two documents in one sd-file is illegal.
- SchemaBuilder.buildFromFile("src/test/examples/documents.sd");
+ ApplicationBuilder.buildFromFile("src/test/examples/documents.sd");
fail();
} catch (IllegalArgumentException e) {
}
@@ -178,11 +179,11 @@ public class SchemaImporterTestCase extends AbstractSchemaTestCase {
@Test
public void testIdImporting() throws IOException, ParseException {
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/strange.sd");
- SDField idecidemyide=(SDField) schema.getDocument().getField("idecidemyide");
- assertEquals(5,idecidemyide.getId());
- SDField sodoi=(SDField) schema.getDocument().getField("sodoi");
- assertEquals(7,sodoi.getId());
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/strange.sd");
+ SDField idecidemyide = (SDField)schema.getDocument().getField("idecidemyide");
+ assertEquals(5, idecidemyide.getId());
+ SDField sodoi = (SDField) schema.getDocument().getField("sodoi");
+ assertEquals(7, sodoi.getId());
}
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/SchemaParsingTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/SchemaParsingTestCase.java
index dfe60c5871e..6d619b76c18 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/SchemaParsingTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/SchemaParsingTestCase.java
@@ -19,13 +19,13 @@ public class SchemaParsingTestCase extends AbstractSchemaTestCase {
@Test
public void requireThatIndexingExpressionsCanBeParsed() throws Exception {
- assertNotNull(SchemaBuilder.buildFromFile("src/test/examples/simple.sd"));
+ assertNotNull(ApplicationBuilder.buildFromFile("src/test/examples/simple.sd"));
}
@Test
public void requireThatParseExceptionPositionIsCorrect() throws Exception {
try {
- SchemaBuilder.buildFromFile("src/test/examples/invalid_sd_construct.sd");
+ ApplicationBuilder.buildFromFile("src/test/examples/invalid_sd_construct.sd");
} catch (ParseException e) {
if ( ! e.getMessage().contains("at line 5, column 36.")) {
throw e;
@@ -36,7 +36,7 @@ public class SchemaParsingTestCase extends AbstractSchemaTestCase {
@Test
public void requireThatParserHandlesLexicalError() throws Exception {
try {
- SchemaBuilder.buildFromFile("src/test/examples/invalid_sd_lexical_error.sd");
+ ApplicationBuilder.buildFromFile("src/test/examples/invalid_sd_lexical_error.sd");
} catch (ParseException e) {
if (!e.getMessage().contains("at line 7, column 27.")) {
throw e;
@@ -47,7 +47,7 @@ public class SchemaParsingTestCase extends AbstractSchemaTestCase {
@Test
public void requireErrorWhenJunkAfterSearchBlock() throws IOException, ParseException {
try {
- SchemaBuilder.buildFromFile("src/test/examples/invalid_sd_junk_at_end.sd");
+ ApplicationBuilder.buildFromFile("src/test/examples/invalid_sd_junk_at_end.sd");
fail("Illegal junk at end of SD passed");
} catch (ParseException e) {
if (!e.getMessage().contains("at line 10, column 1")) {
@@ -59,7 +59,7 @@ public class SchemaParsingTestCase extends AbstractSchemaTestCase {
@Test
public void requireErrorWhenMissingClosingSearchBracket() throws IOException, ParseException {
try {
- SchemaBuilder.buildFromFile("src/test/examples/invalid_sd_no_closing_bracket.sd");
+ ApplicationBuilder.buildFromFile("src/test/examples/invalid_sd_no_closing_bracket.sd");
fail("SD without closing bracket passed");
} catch (ParseException e) {
if (!e.getMessage().contains("Encountered \"<EOF>\" at line 8, column 1")) {
@@ -71,7 +71,7 @@ public class SchemaParsingTestCase extends AbstractSchemaTestCase {
@Test
public void illegalSearchDefinitionName() throws IOException, ParseException {
try {
- SchemaBuilder.buildFromFile("src/test/examples/invalid-name.sd");
+ ApplicationBuilder.buildFromFile("src/test/examples/invalid-name.sd");
fail("Name with dash passed");
} catch (ParseException e) {
if ( ! e.getMessage().contains("invalid-name")) {
@@ -80,10 +80,4 @@ public class SchemaParsingTestCase extends AbstractSchemaTestCase {
}
}
- // TODO: Remove in Vespa 8
- @Test
- public void requireThatParserHandlesHeadAndBody() throws IOException, ParseException {
- assertNotNull(SchemaBuilder.buildFromFile("src/test/examples/header_body.sd"));
- }
-
}
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 d906685d502..112dbd2587e 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/SchemaTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/SchemaTestCase.java
@@ -31,10 +31,10 @@ public class SchemaTestCase {
" }" +
"}");
DeployLoggerStub logger = new DeployLoggerStub();
- SchemaBuilder.createFromStrings(logger, schema);
+ 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());
@@ -60,7 +60,8 @@ public class SchemaTestCase {
" }" +
" }" +
"}");
- SchemaBuilder.createFromStrings(new DeployLoggerStub(), parent, child);
+ ApplicationBuilder.createFromStrings(new DeployLoggerStub(), parent, child);
+ fail("Expected exception");
}
catch (IllegalArgumentException e) {
assertEquals("schema 'child' inherits 'parent', " +
@@ -166,12 +167,12 @@ public class SchemaTestCase {
" import field parentschema_ref.name as child2_imported {}" +
"}");
- SchemaBuilder builder = new SchemaBuilder(new DeployLoggerStub());
+ ApplicationBuilder builder = new ApplicationBuilder(new DeployLoggerStub());
builder.processorsToSkip().add(OnnxModelTypeResolver.class); // Avoid discovering the Onnx model referenced does not exist
builder.processorsToSkip().add(ImportedFieldsResolver.class); // Avoid discovering the document reference leads nowhere
- builder.importString(parentLines);
- builder.importString(child1Lines);
- builder.importString(child2Lines);
+ builder.addSchema(parentLines);
+ builder.addSchema(child1Lines);
+ builder.addSchema(child2Lines);
builder.build(true);
var application = builder.application();
@@ -187,7 +188,7 @@ public class SchemaTestCase {
assertNotNull(child1.getExtraField("child1_field"));
assertNotNull(builder.getRankProfileRegistry().get(child1, "parent_profile"));
assertNotNull(builder.getRankProfileRegistry().get(child1, "child1_profile"));
- assertEquals("parent_profile", builder.getRankProfileRegistry().get(child1, "child1_profile").getInheritedName());
+ assertEquals("parent_profile", builder.getRankProfileRegistry().get(child1, "child1_profile").inheritedNames().get(0));
assertNotNull(child1.rankingConstants().get("parent_constant"));
assertNotNull(child1.rankingConstants().get("child1_constant"));
assertTrue(child1.rankingConstants().asMap().containsKey("parent_constant"));
@@ -222,7 +223,7 @@ public class SchemaTestCase {
assertNotNull(child2.getExtraField("child2_field"));
assertNotNull(builder.getRankProfileRegistry().get(child2, "parent_profile"));
assertNotNull(builder.getRankProfileRegistry().get(child2, "child2_profile"));
- assertEquals("parent_profile", builder.getRankProfileRegistry().get(child2, "child2_profile").getInheritedName());
+ assertEquals("parent_profile", builder.getRankProfileRegistry().get(child2, "child2_profile").inheritedNames().get(0));
assertNotNull(child2.rankingConstants().get("parent_constant"));
assertNotNull(child2.rankingConstants().get("child2_constant"));
assertTrue(child2.rankingConstants().asMap().containsKey("parent_constant"));
@@ -307,12 +308,12 @@ public class SchemaTestCase {
" }" +
"}");
- SchemaBuilder builder = new SchemaBuilder(new DeployLoggerStub());
+ ApplicationBuilder builder = new ApplicationBuilder(new DeployLoggerStub());
builder.processorsToSkip().add(OnnxModelTypeResolver.class); // Avoid discovering the Onnx model referenced does not exist
builder.processorsToSkip().add(ImportedFieldsResolver.class); // Avoid discovering the document reference leads nowhere
- builder.importString(parentLines);
- builder.importString(childLines);
- builder.importString(grandchildLines);
+ builder.addSchema(parentLines);
+ builder.addSchema(childLines);
+ builder.addSchema(grandchildLines);
builder.build(true);
var application = builder.application();
@@ -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());
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/StemmingSettingTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/StemmingSettingTestCase.java
index 75dcd6bc209..aec258f2df0 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/StemmingSettingTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/StemmingSettingTestCase.java
@@ -20,7 +20,7 @@ public class StemmingSettingTestCase extends AbstractSchemaTestCase {
@Test
public void testStemmingSettings() throws IOException, ParseException {
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/stemmingsetting.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/stemmingsetting.sd");
SDField artist = (SDField) schema.getDocument().getField("artist");
assertEquals(Stemming.SHORTEST, artist.getStemming(schema));
@@ -43,7 +43,7 @@ public class StemmingSettingTestCase extends AbstractSchemaTestCase {
@Test
public void requireThatStemmingIsDefaultBest() throws IOException, ParseException {
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/stemmingdefault.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/stemmingdefault.sd");
assertNull(schema.getConcreteField("my_str").getStemming());
assertEquals(Stemming.BEST, schema.getConcreteField("my_str").getStemming(schema));
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/StructTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/StructTestCase.java
index 34093bf72ef..c27dd9dfdfb 100755
--- a/config-model/src/test/java/com/yahoo/searchdefinition/StructTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/StructTestCase.java
@@ -25,7 +25,7 @@ public class StructTestCase extends AbstractSchemaTestCase {
@Test
public void testBadStruct() throws IOException {
try {
- SchemaBuilder.buildFromFile("src/test/examples/badstruct.sd");
+ ApplicationBuilder.buildFromFile("src/test/examples/badstruct.sd");
fail("Should throw exception.");
} catch (ParseException expected) {
// success
@@ -46,7 +46,7 @@ public class StructTestCase extends AbstractSchemaTestCase {
*/
@Test(expected = IllegalArgumentException.class)
public void testStructOutsideDocumentIllegal() throws IOException, ParseException {
- SchemaBuilder.buildFromFile("src/test/examples/structoutsideofdocument.sd");
+ ApplicationBuilder.buildFromFile("src/test/examples/structoutsideofdocument.sd");
}
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/SummaryTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/SummaryTestCase.java
index 7c8e806d768..086e3485962 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/SummaryTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/SummaryTestCase.java
@@ -39,7 +39,7 @@ public class SummaryTestCase {
" }",
"}");
DeployLoggerStub logger = new DeployLoggerStub();
- SchemaBuilder.createFromString(sd, logger);
+ ApplicationBuilder.createFromString(sd, logger);
assertTrue(logger.entries.isEmpty());
}
@@ -61,7 +61,7 @@ public class SummaryTestCase {
" }",
"}");
DeployLoggerStub logger = new DeployLoggerStub();
- SchemaBuilder.createFromString(sd, logger);
+ ApplicationBuilder.createFromString(sd, logger);
assertEquals(1, logger.entries.size());
assertEquals(Level.WARNING, logger.entries.get(0).level);
assertEquals("summary field 'foo2' in document summary 'foobar' references source field 'ondisk', " +
@@ -89,7 +89,7 @@ public class SummaryTestCase {
" }",
"}");
DeployLoggerStub logger = new DeployLoggerStub();
- SchemaBuilder.createFromString(sd, logger);
+ ApplicationBuilder.createFromString(sd, logger);
assertTrue(logger.entries.isEmpty());
}
@@ -120,7 +120,7 @@ public class SummaryTestCase {
" }",
"}");
DeployLoggerStub logger = new DeployLoggerStub();
- SchemaBuilder.createFromString(sd, logger);
+ ApplicationBuilder.createFromString(sd, logger);
assertTrue(logger.entries.isEmpty());
}
@@ -156,7 +156,7 @@ public class SummaryTestCase {
" }",
"}");
var logger = new DeployLoggerStub();
- var search = SchemaBuilder.createFromString(sd, logger).getSchema();
+ var search = ApplicationBuilder.createFromString(sd, logger).getSchema();
assertEquals(List.of(), logger.entries);
var titleField = "title";
@@ -208,7 +208,7 @@ public class SummaryTestCase {
"}");
var logger = new DeployLoggerStub();
try {
- SchemaBuilder.createFromString(sd, logger);
+ ApplicationBuilder.createFromString(sd, logger);
fail("Expected exception");
} catch (IllegalArgumentException e) {
assertEquals("For schema 'music', summary class 'title2', summary field 'title': Can not use " +
@@ -228,7 +228,7 @@ public class SummaryTestCase {
" }" +
"}");
DeployLoggerStub logger = new DeployLoggerStub();
- SchemaBuilder.createFromStrings(logger, schema);
+ ApplicationBuilder.createFromStrings(logger, schema);
assertEquals("document summary 'test_summary' inherits nonesuch but this is not present in schema 'test'",
logger.entries.get(0).message);
// fail("Expected failure");
@@ -264,7 +264,7 @@ public class SummaryTestCase {
" }" +
"}");
DeployLoggerStub logger = new DeployLoggerStub();
- SchemaBuilder.createFromStrings(logger, parent, child);
+ ApplicationBuilder.createFromStrings(logger, parent, child);
logger.entries.forEach(e -> System.out.println(e));
//assertTrue(logger.entries.isEmpty());
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/UrlFieldValidationTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/UrlFieldValidationTestCase.java
index 9fdeb9ece1d..f2d78796553 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/UrlFieldValidationTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/UrlFieldValidationTestCase.java
@@ -15,14 +15,14 @@ public class UrlFieldValidationTestCase {
@Test
public void requireThatInheritedRiseFieldsStillCanBeInConflictButDontThrowException() throws ParseException {
- SchemaBuilder builder = new SchemaBuilder();
- builder.importString("search test {" +
- " document test { " +
- " field a type uri { indexing: attribute | summary }" +
- " }" +
- "}");
+ ApplicationBuilder builder = new ApplicationBuilder();
+ builder.addSchema("search test {" +
+ " document test { " +
+ " field a type uri { indexing: attribute | summary }" +
+ " }" +
+ "}");
try {
- builder.build();
+ builder.build(true);
fail("Should have caused an exception");
// success
} catch (IllegalArgumentException e) {
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/AbstractExportingTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/AbstractExportingTestCase.java
index 8b54455d176..456efdb08ae 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/AbstractExportingTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/AbstractExportingTestCase.java
@@ -8,7 +8,7 @@ import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.document.config.DocumenttypesConfig;
import com.yahoo.document.config.DocumentmanagerConfig;
import com.yahoo.searchdefinition.Schema;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.AbstractSchemaTestCase;
import com.yahoo.searchdefinition.parser.ParseException;
import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlModels;
@@ -38,14 +38,14 @@ public abstract class AbstractExportingTestCase extends AbstractSchemaTestCase {
toDir.mkdirs();
deleteContent(toDir);
- SchemaBuilder builder = SchemaBuilder.createFromDirectory(searchDefRoot + dirName + "/", new MockFileRegistry(), logger, properties);
+ ApplicationBuilder builder = ApplicationBuilder.createFromDirectory(searchDefRoot + dirName + "/", new MockFileRegistry(), logger, properties);
return derive(dirName, searchDefinitionName, properties, builder, logger);
}
private DerivedConfiguration derive(String dirName,
String searchDefinitionName,
TestProperties properties,
- SchemaBuilder builder,
+ ApplicationBuilder builder,
DeployLogger logger) throws IOException {
DerivedConfiguration config = new DerivedConfiguration(builder.getSchema(searchDefinitionName),
logger,
@@ -57,14 +57,14 @@ public abstract class AbstractExportingTestCase extends AbstractSchemaTestCase {
return export(dirName, builder, config);
}
- DerivedConfiguration derive(String dirName, SchemaBuilder builder, Schema schema) throws IOException {
+ DerivedConfiguration derive(String dirName, ApplicationBuilder builder, Schema schema) throws IOException {
DerivedConfiguration config = new DerivedConfiguration(schema,
builder.getRankProfileRegistry(),
builder.getQueryProfileRegistry());
return export(dirName, builder, config);
}
- private DerivedConfiguration export(String name, SchemaBuilder builder, DerivedConfiguration config) throws IOException {
+ private DerivedConfiguration export(String name, ApplicationBuilder builder, DerivedConfiguration config) throws IOException {
String path = exportConfig(name, config);
DerivedConfiguration.exportDocuments(new DocumentManager().useV8DocManagerCfg(useV8DocManagerCfg())
.produce(builder.getModel(), new DocumentmanagerConfig.Builder()), path);
@@ -100,6 +100,11 @@ public abstract class AbstractExportingTestCase extends AbstractSchemaTestCase {
DeployLogger logger) throws IOException, ParseException {
return assertCorrectDeriving(dirName, searchDefinitionName, new TestProperties(), logger);
}
+ protected DerivedConfiguration assertCorrectDeriving(String dirName,
+ TestProperties properties) throws IOException, ParseException
+ {
+ return assertCorrectDeriving(dirName, null, properties, new TestableDeployLogger());
+ }
protected DerivedConfiguration assertCorrectDeriving(String dirName,
String searchDefinitionName,
@@ -114,14 +119,14 @@ public abstract class AbstractExportingTestCase extends AbstractSchemaTestCase {
* Asserts config is correctly derived given a builder.
* This will fail if the builder contains multiple search definitions.
*/
- protected DerivedConfiguration assertCorrectDeriving(SchemaBuilder builder, String dirName, DeployLogger logger) throws IOException {
- builder.build();
+ protected DerivedConfiguration assertCorrectDeriving(ApplicationBuilder builder, String dirName, DeployLogger logger) throws IOException {
+ builder.build(true);
DerivedConfiguration derived = derive(dirName, null, new TestProperties(), builder, logger);
assertCorrectConfigFiles(dirName);
return derived;
}
- protected DerivedConfiguration assertCorrectDeriving(SchemaBuilder builder, Schema schema, String name) throws IOException {
+ protected DerivedConfiguration assertCorrectDeriving(ApplicationBuilder builder, Schema schema, String name) throws IOException {
DerivedConfiguration derived = derive(name, builder, schema);
assertCorrectConfigFiles(name);
return derived;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/AttributeListTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/AttributeListTestCase.java
index 58a4350b73b..a272ab14dad 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/AttributeListTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/AttributeListTestCase.java
@@ -2,7 +2,7 @@
package com.yahoo.searchdefinition.derived;
import com.yahoo.searchdefinition.Schema;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.AbstractSchemaTestCase;
import com.yahoo.searchdefinition.document.Attribute;
import com.yahoo.searchdefinition.parser.ParseException;
@@ -25,7 +25,7 @@ public class AttributeListTestCase extends AbstractSchemaTestCase {
@Test
public void testDeriving() throws IOException, ParseException {
// Test attribute importing
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/simple.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/simple.sd");
// Test attribute deriving
AttributeFields attributeFields = new AttributeFields(schema);
@@ -71,7 +71,7 @@ public class AttributeListTestCase extends AbstractSchemaTestCase {
@Test
public void fields_in_array_of_struct_are_derived_into_array_attributes() throws IOException, ParseException {
- Schema schema = SchemaBuilder.buildFromFile("src/test/derived/array_of_struct_attribute/test.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/derived/array_of_struct_attribute/test.sd");
Iterator<Attribute> attributes = new AttributeFields(schema).attributeIterator();
assertAttribute("elem_array.name", Attribute.Type.STRING, Attribute.CollectionType.ARRAY, true, attributes.next());
@@ -81,7 +81,7 @@ public class AttributeListTestCase extends AbstractSchemaTestCase {
@Test
public void fields_in_map_of_struct_are_derived_into_array_attributes() throws IOException, ParseException {
- Schema schema = SchemaBuilder.buildFromFile("src/test/derived/map_of_struct_attribute/test.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/derived/map_of_struct_attribute/test.sd");
Iterator<Attribute> attributes = new AttributeFields(schema).attributeIterator();
assertAttribute("str_elem_map.key", Attribute.Type.STRING, Attribute.CollectionType.ARRAY, true, attributes.next());
@@ -101,7 +101,7 @@ public class AttributeListTestCase extends AbstractSchemaTestCase {
@Test
public void only_zcurve_attribute_is_derived_from_array_of_position_field() throws ParseException {
- Schema schema = SchemaBuilder.createFromString(
+ Schema schema = ApplicationBuilder.createFromString(
joinLines("search test {",
" document test {",
" field pos_array type array<position> {",
@@ -117,7 +117,7 @@ public class AttributeListTestCase extends AbstractSchemaTestCase {
@Test
public void fields_in_map_of_primitive_are_derived_into_array_attributes() throws IOException, ParseException {
- Schema schema = SchemaBuilder.buildFromFile("src/test/derived/map_attribute/test.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/derived/map_attribute/test.sd");
Iterator<Attribute> attributes = new AttributeFields(schema).attributeIterator();
assertAttribute("str_map.key", Attribute.Type.STRING, Attribute.CollectionType.ARRAY, true, attributes.next());
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/CasingTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/CasingTestCase.java
index 06d72bb6972..ee9a9eac02c 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/CasingTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/CasingTestCase.java
@@ -2,7 +2,7 @@
package com.yahoo.searchdefinition.derived;
import com.yahoo.searchdefinition.Schema;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.AbstractSchemaTestCase;
import com.yahoo.searchdefinition.parser.ParseException;
import org.junit.Test;
@@ -20,7 +20,7 @@ public class CasingTestCase extends AbstractSchemaTestCase {
@Test
public void testCasing() throws IOException, ParseException {
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/casing.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/casing.sd");
assertEquals(schema.getIndex("color").getName(), "color");
assertEquals(schema.getIndex("Foo").getName(), "Foo");
assertEquals(schema.getIndex("Price").getName(), "Price");
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/EmptyRankProfileTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/EmptyRankProfileTestCase.java
index 604082fb52e..237e6c8c992 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/EmptyRankProfileTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/EmptyRankProfileTestCase.java
@@ -1,11 +1,12 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
+import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.document.DataType;
import com.yahoo.search.query.profile.QueryProfileRegistry;
import com.yahoo.searchdefinition.RankProfileRegistry;
import com.yahoo.searchdefinition.Schema;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.AbstractSchemaTestCase;
import com.yahoo.searchdefinition.document.SDDocumentType;
import com.yahoo.searchdefinition.document.SDField;
@@ -20,7 +21,7 @@ public class EmptyRankProfileTestCase extends AbstractSchemaTestCase {
@Test
public void testDeriving() {
- Schema schema = new Schema("test");
+ Schema schema = new Schema("test", MockApplicationPackage.createEmpty());
RankProfileRegistry rankProfileRegistry = RankProfileRegistry.createRankProfileRegistryWithBuiltinRankProfiles(schema);
SDDocumentType doc = new SDDocumentType("test");
schema.addDocument(doc);
@@ -30,7 +31,7 @@ public class EmptyRankProfileTestCase extends AbstractSchemaTestCase {
doc.addField(field);
doc.addField(new SDField("c", DataType.STRING));
- schema = SchemaBuilder.buildFromRawSchema(schema, rankProfileRegistry, new QueryProfileRegistry());
+ schema = ApplicationBuilder.buildFromRawSchema(schema, rankProfileRegistry, new QueryProfileRegistry());
new DerivedConfiguration(schema, rankProfileRegistry);
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/ExportingTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/ExportingTestCase.java
index 8cc8967269a..05f8f1a6b93 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/ExportingTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/ExportingTestCase.java
@@ -2,7 +2,7 @@
package com.yahoo.searchdefinition.derived;
import com.yahoo.config.model.deploy.TestProperties;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.parser.ParseException;
import org.junit.Test;
@@ -24,27 +24,32 @@ public class ExportingTestCase extends AbstractExportingTestCase {
@Test
public void testPositionArray() throws IOException, ParseException {
- assertCorrectDeriving("position_array");
+ assertCorrectDeriving("position_array",
+ new TestProperties().setUseV8GeoPositions(true));
}
@Test
public void testPositionAttribute() throws IOException, ParseException {
- assertCorrectDeriving("position_attribute");
+ assertCorrectDeriving("position_attribute",
+ new TestProperties().setUseV8GeoPositions(true));
}
@Test
public void testPositionExtra() throws IOException, ParseException {
- assertCorrectDeriving("position_extra");
+ assertCorrectDeriving("position_extra",
+ new TestProperties().setUseV8GeoPositions(true));
}
@Test
public void testPositionNoSummary() throws IOException, ParseException {
- assertCorrectDeriving("position_nosummary");
+ assertCorrectDeriving("position_nosummary",
+ new TestProperties().setUseV8GeoPositions(true));
}
@Test
public void testPositionSummary() throws IOException, ParseException {
- assertCorrectDeriving("position_summary");
+ assertCorrectDeriving("position_summary",
+ new TestProperties().setUseV8GeoPositions(true));
}
@Test
@@ -152,10 +157,10 @@ public class ExportingTestCase extends AbstractExportingTestCase {
@Test
public void testTensor2() throws IOException, ParseException {
String dir = "src/test/derived/tensor2/";
- SchemaBuilder builder = new SchemaBuilder();
- builder.importFile(dir + "first.sd");
- builder.importFile(dir + "second.sd");
- builder.build();
+ ApplicationBuilder builder = new ApplicationBuilder();
+ builder.addSchemaFile(dir + "first.sd");
+ builder.addSchemaFile(dir + "second.sd");
+ builder.build(true);
derive("tensor2", builder, builder.getSchema("second"));
assertCorrectConfigFiles("tensor2");
}
@@ -177,4 +182,9 @@ public class ExportingTestCase extends AbstractExportingTestCase {
assertEquals(0, logger.warnings.size());
}
+ @Test
+ public void testRankProfileModularity() throws IOException, ParseException {
+ assertCorrectDeriving("rankprofilemodularity");
+ }
+
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/IdTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/IdTestCase.java
index b262ef92e1a..440f067dd00 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/IdTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/IdTestCase.java
@@ -2,6 +2,7 @@
package com.yahoo.searchdefinition.derived;
import com.yahoo.config.model.application.provider.BaseDeployLogger;
+import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.document.DataType;
import com.yahoo.searchdefinition.RankProfileRegistry;
import com.yahoo.searchdefinition.Schema;
@@ -25,7 +26,7 @@ public class IdTestCase extends AbstractExportingTestCase {
@Test
public void testExplicitUpperCaseIdField() {
- Schema schema = new Schema("test");
+ Schema schema = new Schema("test", MockApplicationPackage.createEmpty());
SDDocumentType document = new SDDocumentType("test");
schema.addDocument(document);
SDField uri = new SDField("URI", DataType.URI);
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/InheritanceTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/InheritanceTestCase.java
index f00072a5a19..bcf68387294 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/InheritanceTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/InheritanceTestCase.java
@@ -1,11 +1,12 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
+import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.document.DataType;
import com.yahoo.document.config.DocumentmanagerConfig;
import com.yahoo.searchdefinition.Index;
import com.yahoo.searchdefinition.Schema;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.document.SDDocumentType;
import com.yahoo.searchdefinition.document.SDField;
import com.yahoo.searchdefinition.parser.ParseException;
@@ -40,10 +41,10 @@ public class InheritanceTestCase extends AbstractExportingTestCase {
@Test
public void requireThatIndexedStructFieldCanBeInherited() throws IOException, ParseException {
String dir = "src/test/derived/inheritstruct/";
- SchemaBuilder builder = new SchemaBuilder();
- builder.importFile(dir + "parent.sd");
- builder.importFile(dir + "child.sd");
- builder.build();
+ ApplicationBuilder builder = new ApplicationBuilder();
+ builder.addSchemaFile(dir + "parent.sd");
+ builder.addSchemaFile(dir + "child.sd");
+ builder.build(true);
derive("inheritstruct", builder, builder.getSchema("child"));
assertCorrectConfigFiles("inheritstruct");
}
@@ -52,7 +53,7 @@ public class InheritanceTestCase extends AbstractExportingTestCase {
public void requireThatInheritFromNullIsCaught() throws IOException, ParseException {
try {
assertCorrectDeriving("inheritfromnull");
- } catch (IllegalStateException e) {
+ } catch (IllegalArgumentException e) {
assertEquals("Document type 'foo' not found", e.getMessage());
}
}
@@ -63,12 +64,12 @@ public class InheritanceTestCase extends AbstractExportingTestCase {
List<String> files = Arrays.asList("grandparent.sd", "mother.sd", "father.sd", "child.sd");
File outDir = tmpDir.newFolder("out");
for (int startIdx = 0; startIdx < files.size(); ++startIdx) {
- SchemaBuilder builder = new SchemaBuilder();
+ ApplicationBuilder builder = new ApplicationBuilder();
for (int fileIdx = startIdx; fileIdx < startIdx + files.size(); ++fileIdx) {
String fileName = files.get(fileIdx % files.size());
- builder.importFile(dir + fileName);
+ builder.addSchemaFile(dir + fileName);
}
- builder.build();
+ builder.build(true);
DocumentmanagerConfig.Builder b = new DocumentmanagerConfig.Builder();
DerivedConfiguration.exportDocuments(new DocumentManager().produce(builder.getModel(), b), outDir.getPath());
DocumentmanagerConfig dc = b.build();
@@ -110,10 +111,10 @@ public class InheritanceTestCase extends AbstractExportingTestCase {
@Test
public void requireThatStructTypesAreInheritedFromParent() throws IOException, ParseException {
String dir = "src/test/derived/inheritfromparent/";
- SchemaBuilder builder = new SchemaBuilder();
- builder.importFile(dir + "parent.sd");
- builder.importFile(dir + "child.sd");
- builder.build();
+ ApplicationBuilder builder = new ApplicationBuilder();
+ builder.addSchemaFile(dir + "parent.sd");
+ builder.addSchemaFile(dir + "child.sd");
+ builder.build(true);
derive("inheritfromparent", builder, builder.getSchema("child"));
assertCorrectConfigFiles("inheritfromparent");
}
@@ -121,11 +122,11 @@ public class InheritanceTestCase extends AbstractExportingTestCase {
@Test
public void requireThatStructTypesAreInheritedFromGrandParent() throws IOException, ParseException {
String dir = "src/test/derived/inheritfromgrandparent/";
- SchemaBuilder builder = new SchemaBuilder();
- builder.importFile(dir + "grandparent.sd");
- builder.importFile(dir + "parent.sd");
- builder.importFile(dir + "child.sd");
- builder.build();
+ ApplicationBuilder builder = new ApplicationBuilder();
+ builder.addSchemaFile(dir + "grandparent.sd");
+ builder.addSchemaFile(dir + "parent.sd");
+ builder.addSchemaFile(dir + "child.sd");
+ builder.build(true);
derive("inheritfromgrandparent", builder, builder.getSchema("child"));
assertCorrectConfigFiles("inheritfromgrandparent");
}
@@ -133,12 +134,12 @@ public class InheritanceTestCase extends AbstractExportingTestCase {
@Test
public void testInheritance() throws IOException, ParseException {
String dir = "src/test/derived/inheritance/";
- SchemaBuilder builder = new SchemaBuilder();
- builder.importFile(dir + "grandparent.sd");
- builder.importFile(dir + "father.sd");
- builder.importFile(dir + "mother.sd");
- builder.importFile(dir + "child.sd");
- builder.build();
+ ApplicationBuilder builder = new ApplicationBuilder();
+ builder.addSchemaFile(dir + "grandparent.sd");
+ builder.addSchemaFile(dir + "father.sd");
+ builder.addSchemaFile(dir + "mother.sd");
+ builder.addSchemaFile(dir + "child.sd");
+ builder.build(true);
derive("inheritance", builder, builder.getSchema("child"));
assertCorrectConfigFiles("inheritance");
}
@@ -146,7 +147,7 @@ public class InheritanceTestCase extends AbstractExportingTestCase {
@Test
public void testIndexSettingInheritance() {
SDDocumentType parent = new SDDocumentType("parent");
- Schema parentSchema = new Schema("parent");
+ Schema parentSchema = new Schema("parent", MockApplicationPackage.createEmpty());
parentSchema.addDocument(parent);
SDField prefixed = parent.addField("prefixed", DataType.STRING);
prefixed.parseIndexingScript("{ index }");
@@ -154,7 +155,7 @@ public class InheritanceTestCase extends AbstractExportingTestCase {
SDDocumentType child = new SDDocumentType("child");
child.inherit(parent);
- Schema childSchema = new Schema("child");
+ Schema childSchema = new Schema("child", MockApplicationPackage.createEmpty());
childSchema.addDocument(child);
prefixed = (SDField)child.getField("prefixed");
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/LiteralBoostTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/LiteralBoostTestCase.java
index f8f1bf9e4f1..1e7dd3a2405 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/LiteralBoostTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/LiteralBoostTestCase.java
@@ -2,12 +2,13 @@
package com.yahoo.searchdefinition.derived;
import com.yahoo.config.model.application.provider.BaseDeployLogger;
+import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.document.DataType;
import com.yahoo.search.query.profile.QueryProfileRegistry;
import com.yahoo.searchdefinition.RankProfile;
import com.yahoo.searchdefinition.RankProfileRegistry;
import com.yahoo.searchdefinition.Schema;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.document.SDDocumentType;
import com.yahoo.searchdefinition.document.SDField;
import com.yahoo.searchdefinition.processing.Processing;
@@ -30,7 +31,7 @@ public class LiteralBoostTestCase extends AbstractExportingTestCase {
*/
@Test
public void testLiteralBoost() {
- Schema schema = new Schema("literalboost");
+ Schema schema = new Schema("literalboost", MockApplicationPackage.createEmpty());
RankProfileRegistry rankProfileRegistry = RankProfileRegistry.createRankProfileRegistryWithBuiltinRankProfiles(schema);
SDDocumentType document = new SDDocumentType("literalboost");
schema.addDocument(document);
@@ -63,7 +64,7 @@ public class LiteralBoostTestCase extends AbstractExportingTestCase {
*/
@Test
public void testNonDefaultRankLiteralBoost() {
- Schema schema = new Schema("literalboost");
+ Schema schema = new Schema("literalboost", MockApplicationPackage.createEmpty());
RankProfileRegistry rankProfileRegistry = RankProfileRegistry.createRankProfileRegistryWithBuiltinRankProfiles(schema);
SDDocumentType document = new SDDocumentType("literalboost");
schema.addDocument(document);
@@ -73,7 +74,7 @@ public class LiteralBoostTestCase extends AbstractExportingTestCase {
rankProfileRegistry.add(other);
other.addRankSetting(new RankProfile.RankSetting("a", RankProfile.RankSetting.Type.LITERALBOOST, 333));
- schema = SchemaBuilder.buildFromRawSchema(schema, rankProfileRegistry, new QueryProfileRegistry());
+ schema = ApplicationBuilder.buildFromRawSchema(schema, rankProfileRegistry, new QueryProfileRegistry());
DerivedConfiguration derived = new DerivedConfiguration(schema, rankProfileRegistry);
// Check il script addition
@@ -89,7 +90,7 @@ public class LiteralBoostTestCase extends AbstractExportingTestCase {
/** Tests literal boosts in two fields going to the same index */
@Test
public void testTwoLiteralBoostFields() {
- Schema schema = new Schema("msb");
+ Schema schema = new Schema("msb", MockApplicationPackage.createEmpty());
RankProfileRegistry rankProfileRegistry = RankProfileRegistry.createRankProfileRegistryWithBuiltinRankProfiles(schema);
SDDocumentType document = new SDDocumentType("msb");
schema.addDocument(document);
@@ -100,7 +101,7 @@ public class LiteralBoostTestCase extends AbstractExportingTestCase {
field2.parseIndexingScript("{ summary | index }");
field2.setLiteralBoost(20);
- schema = SchemaBuilder.buildFromRawSchema(schema, rankProfileRegistry, new QueryProfileRegistry());
+ schema = ApplicationBuilder.buildFromRawSchema(schema, rankProfileRegistry, new QueryProfileRegistry());
new DerivedConfiguration(schema, rankProfileRegistry);
assertIndexing(Arrays.asList("clear_state | guard { input title | tokenize normalize stem:\"BEST\" | summary title | index title; }",
"clear_state | guard { input body | tokenize normalize stem:\"BEST\" | summary body | index body; }",
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/MailTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/MailTestCase.java
index 9ad6dfbb972..53bf55fc73f 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/MailTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/MailTestCase.java
@@ -1,7 +1,7 @@
// Copyright Yahoo. 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.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.parser.ParseException;
import org.junit.Test;
import java.io.IOException;
@@ -16,8 +16,8 @@ public class MailTestCase extends AbstractExportingTestCase {
@Test
public void testMail() throws IOException, ParseException {
String dir = "src/test/derived/mail/";
- SchemaBuilder sb = new SchemaBuilder();
- sb.importFile(dir + "mail.sd");
+ ApplicationBuilder sb = new ApplicationBuilder();
+ sb.addSchemaFile(dir + "mail.sd");
assertCorrectDeriving(sb, dir, new TestableDeployLogger());
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/MultipleSummariesTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/MultipleSummariesTestCase.java
index 51135ae1cb2..0e6d7b8442f 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/MultipleSummariesTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/MultipleSummariesTestCase.java
@@ -2,7 +2,6 @@
package com.yahoo.searchdefinition.derived;
import com.yahoo.searchdefinition.parser.ParseException;
-import org.junit.Ignore;
import org.junit.Test;
import java.io.IOException;
@@ -14,7 +13,6 @@ import java.io.IOException;
*/
public class MultipleSummariesTestCase extends AbstractExportingTestCase {
@Test
- @Ignore
public void testMultipleSummaries() throws IOException, ParseException {
assertCorrectDeriving("multiplesummaries");
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/SchemaInheritanceTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/SchemaInheritanceTestCase.java
index c7297c41c62..a458036a03f 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/SchemaInheritanceTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/SchemaInheritanceTestCase.java
@@ -4,7 +4,7 @@ package com.yahoo.searchdefinition.derived;
import com.yahoo.config.model.application.provider.MockFileRegistry;
import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.io.IOUtils;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.parser.ParseException;
import org.junit.Test;
@@ -19,10 +19,10 @@ public class SchemaInheritanceTestCase extends AbstractExportingTestCase {
@Test
public void testIt() throws IOException, ParseException {
try {
- SchemaBuilder builder = SchemaBuilder.createFromDirectory("src/test/derived/schemainheritance/",
- new MockFileRegistry(),
- new TestableDeployLogger(),
- new TestProperties());
+ ApplicationBuilder builder = ApplicationBuilder.createFromDirectory("src/test/derived/schemainheritance/",
+ new MockFileRegistry(),
+ new TestableDeployLogger(),
+ new TestProperties());
derive("schemainheritance", builder, builder.getSchema("child"));
assertCorrectConfigFiles("schemainheritance");
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/SchemaOrdererTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/SchemaOrdererTestCase.java
index b3f2fb62ac2..34d33a00d9e 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/SchemaOrdererTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/SchemaOrdererTestCase.java
@@ -1,6 +1,7 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
+import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.document.ReferenceDataType;
import com.yahoo.document.TemporaryStructuredDataType;
import com.yahoo.searchdefinition.DocumentReference;
@@ -62,7 +63,7 @@ public class SchemaOrdererTestCase extends AbstractSchemaTestCase {
}
private static Schema createSchema(String name, Map<String, Schema> schemas) {
- Schema schema = new Schema(name);
+ Schema schema = new Schema(name, MockApplicationPackage.createEmpty());
SDDocumentType document = new SDDocumentType(name);
document.setDocumentReferences(new DocumentReferences(emptyMap()));
schema.addDocument(document);
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/SimpleInheritTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/SimpleInheritTestCase.java
index c0f2b6887d2..d89e5f2c957 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/SimpleInheritTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/SimpleInheritTestCase.java
@@ -2,7 +2,7 @@
package com.yahoo.searchdefinition.derived;
import com.yahoo.searchdefinition.Schema;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.parser.ParseException;
import org.junit.Test;
@@ -19,10 +19,10 @@ public class SimpleInheritTestCase extends AbstractExportingTestCase {
String name = "emptychild";
final String expectedResultsDirName = "src/test/derived/" + name + "/";
- SchemaBuilder builder = new SchemaBuilder();
- builder.importFile(expectedResultsDirName + "parent.sd");
- builder.importFile(expectedResultsDirName + "child.sd");
- builder.build();
+ ApplicationBuilder builder = new ApplicationBuilder();
+ builder.addSchemaFile(expectedResultsDirName + "parent.sd");
+ builder.addSchemaFile(expectedResultsDirName + "child.sd");
+ builder.build(true);
Schema schema = builder.getSchema("child");
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/SliceTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/SliceTestCase.java
new file mode 100644
index 00000000000..e6c7efd7052
--- /dev/null
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/SliceTestCase.java
@@ -0,0 +1,27 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.searchdefinition.derived;
+
+import com.yahoo.component.ComponentId;
+import com.yahoo.search.Query;
+import com.yahoo.search.query.profile.compiled.CompiledQueryProfileRegistry;
+import com.yahoo.search.query.profile.config.QueryProfileConfigurer;
+import com.yahoo.searchdefinition.parser.ParseException;
+import com.yahoo.vespa.model.container.search.QueryProfiles;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * @author bratseth
+ */
+public class SliceTestCase extends AbstractExportingTestCase {
+
+ @Test
+ public void testSlice() throws IOException, ParseException {
+ ComponentId.resetGlobalCountersForTests();
+ DerivedConfiguration c = assertCorrectDeriving("slice");
+ }
+
+}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/StructInheritanceTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/StructInheritanceTestCase.java
index b2c2a54ce5e..1f6c70c9383 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/StructInheritanceTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/StructInheritanceTestCase.java
@@ -2,7 +2,7 @@
package com.yahoo.searchdefinition.derived;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.parser.ParseException;
import org.junit.Rule;
@@ -31,8 +31,8 @@ public class StructInheritanceTestCase extends AbstractExportingTestCase {
@Test
public void requireThatStructCanInherit() throws IOException, ParseException {
String dir = "src/test/derived/structinheritance/";
- SchemaBuilder builder = new SchemaBuilder();
- builder.importFile(dir + "simple.sd");
+ ApplicationBuilder builder = new ApplicationBuilder();
+ builder.addSchemaFile(dir + "simple.sd");
builder.build(false);
derive("structinheritance", builder, builder.getSchema("simple"));
assertCorrectConfigFiles("structinheritance");
@@ -43,9 +43,9 @@ public class StructInheritanceTestCase extends AbstractExportingTestCase {
exceptionRule.expect(IllegalArgumentException.class);
exceptionRule.expectMessage("cannot inherit from base and redeclare field name");
String dir = "src/test/derived/structinheritance/";
- SchemaBuilder builder = new SchemaBuilder();
- builder.importFile(dir + "bad.sd");
- builder.build();
+ ApplicationBuilder builder = new ApplicationBuilder();
+ builder.addSchemaFile(dir + "bad.sd");
+ builder.build(true);
derive("structinheritance", builder, builder.getSchema("bad"));
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryMapTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryMapTestCase.java
index 4994cffb92a..c0fa3e8311f 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryMapTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryMapTestCase.java
@@ -1,6 +1,7 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
+import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.searchdefinition.*;
import com.yahoo.vespa.config.search.SummarymapConfig;
import com.yahoo.config.model.application.provider.BaseDeployLogger;
@@ -29,7 +30,7 @@ import static org.junit.Assert.assertTrue;
public class SummaryMapTestCase extends AbstractSchemaTestCase {
@Test
public void testDeriving() throws IOException, ParseException {
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/simple.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/simple.sd");
SummaryMap summaryMap=new SummaryMap(schema);
Iterator transforms=summaryMap.resultTransformIterator();
@@ -73,7 +74,7 @@ public class SummaryMapTestCase extends AbstractSchemaTestCase {
}
@Test
public void testPositionDeriving() {
- Schema schema = new Schema("store");
+ Schema schema = new Schema("store", MockApplicationPackage.createEmpty());
SDDocumentType document = new SDDocumentType("store");
schema.addDocument(document);
String fieldName = "location";
@@ -147,7 +148,7 @@ public class SummaryMapTestCase extends AbstractSchemaTestCase {
@Test
public void testFailOnSummaryFieldSourceCollision() {
try {
- SchemaBuilder.buildFromFile("src/test/examples/summaryfieldcollision.sd");
+ ApplicationBuilder.buildFromFile("src/test/examples/summaryfieldcollision.sd");
} catch (Exception e) {
assertTrue(e.getMessage().matches(".*equally named field.*"));
}
@@ -189,13 +190,13 @@ public class SummaryMapTestCase extends AbstractSchemaTestCase {
}
private Schema buildSearch(String field) throws ParseException {
- var builder = new SchemaBuilder(new RankProfileRegistry());
- builder.importString(joinLines("search test {",
- " document test {",
- field,
- " }",
- "}"));
- builder.build();
+ var builder = new ApplicationBuilder(new RankProfileRegistry());
+ builder.addSchema(joinLines("search test {",
+ " document test {",
+ field,
+ " }",
+ "}"));
+ builder.build(true);
return builder.getSchema();
}
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 c996fb0c1b9..9a36ef90cd7 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
@@ -3,7 +3,7 @@ package com.yahoo.searchdefinition.derived;
import com.yahoo.config.model.application.provider.BaseDeployLogger;
import com.yahoo.searchdefinition.Schema;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.AbstractSchemaTestCase;
import com.yahoo.searchdefinition.parser.ParseException;
import com.yahoo.vespa.config.search.SummaryConfig;
@@ -35,7 +35,7 @@ public class SummaryTestCase extends AbstractSchemaTestCase {
" }",
" }",
"}");
- Schema schema = SchemaBuilder.createFromString(sd).getSchema();
+ Schema schema = ApplicationBuilder.createFromString(sd).getSchema();
SummaryClass summary = new SummaryClass(schema, schema.getSummary("default"), new BaseDeployLogger());
assertEquals(SummaryClassField.Type.RAW, summary.getField("raw_field").getType());
}
@@ -50,14 +50,14 @@ public class SummaryTestCase extends AbstractSchemaTestCase {
" }",
" }",
"}");
- Schema schema = SchemaBuilder.createFromString(sd).getSchema();
+ Schema schema = ApplicationBuilder.createFromString(sd).getSchema();
SummaryClass summary = new SummaryClass(schema, schema.getSummary("default"), new BaseDeployLogger());
assertEquals(SummaryClassField.Type.DATA, summary.getField("raw_field").getType());
}
@Test
public void testDeriving() throws IOException, ParseException {
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/simple.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/simple.sd");
SummaryClass summary = new SummaryClass(schema, schema.getSummary("default"), new BaseDeployLogger());
assertEquals("default", summary.getName());
@@ -134,22 +134,22 @@ public class SummaryTestCase extends AbstractSchemaTestCase {
}
private static Schema buildCampaignAdModel() throws ParseException {
- SchemaBuilder builder = new SchemaBuilder();
- builder.importString("search campaign { document campaign {} }");
- builder.importString(joinLines("search ad {",
- " document ad {",
- " field campaign_ref type reference<campaign> {",
- " indexing: summary | attribute",
- " }",
- " field other_campaign_ref type reference<campaign> {",
- " indexing: summary | attribute",
- " }",
- " }",
- " document-summary my_summary {",
- " summary other_campaign_ref type reference<campaign> {}",
- " }",
- "}"));
- builder.build();
+ ApplicationBuilder builder = new ApplicationBuilder();
+ builder.addSchema("search campaign { document campaign {} }");
+ builder.addSchema(joinLines("search ad {",
+ " document ad {",
+ " field campaign_ref type reference<campaign> {",
+ " indexing: summary | attribute",
+ " }",
+ " field other_campaign_ref type reference<campaign> {",
+ " indexing: summary | attribute",
+ " }",
+ " }",
+ " document-summary my_summary {",
+ " summary other_campaign_ref type reference<campaign> {}",
+ " }",
+ "}"));
+ builder.build(true);
return builder.getSchema("ad");
}
@@ -168,7 +168,7 @@ public class SummaryTestCase extends AbstractSchemaTestCase {
" summary foo type string {}",
" }",
"}");
- var search = SchemaBuilder.createFromString(sd).getSchema();
+ var search = ApplicationBuilder.createFromString(sd).getSchema();
assertOmitSummaryFeatures(true, search, "bar");
assertOmitSummaryFeatures(false, search, "baz");
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/TwoStreamingStructsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/TwoStreamingStructsTestCase.java
index c3a78bab441..4e629fcb4d8 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/TwoStreamingStructsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/TwoStreamingStructsTestCase.java
@@ -1,7 +1,7 @@
// Copyright Yahoo. 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.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.parser.ParseException;
import org.junit.Test;
@@ -13,20 +13,22 @@ import java.io.IOException;
* @author arnej27959
*/
public class TwoStreamingStructsTestCase extends AbstractExportingTestCase {
+
@Test
public void testTwoStreamingStructsExporting() throws ParseException, IOException {
String root = "src/test/derived/twostreamingstructs";
- SchemaBuilder builder = new SchemaBuilder();
- builder.importFile(root + "/streamingstruct.sd");
- builder.importFile(root + "/whatever.sd");
- builder.build();
+ ApplicationBuilder builder = new ApplicationBuilder();
+ builder.addSchemaFile(root + "/streamingstruct.sd");
+ builder.addSchemaFile(root + "/whatever.sd");
+ builder.build(true);
assertCorrectDeriving(builder, builder.getSchema("streamingstruct"), root);
- builder = new SchemaBuilder();
- builder.importFile(root + "/streamingstruct.sd");
- builder.importFile(root + "/whatever.sd");
- builder.build();
+ builder = new ApplicationBuilder();
+ builder.addSchemaFile(root + "/streamingstruct.sd");
+ builder.addSchemaFile(root + "/whatever.sd");
+ builder.build(true);
assertCorrectDeriving(builder, builder.getSchema("streamingstruct"), root);
}
+
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/TypeConversionTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/TypeConversionTestCase.java
index 13289d72884..dbb32e61144 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/TypeConversionTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/TypeConversionTestCase.java
@@ -2,6 +2,7 @@
package com.yahoo.searchdefinition.derived;
import com.yahoo.config.model.application.provider.BaseDeployLogger;
+import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.document.DataType;
import com.yahoo.searchdefinition.RankProfileRegistry;
import com.yahoo.searchdefinition.Schema;
@@ -25,7 +26,7 @@ public class TypeConversionTestCase extends AbstractSchemaTestCase {
/** Tests that exact-string stuff is not spilled over to the default index */
@Test
public void testExactStringToStringTypeConversion() {
- Schema schema = new Schema("test");
+ Schema schema = new Schema("test", MockApplicationPackage.createEmpty());
RankProfileRegistry rankProfileRegistry = RankProfileRegistry.createRankProfileRegistryWithBuiltinRankProfiles(schema);
SDDocumentType document = new SDDocumentType("test");
schema.addDocument(document);
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/VsmFieldsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/VsmFieldsTestCase.java
index 138992477c0..5ab5a8057e8 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/VsmFieldsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/VsmFieldsTestCase.java
@@ -24,7 +24,7 @@ public class VsmFieldsTestCase {
@SuppressWarnings("deprecation")
@Test
public void reference_type_field_is_unsearchable() {
- Schema schema = new Schema("test", new Application(MockApplicationPackage.createEmpty()), new MockFileRegistry(), new TestableDeployLogger(), new TestProperties());
+ Schema schema = new Schema("test", MockApplicationPackage.createEmpty(), new MockFileRegistry(), new TestableDeployLogger(), new TestProperties());
schema.addDocument(new SDDocumentType("test"));
SDField refField = new TemporarySDField("ref_field", ReferenceDataType.createWithInferredId(TemporaryStructuredDataType.create("parent_type")));
refField.parseIndexingScript("{ summary }");
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/document/ComplexAttributeFieldUtilsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/document/ComplexAttributeFieldUtilsTestCase.java
index 481a4db11ec..99692e70041 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/document/ComplexAttributeFieldUtilsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/document/ComplexAttributeFieldUtilsTestCase.java
@@ -2,7 +2,7 @@
package com.yahoo.searchdefinition.document;
import com.yahoo.searchdefinition.Schema;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.parser.ParseException;
import org.junit.Test;
@@ -17,7 +17,7 @@ public class ComplexAttributeFieldUtilsTestCase {
private final ImmutableSDField field;
FixtureBase(String fieldName, String sdContent) throws ParseException {
- Schema schema = SchemaBuilder.createFromString(sdContent).getSchema();
+ Schema schema = ApplicationBuilder.createFromString(sdContent).getSchema();
field = schema.getConcreteField(fieldName);
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/AddAttributeTransformToSummaryOfImportedFieldsTest.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/AddAttributeTransformToSummaryOfImportedFieldsTest.java
index 715b7b803e2..9ca97f4dbc7 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/AddAttributeTransformToSummaryOfImportedFieldsTest.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/AddAttributeTransformToSummaryOfImportedFieldsTest.java
@@ -48,7 +48,7 @@ public class AddAttributeTransformToSummaryOfImportedFieldsTest {
}
private static Schema createSearch(String documentType) {
- return new Schema(documentType, new Application(MockApplicationPackage.createEmpty()), new MockFileRegistry(), new TestableDeployLogger(), new TestProperties());
+ return new Schema(documentType, MockApplicationPackage.createEmpty(), new MockFileRegistry(), new TestableDeployLogger(), new TestProperties());
}
private static Schema createSearchWithDocument(String documentName) {
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/AssertSearchBuilder.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/AssertSearchBuilder.java
index 6a736a5331e..534c82157e4 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/AssertSearchBuilder.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/AssertSearchBuilder.java
@@ -1,7 +1,7 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.parser.ParseException;
import java.io.IOException;
@@ -14,13 +14,13 @@ import static org.junit.Assert.*;
public abstract class AssertSearchBuilder {
public static void assertBuilds(String searchDefinitionFileName) throws IOException, ParseException {
- assertNotNull(SchemaBuilder.buildFromFile(searchDefinitionFileName));
+ assertNotNull(ApplicationBuilder.buildFromFile(searchDefinitionFileName));
}
public static void assertBuildFails(String searchDefinitionFileName, String expectedException)
throws IOException, ParseException {
try {
- SchemaBuilder.buildFromFile(searchDefinitionFileName);
+ ApplicationBuilder.buildFromFile(searchDefinitionFileName);
fail(searchDefinitionFileName);
} catch (IllegalArgumentException e) {
assertEquals(expectedException, e.getMessage());
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/AttributesExactMatchTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/AttributesExactMatchTestCase.java
index f1aa64c1a60..67b369fd951 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/AttributesExactMatchTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/AttributesExactMatchTestCase.java
@@ -2,7 +2,7 @@
package com.yahoo.searchdefinition.processing;
import com.yahoo.searchdefinition.Schema;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.AbstractSchemaTestCase;
import com.yahoo.searchdefinition.document.Matching;
import com.yahoo.searchdefinition.parser.ParseException;
@@ -20,7 +20,7 @@ import static org.junit.Assert.assertFalse;
public class AttributesExactMatchTestCase extends AbstractSchemaTestCase {
@Test
public void testAttributesExactMatch() throws IOException, ParseException {
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/attributesexactmatch.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/attributesexactmatch.sd");
assertEquals(schema.getConcreteField("color").getMatching().getType(), Matching.Type.EXACT);
assertEquals(schema.getConcreteField("artist").getMatching().getType(), Matching.Type.WORD);
assertEquals(schema.getConcreteField("drummer").getMatching().getType(), Matching.Type.WORD);
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/BoldingTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/BoldingTestCase.java
index f74e46d92dc..efec9206ed9 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/BoldingTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/BoldingTestCase.java
@@ -1,7 +1,7 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.AbstractSchemaTestCase;
import com.yahoo.searchdefinition.parser.ParseException;
import org.junit.Test;
@@ -31,7 +31,7 @@ public class BoldingTestCase extends AbstractSchemaTestCase {
@Test
public void testBoldOnNonString() throws ParseException {
try {
- SchemaBuilder.createFromString(boldonnonstring);
+ ApplicationBuilder.createFromString(boldonnonstring);
fail("Expected exception");
} catch (IllegalArgumentException e) {
assertEquals("'bolding: on' for non-text field 'year4' (datatype int (code: 0)) is not allowed",
@@ -52,7 +52,7 @@ public class BoldingTestCase extends AbstractSchemaTestCase {
@Test
public void testBoldOnArray() throws ParseException {
try {
- SchemaBuilder.createFromString(boldonarray);
+ ApplicationBuilder.createFromString(boldonarray);
fail("Expected exception");
} catch (IllegalArgumentException e) {
assertEquals("'bolding: on' for non-text field 'myarray' (datatype Array<string> (code: -1486737430)) is not allowed",
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/BoolAttributeValidatorTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/BoolAttributeValidatorTestCase.java
index 342ff4ba2d4..db27bbbb84d 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/BoolAttributeValidatorTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/BoolAttributeValidatorTestCase.java
@@ -4,7 +4,7 @@ package com.yahoo.searchdefinition.processing;
import com.yahoo.searchdefinition.parser.ParseException;
import org.junit.Test;
-import static com.yahoo.searchdefinition.SchemaBuilder.createFromString;
+import static com.yahoo.searchdefinition.ApplicationBuilder.createFromString;
import static com.yahoo.config.model.test.TestUtil.joinLines;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/DictionaryTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/DictionaryTestCase.java
index 6f8ab24de8e..a17992fad18 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/DictionaryTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/DictionaryTestCase.java
@@ -4,7 +4,7 @@ package com.yahoo.searchdefinition.processing;
import com.yahoo.config.model.test.TestUtil;
import com.yahoo.searchdefinition.Schema;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.derived.AttributeFields;
import com.yahoo.searchdefinition.document.Case;
import com.yahoo.searchdefinition.document.Dictionary;
@@ -30,7 +30,7 @@ public class DictionaryTestCase {
return builder.build();
}
private Schema createSearch(String def) throws ParseException {
- SchemaBuilder sb = SchemaBuilder.createFromString(def);
+ ApplicationBuilder sb = ApplicationBuilder.createFromString(def);
return sb.getSchema();
}
@Test
@@ -196,7 +196,7 @@ public class DictionaryTestCase {
" }",
"}");
try {
- SchemaBuilder sb = SchemaBuilder.createFromString(def);
+ ApplicationBuilder sb = ApplicationBuilder.createFromString(def);
fail("Controlling dictionary for non-numeric fields are not yet supported.");
} catch (IllegalArgumentException e) {
assertEquals("For schema 'test', field 'n1': You can only specify 'dictionary:' for numeric or string fields", e.getMessage());
@@ -214,7 +214,7 @@ public class DictionaryTestCase {
" }",
"}");
try {
- SchemaBuilder sb = SchemaBuilder.createFromString(def);
+ ApplicationBuilder sb = ApplicationBuilder.createFromString(def);
fail("Controlling dictionary for non-fast-search fields are not allowed.");
} catch (IllegalArgumentException e) {
assertEquals("For schema 'test', field 'n1': You must specify 'attribute:fast-search' to allow dictionary control", e.getMessage());
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/DisallowComplexMapAndWsetKeyTypesTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/DisallowComplexMapAndWsetKeyTypesTestCase.java
index 03125c48d1d..b03aff455c5 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/DisallowComplexMapAndWsetKeyTypesTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/DisallowComplexMapAndWsetKeyTypesTestCase.java
@@ -2,7 +2,7 @@
package com.yahoo.searchdefinition.processing;
import com.yahoo.searchdefinition.RankProfileRegistry;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.parser.ParseException;
import org.junit.Test;
@@ -43,15 +43,15 @@ public class DisallowComplexMapAndWsetKeyTypesTestCase {
private void testFieldType(String fieldType) throws ParseException {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(rankProfileRegistry);
- builder.importString(
+ ApplicationBuilder builder = new ApplicationBuilder(rankProfileRegistry);
+ builder.addSchema(
"search test {\n" +
" document test { \n" +
" struct mystruct {}\n" +
" field a type " + fieldType + " {}\n" +
" }\n" +
"}\n");
- builder.build();
+ builder.build(true);
}
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/FastAccessValidatorTest.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/FastAccessValidatorTest.java
index dd958fb34cd..0c25cef49a1 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/FastAccessValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/FastAccessValidatorTest.java
@@ -3,7 +3,7 @@ package com.yahoo.searchdefinition.processing;
import com.yahoo.config.model.test.TestUtil;
import com.yahoo.searchdefinition.RankProfileRegistry;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.parser.ParseException;
import org.junit.Rule;
import org.junit.Test;
@@ -20,15 +20,15 @@ public class FastAccessValidatorTest {
@Test
public void throws_exception_on_incompatible_use_of_fastaccess() throws ParseException {
- SchemaBuilder builder = new SchemaBuilder(new RankProfileRegistry());
- builder.importString(
+ ApplicationBuilder builder = new ApplicationBuilder(new RankProfileRegistry());
+ builder.addSchema(
TestUtil.joinLines(
"schema parent {",
" document parent {",
" field int_field type int { indexing: attribute }",
" }",
"}"));
- builder.importString(
+ builder.addSchema(
TestUtil.joinLines(
"schema test {",
" document test { ",
@@ -55,7 +55,7 @@ public class FastAccessValidatorTest {
"For schema 'test': The following attributes have a type that is incompatible " +
"with fast-access: predicate_attribute, tensor_attribute, reference_attribute. " +
"Predicate, tensor and reference attributes are incompatible with fast-access.");
- builder.build();
+ builder.build(true);
}
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitSchemaFieldsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitSchemaFieldsTestCase.java
index 43077fadfcd..833a6effe4a 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitSchemaFieldsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitSchemaFieldsTestCase.java
@@ -2,7 +2,7 @@
package com.yahoo.searchdefinition.processing;
import com.yahoo.searchdefinition.Schema;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.AbstractSchemaTestCase;
import com.yahoo.searchdefinition.derived.DerivedConfiguration;
import com.yahoo.searchdefinition.document.SDDocumentType;
@@ -18,7 +18,7 @@ public class ImplicitSchemaFieldsTestCase extends AbstractSchemaTestCase {
@Test
public void testRequireThatExtraFieldsAreIncluded() throws IOException, ParseException {
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/nextgen/extrafield.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/nextgen/extrafield.sd");
assertNotNull(schema);
SDDocumentType docType = schema.getDocument();
@@ -30,7 +30,7 @@ public class ImplicitSchemaFieldsTestCase extends AbstractSchemaTestCase {
@Test
public void testRequireThatSummaryFieldsAreIncluded() throws IOException, ParseException {
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/nextgen/summaryfield.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/nextgen/summaryfield.sd");
assertNotNull(schema);
SDDocumentType docType = schema.getDocument();
@@ -38,12 +38,14 @@ public class ImplicitSchemaFieldsTestCase extends AbstractSchemaTestCase {
assertNotNull(docType.getField("foo"));
assertNotNull(docType.getField("bar"));
assertNotNull(docType.getField("cox"));
- assertEquals(3, docType.getFieldCount());
+ assertNotNull(docType.getField("mytags"));
+ assertNotNull(docType.getField("alltags"));
+ assertEquals(5, docType.getFieldCount());
}
@Test
public void testRequireThatBoldedSummaryFieldsAreIncluded() throws IOException, ParseException {
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/nextgen/boldedsummaryfields.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/nextgen/boldedsummaryfields.sd");
assertNotNull(schema);
SDDocumentType docType = schema.getDocument();
@@ -57,7 +59,7 @@ public class ImplicitSchemaFieldsTestCase extends AbstractSchemaTestCase {
@Test
public void testRequireThatUntransformedSummaryFieldsAreIgnored() throws IOException, ParseException {
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/nextgen/untransformedsummaryfields.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/nextgen/untransformedsummaryfields.sd");
assertNotNull(schema);
SDDocumentType docType = schema.getDocument();
@@ -70,7 +72,7 @@ public class ImplicitSchemaFieldsTestCase extends AbstractSchemaTestCase {
@Test
public void testRequireThatDynamicSummaryFieldsAreIgnored() throws IOException, ParseException {
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/nextgen/dynamicsummaryfields.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/nextgen/dynamicsummaryfields.sd");
assertNotNull(schema);
SDDocumentType docType = schema.getDocument();
@@ -82,9 +84,9 @@ public class ImplicitSchemaFieldsTestCase extends AbstractSchemaTestCase {
@Test
public void testRequireThatDerivedConfigurationWorks() throws IOException, ParseException {
- SchemaBuilder sb = new SchemaBuilder();
- sb.importFile("src/test/examples/nextgen/simple.sd");
- sb.build();
+ ApplicationBuilder sb = new ApplicationBuilder();
+ sb.addSchemaFile("src/test/examples/nextgen/simple.sd");
+ sb.build(true);
assertNotNull(sb.getSchema());
new DerivedConfiguration(sb.getSchema(), sb.getRankProfileRegistry());
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitStructTypesTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitStructTypesTestCase.java
index bd645b68728..443eff07f41 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitStructTypesTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitStructTypesTestCase.java
@@ -3,7 +3,7 @@ package com.yahoo.searchdefinition.processing;
import com.yahoo.document.*;
import com.yahoo.searchdefinition.Schema;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.AbstractSchemaTestCase;
import com.yahoo.searchdefinition.document.SDDocumentType;
import com.yahoo.searchdefinition.document.SDField;
@@ -16,7 +16,7 @@ import static org.junit.Assert.*;
public class ImplicitStructTypesTestCase extends AbstractSchemaTestCase {
@Test
public void testRequireThatImplicitStructsAreCreated() throws IOException, ParseException {
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/nextgen/toggleon.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/nextgen/toggleon.sd");
assertNotNull(schema);
SDDocumentType docType = schema.getDocument();
@@ -25,7 +25,7 @@ public class ImplicitStructTypesTestCase extends AbstractSchemaTestCase {
}
@Test
public void testRequireThatImplicitStructsAreUsed() throws IOException, ParseException {
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/nextgen/implicitstructtypes.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/nextgen/implicitstructtypes.sd");
assertNotNull(schema);
SDDocumentType docType = schema.getDocument();
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitSummariesTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitSummariesTestCase.java
index 9c1e5d0d8d7..cc2bc7d7bf6 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitSummariesTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitSummariesTestCase.java
@@ -2,7 +2,7 @@
package com.yahoo.searchdefinition.processing;
import com.yahoo.searchdefinition.Schema;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.parser.ParseException;
import com.yahoo.vespa.documentmodel.SummaryTransform;
import org.junit.Test;
@@ -29,7 +29,7 @@ public class ImplicitSummariesTestCase {
LogHandler log = new LogHandler();
Logger.getLogger("").addHandler(log);
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/implicitsummaries_attribute.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/implicitsummaries_attribute.sd");
assertNotNull(schema);
assertTrue(log.records.isEmpty());
}
@@ -60,19 +60,19 @@ public class ImplicitSummariesTestCase {
@Test
public void attribute_combiner_transform_is_set_on_array_of_struct_with_only_struct_field_attributes() throws IOException, ParseException {
- Schema schema = SchemaBuilder.buildFromFile("src/test/derived/array_of_struct_attribute/test.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/derived/array_of_struct_attribute/test.sd");
assertEquals(SummaryTransform.ATTRIBUTECOMBINER, schema.getSummaryField("elem_array").getTransform());
}
@Test
public void attribute_combiner_transform_is_set_on_map_of_struct_with_only_struct_field_attributes() throws IOException, ParseException {
- Schema schema = SchemaBuilder.buildFromFile("src/test/derived/map_of_struct_attribute/test.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/derived/map_of_struct_attribute/test.sd");
assertEquals(SummaryTransform.ATTRIBUTECOMBINER, schema.getSummaryField("str_elem_map").getTransform());
}
@Test
public void attribute_combiner_transform_is_not_set_when_map_of_struct_has_some_struct_field_attributes() throws IOException, ParseException {
- Schema schema = SchemaBuilder.buildFromFile("src/test/derived/map_of_struct_attribute/test.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/derived/map_of_struct_attribute/test.sd");
assertEquals(SummaryTransform.NONE, schema.getSummaryField("int_elem_map").getTransform());
}
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitSummaryFieldsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitSummaryFieldsTestCase.java
index 44b1d9387f1..175b8d6fe1e 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitSummaryFieldsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitSummaryFieldsTestCase.java
@@ -2,7 +2,7 @@
package com.yahoo.searchdefinition.processing;
import com.yahoo.searchdefinition.Schema;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.AbstractSchemaTestCase;
import com.yahoo.searchdefinition.parser.ParseException;
import com.yahoo.vespa.documentmodel.DocumentSummary;
@@ -17,7 +17,7 @@ public class ImplicitSummaryFieldsTestCase extends AbstractSchemaTestCase {
@Test
public void testRequireThatImplicitFieldsAreCreated() throws IOException, ParseException {
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/implicitsummaryfields.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/implicitsummaryfields.sd");
assertNotNull(schema);
DocumentSummary docsum = schema.getSummary("default");
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsTestCase.java
index 6eab1dddc79..b15b81b717d 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsTestCase.java
@@ -2,7 +2,7 @@
package com.yahoo.searchdefinition.processing;
import com.yahoo.searchdefinition.Schema;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.derived.AttributeFields;
import com.yahoo.searchdefinition.document.ImportedComplexField;
import com.yahoo.searchdefinition.document.ImportedField;
@@ -68,21 +68,21 @@ public class ImportedFieldsTestCase {
}
private static Schema buildAdSearch(String sdContent) throws ParseException {
- SchemaBuilder builder = new SchemaBuilder();
- builder.importString(joinLines(
+ ApplicationBuilder builder = new ApplicationBuilder();
+ builder.addSchema(joinLines(
"schema campaign {",
" document campaign {",
" field budget type int { indexing: attribute }",
" }",
"}"));
- builder.importString(joinLines(
+ builder.addSchema(joinLines(
"schema person {",
" document person {",
" field name type string { indexing: attribute }",
" }",
"}"));
- builder.importString(sdContent);
- builder.build();
+ builder.addSchema(sdContent);
+ builder.build(true);
return builder.getSchema("ad");
}
@@ -312,19 +312,19 @@ public class ImportedFieldsTestCase {
}
private static Schema buildChildSearch(String parentSdContent, String sdContent) throws ParseException {
- SchemaBuilder builder = new SchemaBuilder();
- builder.importString(parentSdContent);
- builder.importString(sdContent);
- builder.build();
+ ApplicationBuilder builder = new ApplicationBuilder();
+ builder.addSchema(parentSdContent);
+ builder.addSchema(sdContent);
+ builder.build(true);
return builder.getSchema("child");
}
private static Schema buildChildSearch(String grandParentSdContent, String parentSdContent, String sdContent) throws ParseException {
- SchemaBuilder builder = new SchemaBuilder();
- builder.importString(grandParentSdContent);
- builder.importString(parentSdContent);
- builder.importString(sdContent);
- builder.build();
+ ApplicationBuilder builder = new ApplicationBuilder();
+ builder.addSchema(grandParentSdContent);
+ builder.addSchema(parentSdContent);
+ builder.addSchema(sdContent);
+ builder.build(true);
return builder.getSchema("child");
}
@@ -488,41 +488,41 @@ public class ImportedFieldsTestCase {
assertTrue(attrs.containsAttribute("entries.value"));
}
- private SchemaBuilder buildParentsUsingInheritance() throws ParseException {
- var builder = new SchemaBuilder();
- builder.importString(joinLines("schema parent_a {",
- "document parent_a {",
- " struct Entry {",
- " field key type string {}",
- " field value type string {}",
- " }",
- " field entries type array<Entry> {",
- " indexing: summary",
- " struct-field key { indexing: attribute }",
- " struct-field value { indexing: attribute }",
- " }",
- "}",
- "}"));
-
- builder.importString(joinLines("schema parent_b {",
- "document parent_b inherits parent_a {",
- "}",
- "}"));
-
- builder.importString(joinLines("schema child {",
- "document child {",
- " field ref_parent_a type reference<parent_a> {",
- " indexing: attribute",
- " }",
- " field ref_parent_b type reference<parent_b> {",
- " indexing: attribute",
- " }",
- "}",
- "import field ref_parent_a.entries as entries_from_a {}",
- "import field ref_parent_b.entries as entries_from_b {}",
- "}"));
-
- builder.build();
+ private ApplicationBuilder buildParentsUsingInheritance() throws ParseException {
+ var builder = new ApplicationBuilder();
+ builder.addSchema(joinLines("schema parent_a {",
+ "document parent_a {",
+ " struct Entry {",
+ " field key type string {}",
+ " field value type string {}",
+ " }",
+ " field entries type array<Entry> {",
+ " indexing: summary",
+ " struct-field key { indexing: attribute }",
+ " struct-field value { indexing: attribute }",
+ " }",
+ "}",
+ "}"));
+
+ builder.addSchema(joinLines("schema parent_b {",
+ "document parent_b inherits parent_a {",
+ "}",
+ "}"));
+
+ builder.addSchema(joinLines("schema child {",
+ "document child {",
+ " field ref_parent_a type reference<parent_a> {",
+ " indexing: attribute",
+ " }",
+ " field ref_parent_b type reference<parent_b> {",
+ " indexing: attribute",
+ " }",
+ "}",
+ "import field ref_parent_a.entries as entries_from_a {}",
+ "import field ref_parent_b.entries as entries_from_b {}",
+ "}"));
+
+ builder.build(true);
return builder;
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingScriptRewriterTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingScriptRewriterTestCase.java
index 3105e3c7efd..9e4ba1c6728 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingScriptRewriterTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingScriptRewriterTestCase.java
@@ -2,11 +2,12 @@
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.model.application.provider.BaseDeployLogger;
+import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.document.DataType;
import com.yahoo.searchdefinition.Index;
import com.yahoo.searchdefinition.RankProfileRegistry;
import com.yahoo.searchdefinition.Schema;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.AbstractSchemaTestCase;
import com.yahoo.searchdefinition.document.BooleanIndexDefinition;
import com.yahoo.searchdefinition.document.SDDocumentType;
@@ -120,7 +121,7 @@ public class IndexingScriptRewriterTestCase extends AbstractSchemaTestCase {
"clear_state | guard { input smallattribute | attribute smallattribute; }",
"clear_state | guard { input title | tokenize normalize stem:\"BEST\" | summary title | index title; }",
"clear_state | guard { input title . \" \" . input category | tokenize | summary exact | index exact; }"),
- SchemaBuilder.buildFromFile("src/test/examples/simple.sd"));
+ ApplicationBuilder.buildFromFile("src/test/examples/simple.sd"));
}
@Test
@@ -129,7 +130,7 @@ public class IndexingScriptRewriterTestCase extends AbstractSchemaTestCase {
Arrays.asList("clear_state | guard { input title_src | lowercase | normalize | " +
" tokenize | index title; }",
"clear_state | guard { input title_src | summary title_s; }"),
- SchemaBuilder.buildFromFile("src/test/examples/indexrewrite.sd"));
+ ApplicationBuilder.buildFromFile("src/test/examples/indexrewrite.sd"));
}
@Test
@@ -154,7 +155,7 @@ public class IndexingScriptRewriterTestCase extends AbstractSchemaTestCase {
private static ScriptExpression processField(SDField unprocessedField) {
SDDocumentType sdoc = new SDDocumentType("test");
sdoc.addField(unprocessedField);
- Schema schema = new Schema("test");
+ Schema schema = new Schema("test", MockApplicationPackage.createEmpty());
schema.addDocument(sdoc);
new Processing().process(schema, new BaseDeployLogger(), new RankProfileRegistry(),
new QueryProfiles(), true, false, Set.of());
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingValidationTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingValidationTestCase.java
index 5b5c5cedc0d..74a8cdfdb6a 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingValidationTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingValidationTestCase.java
@@ -1,7 +1,7 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.derived.AbstractExportingTestCase;
import com.yahoo.searchdefinition.parser.ParseException;
import org.junit.Test;
@@ -64,7 +64,7 @@ public class IndexingValidationTestCase extends AbstractExportingTestCase {
assertIndexing(
Arrays.asList("clear_state | guard { input my_index | tokenize normalize stem:\"BEST\" | index my_index | summary my_index }",
"clear_state | guard { input my_input | tokenize normalize stem:\"BEST\" | index my_extra | summary my_extra }"),
- SchemaBuilder.buildFromFile("src/test/examples/indexing_extra.sd"));
+ ApplicationBuilder.buildFromFile("src/test/examples/indexing_extra.sd"));
}
@Test
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/IntegerIndex2AttributeTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/IntegerIndex2AttributeTestCase.java
index 4b13590c777..2465839b72b 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/IntegerIndex2AttributeTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/IntegerIndex2AttributeTestCase.java
@@ -4,7 +4,7 @@ package com.yahoo.searchdefinition.processing;
import com.yahoo.config.model.application.provider.BaseDeployLogger;
import com.yahoo.searchdefinition.RankProfileRegistry;
import com.yahoo.searchdefinition.Schema;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.AbstractSchemaTestCase;
import com.yahoo.searchdefinition.document.SDField;
import com.yahoo.searchdefinition.parser.ParseException;
@@ -24,7 +24,7 @@ public class IntegerIndex2AttributeTestCase extends AbstractSchemaTestCase {
@Test
public void testIntegerIndex2Attribute() throws IOException, ParseException {
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/integerindex2attribute.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/integerindex2attribute.sd");
new IntegerIndex2Attribute(schema, new BaseDeployLogger(), new RankProfileRegistry(), new QueryProfiles()).process(true, false);
SDField f;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/MatchedElementsOnlyResolverTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/MatchedElementsOnlyResolverTestCase.java
index 7eea2fca0e6..b48927d58a3 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/MatchedElementsOnlyResolverTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/MatchedElementsOnlyResolverTestCase.java
@@ -3,7 +3,7 @@ package com.yahoo.searchdefinition.processing;
import com.yahoo.searchdefinition.RankProfileRegistry;
import com.yahoo.searchdefinition.Schema;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.parser.ParseException;
import com.yahoo.vespa.documentmodel.SummaryField;
import com.yahoo.vespa.documentmodel.SummaryTransform;
@@ -175,18 +175,18 @@ public class MatchedElementsOnlyResolverTestCase {
}
private Schema buildSearch(String field, String summary) throws ParseException {
- var builder = new SchemaBuilder(new RankProfileRegistry());
- builder.importString(joinLines("search test {",
- " document test {",
- " struct elem {",
- " field name type string {}",
- " field weight type int {}",
- " }",
- field,
- " }",
- summary,
- "}"));
- builder.build();
+ var builder = new ApplicationBuilder(new RankProfileRegistry());
+ builder.addSchema(joinLines("search test {",
+ " document test {",
+ " struct elem {",
+ " field name type string {}",
+ " field weight type int {}",
+ " }",
+ field,
+ " }",
+ summary,
+ "}"));
+ builder.build(true);
return builder.getSchema();
}
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/NGramTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/NGramTestCase.java
index 1adb909ff21..7169a97f3fc 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/NGramTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/NGramTestCase.java
@@ -2,7 +2,7 @@
package com.yahoo.searchdefinition.processing;
import com.yahoo.searchdefinition.Schema;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.AbstractSchemaTestCase;
import com.yahoo.searchdefinition.document.Matching;
import com.yahoo.searchdefinition.document.SDField;
@@ -25,7 +25,7 @@ public class NGramTestCase extends AbstractSchemaTestCase {
@Test
public void testNGram() throws IOException, ParseException {
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/ngram.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/ngram.sd");
assertNotNull(schema);
SDField gram1 = schema.getConcreteField("gram_1");
@@ -55,7 +55,7 @@ public class NGramTestCase extends AbstractSchemaTestCase {
@Test
public void testInvalidNGramSetting1() throws IOException, ParseException {
try {
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/invalidngram1.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/invalidngram1.sd");
fail("Should cause an exception");
}
catch (IllegalArgumentException e) {
@@ -66,7 +66,7 @@ public class NGramTestCase extends AbstractSchemaTestCase {
@Test
public void testInvalidNGramSetting2() throws IOException, ParseException {
try {
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/invalidngram2.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/invalidngram2.sd");
fail("Should cause an exception");
}
catch (IllegalArgumentException e) {
@@ -77,7 +77,7 @@ public class NGramTestCase extends AbstractSchemaTestCase {
@Test
public void testInvalidNGramSetting3() throws IOException, ParseException {
try {
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/invalidngram3.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/invalidngram3.sd");
fail("Should cause an exception");
}
catch (IllegalArgumentException e) {
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/PagedAttributeValidatorTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/PagedAttributeValidatorTestCase.java
index 5fce16f381a..4eeab15fdd2 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/PagedAttributeValidatorTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/PagedAttributeValidatorTestCase.java
@@ -1,19 +1,70 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
+import com.yahoo.config.model.application.provider.BaseDeployLogger;
import com.yahoo.searchdefinition.parser.ParseException;
import org.junit.Test;
+import java.util.Optional;
+
import static com.yahoo.config.model.test.TestUtil.joinLines;
-import static com.yahoo.searchdefinition.SchemaBuilder.createFromString;
+import static com.yahoo.searchdefinition.ApplicationBuilder.createFromString;
+import static com.yahoo.searchdefinition.ApplicationBuilder.createFromStrings;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
public class PagedAttributeValidatorTestCase {
@Test
- public void dense_tensor_attribute_does_support_paged_setting() throws ParseException {
- createFromString(getSd("tensor(x[2],y[2])"));
+ public void dense_tensor_attribute_supports_paged_setting() throws ParseException {
+ assertPagedSupported("tensor(x[2],y[2])");
+ }
+
+ @Test
+ public void primitive_attribute_types_support_paged_setting() throws ParseException {
+ assertPagedSupported("int");
+ assertPagedSupported("array<int>");
+ assertPagedSupported("weightedset<int>");
+
+ assertPagedSupported("string");
+ assertPagedSupported("array<string>");
+ assertPagedSupported("weightedset<string>");
+ }
+
+ @Test
+ public void struct_field_attributes_support_paged_setting() throws ParseException {
+ var sd = joinLines("schema test {",
+ " document test {",
+ " struct elem {",
+ " field first type int {}",
+ " field second type string {}",
+ " }",
+ " field foo type array<elem> {",
+ " indexing: summary",
+ " struct-field first {",
+ " indexing: attribute",
+ " attribute: paged",
+ " }",
+ " struct-field second {",
+ " indexing: attribute",
+ " attribute: paged",
+ " }",
+ " }",
+ " }",
+ "}");
+
+ var appBuilder = createFromString(sd);
+ var field = appBuilder.getSchema().getField("foo");
+ assertTrue(field.getStructField("first").getAttribute().isPaged());
+ assertTrue(field.getStructField("second").getAttribute().isPaged());
+ }
+
+ private void assertPagedSupported(String fieldType) throws ParseException {
+ var appBuilder = createFromString(getSd(fieldType));
+ var attribute = appBuilder.getSchema().getAttribute("foo");
+ assertTrue(attribute.isPaged());
}
@Test
@@ -22,25 +73,42 @@ public class PagedAttributeValidatorTestCase {
}
@Test
- public void non_tensor_attribute_does_not_support_paged_setting() throws ParseException {
- assertPagedSettingNotSupported("string");
+ public void predicate_attribute_does_not_support_paged_setting() throws ParseException {
+ assertPagedSettingNotSupported("predicate");
+ }
+
+ @Test
+ public void reference_attribute_does_not_support_paged_setting() throws ParseException {
+ assertPagedSettingNotSupported("reference<parent>", Optional.of(getSd("parent", "int")));
}
private void assertPagedSettingNotSupported(String fieldType) throws ParseException {
+ assertPagedSettingNotSupported(fieldType, Optional.empty());
+ }
+
+ private void assertPagedSettingNotSupported(String fieldType, Optional<String> parentSd) throws ParseException {
try {
- createFromString(getSd(fieldType));
+ if (parentSd.isPresent()) {
+ createFromStrings(new BaseDeployLogger(), parentSd.get(), getSd(fieldType));
+ } else {
+ createFromString(getSd(fieldType));
+ }
fail("Expected exception");
} catch (IllegalArgumentException e) {
- assertEquals("For schema 'test', field 'foo': The 'paged' attribute setting is only supported for dense tensor types",
+ assertEquals("For schema 'test', field 'foo': The 'paged' attribute setting is not supported for non-dense tensor, predicate and reference types",
e.getMessage());
}
}
- private String getSd(String type) {
+ private String getSd(String fieldType) {
+ return getSd("test", fieldType);
+ }
+
+ private String getSd(String docType, String fieldType) {
return joinLines(
- "schema test {",
- " document test {",
- " field foo type " + type + "{",
+ "schema " + docType + " {",
+ " document " + docType + " {",
+ " field foo type " + fieldType + "{",
" indexing: attribute",
" attribute: paged",
" }",
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ParentChildSearchModel.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ParentChildSearchModel.java
index 74fa7c72554..b14c7287537 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ParentChildSearchModel.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ParentChildSearchModel.java
@@ -23,7 +23,6 @@ import com.yahoo.searchdefinition.document.TemporarySDField;
*/
public class ParentChildSearchModel {
- private final Application application = new Application(MockApplicationPackage.createEmpty());
public Schema parentSchema;
public Schema childSchema;
@@ -33,7 +32,7 @@ public class ParentChildSearchModel {
}
protected Schema createSearch(String name) {
- Schema result = new Schema(name, application, new MockFileRegistry(), new TestableDeployLogger(), new TestProperties());
+ Schema result = new Schema(name, MockApplicationPackage.createEmpty(), new MockFileRegistry(), new TestableDeployLogger(), new TestProperties());
result.addDocument(new SDDocumentType(name));
return result;
}
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 c3beeeaa17e..eaf38396efc 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
@@ -5,7 +5,7 @@ import com.yahoo.document.DataType;
import com.yahoo.document.DocumentType;
import com.yahoo.document.PositionDataType;
import com.yahoo.searchdefinition.Schema;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.document.Attribute;
import com.yahoo.searchdefinition.document.FieldSet;
import com.yahoo.vespa.documentmodel.SummaryField;
@@ -27,7 +27,7 @@ public class PositionTestCase {
@Test
public void inherited_position_zcurve_field_is_not_added_to_document_fieldset() throws Exception {
- SchemaBuilder sb = SchemaBuilder.createFromFiles(Arrays.asList(
+ ApplicationBuilder sb = ApplicationBuilder.createFromFiles(Arrays.asList(
"src/test/examples/position_base.sd",
"src/test/examples/position_inherited.sd"));
@@ -38,7 +38,7 @@ public class PositionTestCase {
@Test
public void requireThatPositionCanBeAttribute() throws Exception {
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/position_attribute.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/position_attribute.sd");
assertNull(schema.getAttribute("pos"));
assertNull(schema.getAttribute("pos.x"));
assertNull(schema.getAttribute("pos.y"));
@@ -50,7 +50,7 @@ public class PositionTestCase {
@Test
public void requireThatPositionCanNotBeIndex() throws Exception {
try {
- SchemaBuilder.buildFromFile("src/test/examples/position_index.sd");
+ ApplicationBuilder.buildFromFile("src/test/examples/position_index.sd");
fail();
} catch (IllegalArgumentException e) {
assertEquals("For schema 'position_index', field 'pos': Indexing of data type 'position' is not " +
@@ -60,7 +60,7 @@ public class PositionTestCase {
@Test
public void requireThatSummaryAloneDoesNotCreateZCurve() throws Exception {
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/position_summary.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/position_summary.sd");
assertNull(schema.getAttribute("pos"));
assertNull(schema.getAttribute("pos.x"));
assertNull(schema.getAttribute("pos.y"));
@@ -79,7 +79,7 @@ public class PositionTestCase {
@Test
public void requireThatExtraFieldCanBePositionAttribute() throws Exception {
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/position_extra.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/position_extra.sd");
assertNull(schema.getAttribute("pos_ext"));
assertNull(schema.getAttribute("pos_ext.x"));
assertNull(schema.getAttribute("pos_ext.y"));
@@ -90,7 +90,7 @@ public class PositionTestCase {
@Test
public void requireThatPositionArrayIsSupported() throws Exception {
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/position_array.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/position_array.sd");
assertNull(schema.getAttribute("pos"));
assertNull(schema.getAttribute("pos.x"));
assertNull(schema.getAttribute("pos.y"));
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankModifierTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankModifierTestCase.java
index 87dd92f41d9..3a0ceebcb0a 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankModifierTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankModifierTestCase.java
@@ -2,7 +2,7 @@
package com.yahoo.searchdefinition.processing;
import com.yahoo.searchdefinition.Schema;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.AbstractSchemaTestCase;
import com.yahoo.searchdefinition.parser.ParseException;
import org.junit.Test;
@@ -17,6 +17,6 @@ import java.io.IOException;
public class RankModifierTestCase extends AbstractSchemaTestCase {
@Test
public void testLiteral() throws IOException, ParseException {
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/rankmodifier/literal.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/rankmodifier/literal.sd");
}
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankProfileSearchFixture.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankProfileSearchFixture.java
index 2707f60f828..2d0bdb58122 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankProfileSearchFixture.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankProfileSearchFixture.java
@@ -13,7 +13,7 @@ import com.yahoo.search.query.profile.QueryProfileRegistry;
import com.yahoo.searchdefinition.RankProfile;
import com.yahoo.searchdefinition.RankProfileRegistry;
import com.yahoo.searchdefinition.Schema;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.parser.ParseException;
import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlModels;
import ai.vespa.rankingexpression.importer.onnx.OnnxImporter;
@@ -68,7 +68,7 @@ class RankProfileSearchFixture {
String rankProfiles, String constant, String field)
throws ParseException {
this.queryProfileRegistry = queryProfileRegistry;
- SchemaBuilder builder = new SchemaBuilder(applicationpackage, new MockFileRegistry(), new BaseDeployLogger(), new TestProperties(), rankProfileRegistry, queryProfileRegistry);
+ ApplicationBuilder builder = new ApplicationBuilder(applicationpackage, new MockFileRegistry(), new BaseDeployLogger(), new TestProperties(), rankProfileRegistry, queryProfileRegistry);
String sdContent = "search test {\n" +
" " + (constant != null ? constant : "") + "\n" +
" document test {\n" +
@@ -77,8 +77,8 @@ class RankProfileSearchFixture {
rankProfiles +
"\n" +
"}";
- builder.importString(sdContent);
- builder.build();
+ builder.addSchema(sdContent);
+ builder.build(true);
schema = builder.getSchema();
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankPropertyVariablesTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankPropertyVariablesTestCase.java
index b1624b7fd7e..0ab7406b5b1 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankPropertyVariablesTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankPropertyVariablesTestCase.java
@@ -6,7 +6,7 @@ import com.yahoo.search.query.profile.QueryProfileRegistry;
import com.yahoo.searchdefinition.RankProfile.RankProperty;
import com.yahoo.searchdefinition.RankProfileRegistry;
import com.yahoo.searchdefinition.Schema;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.AbstractSchemaTestCase;
import com.yahoo.searchdefinition.parser.ParseException;
import org.junit.Test;
@@ -21,10 +21,10 @@ public class RankPropertyVariablesTestCase extends AbstractSchemaTestCase {
@Test
public void testRankPropVariables() throws IOException, ParseException {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/rankpropvars.sd",
- new BaseDeployLogger(),
- rankProfileRegistry,
- new QueryProfileRegistry());
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/rankpropvars.sd",
+ new BaseDeployLogger(),
+ rankProfileRegistry,
+ new QueryProfileRegistry());
assertRankPropEquals(rankProfileRegistry.get(schema, "other").getRankProperties(), "$testvar1", "foo");
assertRankPropEquals(rankProfileRegistry.get(schema, "other").getRankProperties(), "$testvar_2", "bar");
assertRankPropEquals(rankProfileRegistry.get(schema, "other").getRankProperties(), "$testvarOne23", "baz");
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionTypeResolverTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionTypeResolverTestCase.java
index 4f18c9b68fd..7f5e8f8753a 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionTypeResolverTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionTypeResolverTestCase.java
@@ -7,7 +7,7 @@ import com.yahoo.search.query.profile.types.QueryProfileType;
import com.yahoo.search.query.profile.types.TensorFieldType;
import com.yahoo.searchdefinition.RankProfile;
import com.yahoo.searchdefinition.RankProfileRegistry;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchlib.rankingexpression.rule.ReferenceNode;
import com.yahoo.tensor.TensorType;
import com.yahoo.yolean.Exceptions;
@@ -33,8 +33,8 @@ public class RankingExpressionTypeResolverTestCase {
@Test
public void tensorFirstPhaseMustProduceDouble() throws Exception {
try {
- SchemaBuilder builder = new SchemaBuilder();
- builder.importString(joinLines(
+ ApplicationBuilder builder = new ApplicationBuilder();
+ builder.addSchema(joinLines(
"search test {",
" document test { ",
" field a type tensor(x[10],y[3]) {",
@@ -48,7 +48,7 @@ public class RankingExpressionTypeResolverTestCase {
" }",
"}"
));
- builder.build();
+ builder.build(true);
fail("Expected exception");
}
catch (IllegalArgumentException expected) {
@@ -61,8 +61,8 @@ public class RankingExpressionTypeResolverTestCase {
@Test
public void tensorFirstPhaseFromConstantMustProduceDouble() throws Exception {
try {
- SchemaBuilder builder = new SchemaBuilder();
- builder.importString(joinLines(
+ ApplicationBuilder builder = new ApplicationBuilder();
+ builder.addSchema(joinLines(
"search test {",
" document test { ",
" field a type tensor(d0[3]) {",
@@ -96,7 +96,7 @@ public class RankingExpressionTypeResolverTestCase {
" }",
"}"
));
- builder.build();
+ builder.build(true);
fail("Expected exception");
}
catch (IllegalArgumentException expected) {
@@ -110,8 +110,8 @@ public class RankingExpressionTypeResolverTestCase {
@Test
public void tensorSecondPhaseMustProduceDouble() throws Exception {
try {
- SchemaBuilder builder = new SchemaBuilder();
- builder.importString(joinLines(
+ ApplicationBuilder builder = new ApplicationBuilder();
+ builder.addSchema(joinLines(
"search test {",
" document test { ",
" field a type tensor(x[10],y[3]) {",
@@ -128,7 +128,7 @@ public class RankingExpressionTypeResolverTestCase {
" }",
"}"
));
- builder.build();
+ builder.build(true);
fail("Expected exception");
}
catch (IllegalArgumentException expected) {
@@ -140,8 +140,8 @@ public class RankingExpressionTypeResolverTestCase {
@Test
public void tensorConditionsMustHaveTypeCompatibleBranches() throws Exception {
try {
- SchemaBuilder schemaBuilder = new SchemaBuilder();
- schemaBuilder.importString(joinLines(
+ ApplicationBuilder schemaBuilder = new ApplicationBuilder();
+ schemaBuilder.addSchema(joinLines(
"search test {",
" document test { ",
" field a type tensor(x[10],y[5]) {",
@@ -158,7 +158,7 @@ public class RankingExpressionTypeResolverTestCase {
" }",
"}"
));
- schemaBuilder.build();
+ schemaBuilder.build(true);
fail("Expected exception");
}
catch (IllegalArgumentException expected) {
@@ -172,8 +172,8 @@ public class RankingExpressionTypeResolverTestCase {
@Test
public void testFunctionInvocationTypes() throws Exception {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(rankProfileRegistry);
- builder.importString(joinLines(
+ ApplicationBuilder builder = new ApplicationBuilder(rankProfileRegistry);
+ builder.addSchema(joinLines(
"search test {",
" document test { ",
" field a type tensor(x[10],y[3]) {",
@@ -194,7 +194,7 @@ public class RankingExpressionTypeResolverTestCase {
" }",
"}"
));
- builder.build();
+ builder.build(true);
RankProfile profile =
builder.getRankProfileRegistry().get(builder.getSchema(), "my_rank_profile");
assertEquals(TensorType.fromSpec("tensor(x[10],y[3])"),
@@ -205,8 +205,8 @@ public class RankingExpressionTypeResolverTestCase {
@Test
public void testTensorFunctionInvocationTypes_Nested() throws Exception {
- SchemaBuilder builder = new SchemaBuilder();
- builder.importString(joinLines(
+ ApplicationBuilder builder = new ApplicationBuilder();
+ builder.addSchema(joinLines(
"search test {",
" document test { ",
" field a type tensor(x[10],y[1]) {",
@@ -236,7 +236,7 @@ public class RankingExpressionTypeResolverTestCase {
" }",
"}"
));
- builder.build();
+ builder.build(true);
RankProfile profile =
builder.getRankProfileRegistry().get(builder.getSchema(), "my_rank_profile");
assertEquals(TensorType.fromSpec("tensor(x[10],y[1])"),
@@ -247,8 +247,8 @@ public class RankingExpressionTypeResolverTestCase {
@Test
public void testAttributeInvocationViaBoundIdentifier() throws Exception {
- SchemaBuilder builder = new SchemaBuilder();
- builder.importString(joinLines(
+ ApplicationBuilder builder = new ApplicationBuilder();
+ builder.addSchema(joinLines(
"search newsarticle {",
" document newsarticle {",
" field title type string {",
@@ -280,14 +280,14 @@ public class RankingExpressionTypeResolverTestCase {
" first-phase { expression: commonfirstphase(eustaticrank) }",
" }",
"}"));
- builder.build();
+ builder.build(true);
RankProfile profile = builder.getRankProfileRegistry().get(builder.getSchema(), "eurank");
}
@Test
public void testTensorFunctionInvocationTypes_NestedSameName() throws Exception {
- SchemaBuilder builder = new SchemaBuilder();
- builder.importString(joinLines(
+ ApplicationBuilder builder = new ApplicationBuilder();
+ builder.addSchema(joinLines(
"search test {",
" document test { ",
" field a type tensor(x[10],y[1]) {",
@@ -320,7 +320,7 @@ public class RankingExpressionTypeResolverTestCase {
" }",
"}"
));
- builder.build();
+ builder.build(true);
RankProfile profile =
builder.getRankProfileRegistry().get(builder.getSchema(), "my_rank_profile");
assertEquals(TensorType.fromSpec("tensor(x[10],y[1])"),
@@ -331,8 +331,8 @@ public class RankingExpressionTypeResolverTestCase {
@Test
public void testTensorFunctionInvocationTypes_viaFuncWithExpr() throws Exception {
- SchemaBuilder builder = new SchemaBuilder();
- builder.importString(joinLines(
+ ApplicationBuilder builder = new ApplicationBuilder();
+ builder.addSchema(joinLines(
"search test {",
" document test {",
" field t1 type tensor<float>(y{}) { indexing: attribute | summary }",
@@ -345,7 +345,7 @@ public class RankingExpressionTypeResolverTestCase {
" summary-features { test_func_via_func_with_expr }",
" }",
"}"));
- builder.build();
+ builder.build(true);
RankProfile profile = builder.getRankProfileRegistry().get(builder.getSchema(), "test");
assertEquals(TensorType.fromSpec("tensor<float>(y{})"),
summaryFeatures(profile).get("test_func_via_func_with_expr").type(profile.typeContext(builder.getQueryProfileRegistry())));
@@ -353,8 +353,8 @@ public class RankingExpressionTypeResolverTestCase {
@Test
public void importedFieldsAreAvailable() throws Exception {
- SchemaBuilder builder = new SchemaBuilder();
- builder.importString(joinLines(
+ ApplicationBuilder builder = new ApplicationBuilder();
+ builder.addSchema(joinLines(
"search parent {",
" document parent {",
" field a type tensor(x[5],y[1000]) {",
@@ -363,7 +363,7 @@ public class RankingExpressionTypeResolverTestCase {
" }",
"}"
));
- builder.importString(joinLines(
+ builder.addSchema(joinLines(
"search child {",
" document child { ",
" field ref type reference<parent> {",
@@ -378,14 +378,14 @@ public class RankingExpressionTypeResolverTestCase {
" }",
"}"
));
- builder.build();
+ builder.build(true);
}
@Test
public void undeclaredQueryFeaturesAreAccepted() throws Exception {
InspectableDeployLogger logger = new InspectableDeployLogger();
- SchemaBuilder builder = new SchemaBuilder(logger);
- builder.importString(joinLines(
+ ApplicationBuilder builder = new ApplicationBuilder(logger);
+ builder.addSchema(joinLines(
"search test {",
" document test { ",
" field anyfield type double {" +
@@ -410,8 +410,8 @@ public class RankingExpressionTypeResolverTestCase {
@Test
public void undeclaredQueryFeaturesAreAcceptedWithWarningWhenUsingTensors() throws Exception {
InspectableDeployLogger logger = new InspectableDeployLogger();
- SchemaBuilder builder = new SchemaBuilder(logger);
- builder.importString(joinLines(
+ ApplicationBuilder builder = new ApplicationBuilder(logger);
+ builder.addSchema(joinLines(
"search test {",
" document test { ",
" field anyfield type tensor(d[2]) {",
@@ -439,7 +439,7 @@ public class RankingExpressionTypeResolverTestCase {
@Test
public void noWarningWhenUsingTensorsWhenQueryFeaturesAreDeclared() throws Exception {
InspectableDeployLogger logger = new InspectableDeployLogger();
- SchemaBuilder builder = new SchemaBuilder(logger);
+ ApplicationBuilder builder = new ApplicationBuilder(logger);
QueryProfileType myType = new QueryProfileType("mytype");
myType.addField(new FieldDescription("rank.feature.query(foo)",
new TensorFieldType(TensorType.fromSpec("tensor(d[2])"))),
@@ -451,7 +451,7 @@ public class RankingExpressionTypeResolverTestCase {
new TensorFieldType(TensorType.fromSpec("tensor(d[2])"))),
builder.getQueryProfileRegistry().getTypeRegistry());
builder.getQueryProfileRegistry().getTypeRegistry().register(myType);
- builder.importString(joinLines(
+ builder.addSchema(joinLines(
"search test {",
" document test { ",
" field anyfield type tensor(d[2]) {",
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithOnnxTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithOnnxTestCase.java
index 09aa09a626b..d44c102a5c3 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithOnnxTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithOnnxTestCase.java
@@ -259,7 +259,7 @@ public class RankingExpressionWithOnnxTestCase {
public void testFunctionGeneration() {
final String name = "small_constants_and_functions";
final String rankProfiles =
- " rank-profile my_profile {\n" +
+ " rank-profile my_profile {\n" +
" function input() {\n" +
" expression: tensor<float>(d0[3])(0.0)\n" +
" }\n" +
@@ -399,8 +399,10 @@ public class RankingExpressionWithOnnxTestCase {
@Override
public List<NamedReader> getFiles(Path path, String suffix) {
+ File[] files = getFileReference(path).listFiles();
+ if (files == null) return List.of();
List<NamedReader> readers = new ArrayList<>();
- for (File file : getFileReference(path).listFiles()) {
+ for (File file : files) {
if ( ! file.getName().endsWith(suffix)) continue;
try {
readers.add(new NamedReader(file.getName(), new FileReader(file)));
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithTransformerTokensTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithTransformerTokensTestCase.java
index 93de116883a..ffc073ed434 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithTransformerTokensTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithTransformerTokensTestCase.java
@@ -9,7 +9,7 @@ import com.yahoo.search.query.profile.QueryProfileRegistry;
import com.yahoo.searchdefinition.RankProfile;
import com.yahoo.searchdefinition.RankProfileRegistry;
import com.yahoo.searchdefinition.Schema;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.expressiontransforms.RankProfileTransformContext;
import com.yahoo.searchdefinition.expressiontransforms.TokenTransformer;
import com.yahoo.searchdefinition.parser.ParseException;
@@ -87,9 +87,9 @@ public class RankingExpressionWithTransformerTokensTestCase {
" document test {}\n" +
" rank-profile my_profile inherits default {}\n" +
"}";
- SchemaBuilder schemaBuilder = new SchemaBuilder(application, new MockFileRegistry(), new BaseDeployLogger(), new TestProperties(), rankProfileRegistry, queryProfileRegistry);
- schemaBuilder.importString(sdContent);
- schemaBuilder.build();
+ ApplicationBuilder schemaBuilder = new ApplicationBuilder(application, new MockFileRegistry(), new BaseDeployLogger(), new TestProperties(), rankProfileRegistry, queryProfileRegistry);
+ schemaBuilder.addSchema(sdContent);
+ schemaBuilder.build(true);
Schema schema = schemaBuilder.getSchema();
RankProfile rp = rankProfileRegistry.get(schema, "my_profile");
return new RankProfileTransformContext(rp, queryProfileRegistry, Collections.emptyMap(), null, Collections.emptyMap(), Collections.emptyMap());
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionsTestCase.java
index f4742be6b30..b42f932ef98 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionsTestCase.java
@@ -11,7 +11,7 @@ import com.yahoo.searchdefinition.RankProfile;
import com.yahoo.searchdefinition.RankProfileRegistry;
import com.yahoo.searchdefinition.Schema;
import com.yahoo.searchdefinition.AbstractSchemaTestCase;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.derived.DerivedConfiguration;
import com.yahoo.searchdefinition.derived.AttributeFields;
import com.yahoo.searchdefinition.derived.RawRankProfile;
@@ -31,7 +31,7 @@ import static org.junit.Assert.assertTrue;
public class RankingExpressionsTestCase extends AbstractSchemaTestCase {
private static Schema createSearch(String dir, ModelContext.Properties deployProperties, RankProfileRegistry rankProfileRegistry) throws IOException, ParseException {
- return SchemaBuilder.createFromDirectory(dir, new MockFileRegistry(), new TestableDeployLogger(), deployProperties, rankProfileRegistry).getSchema();
+ return ApplicationBuilder.createFromDirectory(dir, new MockFileRegistry(), new TestableDeployLogger(), deployProperties, rankProfileRegistry).getSchema();
}
@Test
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ReferenceFieldTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ReferenceFieldTestCase.java
index c9437761e0d..d60cb9040d8 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ReferenceFieldTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ReferenceFieldTestCase.java
@@ -6,7 +6,7 @@ import com.yahoo.document.Field;
import com.yahoo.document.ReferenceDataType;
import com.yahoo.searchdefinition.DocumentGraphValidator;
import com.yahoo.searchdefinition.Schema;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.document.SDDocumentType;
import com.yahoo.searchdefinition.parser.ParseException;
import org.junit.Rule;
@@ -28,7 +28,7 @@ public class ReferenceFieldTestCase {
@Test
public void reference_fields_are_parsed_from_search_definition() throws ParseException {
- SchemaBuilder builder = new SchemaBuilder();
+ ApplicationBuilder builder = new ApplicationBuilder();
String campaignSdContent =
"search campaign {\n" +
" document campaign {\n" +
@@ -46,10 +46,10 @@ public class ReferenceFieldTestCase {
" field salesperson_ref type reference<salesperson> { indexing: attribute }\n" +
" }\n" +
"}";
- builder.importString(campaignSdContent);
- builder.importString(salespersonSdContent);
- builder.importString(adSdContent);
- builder.build();
+ builder.addSchema(campaignSdContent);
+ builder.addSchema(salespersonSdContent);
+ builder.addSchema(adSdContent);
+ builder.build(true);
Schema schema = builder.getSchema("ad");
assertSearchContainsReferenceField("campaign_ref", "campaign", schema.getDocument());
assertSearchContainsReferenceField("salesperson_ref", "salesperson", schema.getDocument());
@@ -57,7 +57,7 @@ public class ReferenceFieldTestCase {
@Test
public void cyclic_document_dependencies_are_detected() throws ParseException {
- SchemaBuilder builder = new SchemaBuilder();
+ ApplicationBuilder builder = new ApplicationBuilder();
String campaignSdContent =
"search campaign {\n" +
" document campaign {\n" +
@@ -70,11 +70,11 @@ public class ReferenceFieldTestCase {
" field campaign_ref type reference<campaign> { indexing: attribute }\n" +
" }\n" +
"}";
- builder.importString(campaignSdContent);
- builder.importString(adSdContent);
+ builder.addSchema(campaignSdContent);
+ builder.addSchema(adSdContent);
exceptionRule.expect(DocumentGraphValidator.DocumentGraphException.class);
exceptionRule.expectMessage("Document dependency cycle detected: campaign->ad->campaign.");
- builder.build();
+ builder.build(true);
}
private static void assertSearchContainsReferenceField(String expectedFieldname,
@@ -87,4 +87,5 @@ public class ReferenceFieldTestCase {
ReferenceDataType refField = (ReferenceDataType) dataType;
assertEquals(referencedDocType, refField.getTargetType().getName());
}
+
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ReservedRankingExpressionFunctionNamesTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ReservedRankingExpressionFunctionNamesTestCase.java
index 922680e8f1a..d3d79fd7798 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ReservedRankingExpressionFunctionNamesTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ReservedRankingExpressionFunctionNamesTestCase.java
@@ -3,7 +3,7 @@ package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.searchdefinition.RankProfileRegistry;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.parser.ParseException;
import org.junit.Test;
@@ -21,8 +21,8 @@ public class ReservedRankingExpressionFunctionNamesTestCase {
public void requireThatFunctionsWithReservedNamesIssueAWarning() throws ParseException {
TestDeployLogger deployLogger = new TestDeployLogger();
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- SchemaBuilder builder = new SchemaBuilder(deployLogger, rankProfileRegistry);
- builder.importString(
+ ApplicationBuilder builder = new ApplicationBuilder(deployLogger, rankProfileRegistry);
+ builder.addSchema(
"search test {\n" +
" document test { \n" +
" field a type string { \n" +
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/SchemaMustHaveDocumentTest.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/SchemaMustHaveDocumentTest.java
index 24dc98e4d93..4cfe4c09052 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/SchemaMustHaveDocumentTest.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/SchemaMustHaveDocumentTest.java
@@ -1,7 +1,7 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.parser.ParseException;
import org.junit.Test;
@@ -17,7 +17,7 @@ public class SchemaMustHaveDocumentTest {
@Test
public void requireErrorWhenMissingDocument() throws IOException, ParseException {
try {
- SchemaBuilder.buildFromFile("src/test/examples/invalid_sd_missing_document.sd");
+ ApplicationBuilder.buildFromFile("src/test/examples/invalid_sd_missing_document.sd");
fail("SD without document");
} catch (IllegalArgumentException e) {
if (!e.getMessage()
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/SummaryConsistencyTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/SummaryConsistencyTestCase.java
index 067a132cc4a..f224dc0688e 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/SummaryConsistencyTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/SummaryConsistencyTestCase.java
@@ -2,7 +2,7 @@
package com.yahoo.searchdefinition.processing;
import com.yahoo.searchdefinition.Schema;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.parser.ParseException;
import com.yahoo.vespa.documentmodel.SummaryTransform;
import org.junit.Test;
@@ -39,7 +39,7 @@ public class SummaryConsistencyTestCase {
"",
"}"
);
- Schema schema = SchemaBuilder.createFromString(sd).getSchema();
+ Schema schema = ApplicationBuilder.createFromString(sd).getSchema();
assertEquals(SummaryTransform.ATTRIBUTECOMBINER, schema.getSummaryField("elem_array_unfiltered").getTransform());
}
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/SummaryFieldsMustHaveValidSourceTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/SummaryFieldsMustHaveValidSourceTestCase.java
index eb3e61b9f7a..1eb5e66df93 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/SummaryFieldsMustHaveValidSourceTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/SummaryFieldsMustHaveValidSourceTestCase.java
@@ -5,7 +5,7 @@ import com.yahoo.config.model.application.provider.BaseDeployLogger;
import com.yahoo.searchdefinition.RankProfileRegistry;
import com.yahoo.searchdefinition.Schema;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.AbstractSchemaTestCase;
import com.yahoo.searchdefinition.parser.ParseException;
import com.yahoo.vespa.model.container.search.QueryProfiles;
@@ -21,7 +21,7 @@ public class SummaryFieldsMustHaveValidSourceTestCase extends AbstractSchemaTest
@Test
public void requireThatInvalidSourceIsCaught() throws IOException, ParseException {
try {
- SchemaBuilder.buildFromFile("src/test/examples/invalidsummarysource.sd");
+ ApplicationBuilder.buildFromFile("src/test/examples/invalidsummarysource.sd");
fail("This should throw and never get here");
} catch (IllegalArgumentException e) {
assertEquals("For schema 'invalidsummarysource', summary class 'baz', summary field 'cox': there is no valid source 'nonexistingfield'.", e.getMessage());
@@ -31,7 +31,7 @@ public class SummaryFieldsMustHaveValidSourceTestCase extends AbstractSchemaTest
@Test
public void requireThatInvalidImplicitSourceIsCaught() throws IOException, ParseException {
try {
- SchemaBuilder.buildFromFile("src/test/examples/invalidimplicitsummarysource.sd");
+ ApplicationBuilder.buildFromFile("src/test/examples/invalidimplicitsummarysource.sd");
fail("This should throw and never get here");
} catch (IllegalArgumentException e) {
assertEquals("For schema 'invalidsummarysource', summary class 'baz', summary field 'cox': there is no valid source 'cox'.", e.getMessage());
@@ -41,7 +41,7 @@ public class SummaryFieldsMustHaveValidSourceTestCase extends AbstractSchemaTest
@Test
public void requireThatInvalidSelfReferingSingleSource() throws IOException, ParseException {
try {
- SchemaBuilder.buildFromFile("src/test/examples/invalidselfreferringsummary.sd");
+ ApplicationBuilder.buildFromFile("src/test/examples/invalidselfreferringsummary.sd");
fail("This should throw and never get here");
} catch (IllegalArgumentException e) {
assertEquals("For schema 'invalidselfreferringsummary', summary class 'withid', summary field 'w': there is no valid source 'w'.", e.getMessage());
@@ -50,7 +50,7 @@ public class SummaryFieldsMustHaveValidSourceTestCase extends AbstractSchemaTest
@Test
public void requireThatDocumentIdIsAllowedToPass() throws IOException, ParseException {
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/documentidinsummary.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/documentidinsummary.sd");
BaseDeployLogger deployLogger = new BaseDeployLogger();
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
new SummaryFieldsMustHaveValidSource(schema, deployLogger, rankProfileRegistry, new QueryProfiles()).process(true, false);
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/TensorFieldTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/TensorFieldTestCase.java
index 82b288dc66d..9e53bd57d77 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/TensorFieldTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/TensorFieldTestCase.java
@@ -6,7 +6,7 @@ import com.yahoo.searchdefinition.parser.ParseException;
import org.junit.Test;
-import static com.yahoo.searchdefinition.SchemaBuilder.createFromString;
+import static com.yahoo.searchdefinition.ApplicationBuilder.createFromString;
import static com.yahoo.config.model.test.TestUtil.joinLines;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/TensorTransformTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/TensorTransformTestCase.java
index eec2ef4c3a0..c71fd3dd489 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/TensorTransformTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/TensorTransformTestCase.java
@@ -14,7 +14,7 @@ import com.yahoo.searchdefinition.LargeRankExpressions;
import com.yahoo.searchdefinition.RankProfile;
import com.yahoo.searchdefinition.RankProfileRegistry;
import com.yahoo.searchdefinition.Schema;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.AbstractSchemaTestCase;
import com.yahoo.searchdefinition.derived.AttributeFields;
import com.yahoo.searchdefinition.derived.RawRankProfile;
@@ -140,8 +140,8 @@ public class TensorTransformTestCase extends AbstractSchemaTestCase {
private List<Pair<String, String>> buildSearch(String expression) throws ParseException {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
QueryProfileRegistry queryProfiles = setupQueryProfileTypes();
- SchemaBuilder builder = new SchemaBuilder(rankProfileRegistry, queryProfiles);
- builder.importString(
+ ApplicationBuilder builder = new ApplicationBuilder(rankProfileRegistry, queryProfiles);
+ builder.addSchema(
"search test {\n" +
" document test { \n" +
" field double_field type double { \n" +
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ValidateFieldTypesTest.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ValidateFieldTypesTest.java
index fe9d19310a9..22fd4e45c4a 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ValidateFieldTypesTest.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ValidateFieldTypesTest.java
@@ -51,7 +51,7 @@ public class ValidateFieldTypesTest {
private static Schema createSearch(String documentType) {
return new Schema(documentType,
- new Application(MockApplicationPackage.createEmpty()),
+ MockApplicationPackage.createEmpty(),
new MockFileRegistry(),
new TestableDeployLogger(),
new TestProperties());
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/WeightedSetSummaryToTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/WeightedSetSummaryToTestCase.java
index 2a737f4eb69..e56d6ccf343 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/WeightedSetSummaryToTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/WeightedSetSummaryToTestCase.java
@@ -2,7 +2,7 @@
package com.yahoo.searchdefinition.processing;
import com.yahoo.searchdefinition.Schema;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.AbstractSchemaTestCase;
import com.yahoo.searchdefinition.parser.ParseException;
import org.junit.Test;
@@ -16,7 +16,7 @@ public class WeightedSetSummaryToTestCase extends AbstractSchemaTestCase {
@Test
public void testRequireThatImplicitFieldsAreCreated() throws IOException, ParseException {
- Schema schema = SchemaBuilder.buildFromFile("src/test/examples/weightedset-summaryto.sd");
+ Schema schema = ApplicationBuilder.buildFromFile("src/test/examples/weightedset-summaryto.sd");
assertNotNull(schema);
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/documentmodel/DocumentModelBuilderImportedFieldsTestCase.java b/config-model/src/test/java/com/yahoo/vespa/documentmodel/DocumentModelBuilderImportedFieldsTestCase.java
index 754979fb391..33d84cf4313 100644
--- a/config-model/src/test/java/com/yahoo/vespa/documentmodel/DocumentModelBuilderImportedFieldsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/documentmodel/DocumentModelBuilderImportedFieldsTestCase.java
@@ -1,7 +1,7 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.documentmodel;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.parser.ParseException;
import org.junit.Test;
@@ -27,27 +27,27 @@ public class DocumentModelBuilderImportedFieldsTestCase extends AbstractReferenc
}
private static class TestDocumentModelBuilder {
- private final SchemaBuilder builder = new SchemaBuilder();
+ private final ApplicationBuilder builder = new ApplicationBuilder();
public TestDocumentModelBuilder addCampaign() throws ParseException {
- builder.importString(joinLines("search campaign {",
- " document campaign {",
- " field cool_field type string { indexing: attribute }",
- " field swag_field type long { indexing: attribute }",
- " }",
- "}"));
+ builder.addSchema(joinLines("search campaign {",
+ " document campaign {",
+ " field cool_field type string { indexing: attribute }",
+ " field swag_field type long { indexing: attribute }",
+ " }",
+ "}"));
return this;
}
public TestDocumentModelBuilder addPerson() throws ParseException {
- builder.importString(joinLines("search person {",
- " document person {",
- " field name type string { indexing: attribute }",
- " }",
- "}"));
+ builder.addSchema(joinLines("search person {",
+ " document person {",
+ " field name type string { indexing: attribute }",
+ " }",
+ "}"));
return this;
}
public DocumentModel build(String adSdContent) throws ParseException {
- builder.importString(adSdContent);
- builder.build();
+ builder.addSchema(adSdContent);
+ builder.build(true);
return builder.getModel();
}
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/documentmodel/DocumentModelBuilderReferenceTypeTestCase.java b/config-model/src/test/java/com/yahoo/vespa/documentmodel/DocumentModelBuilderReferenceTypeTestCase.java
index f9b9bf2610e..00f39a23a8f 100644
--- a/config-model/src/test/java/com/yahoo/vespa/documentmodel/DocumentModelBuilderReferenceTypeTestCase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/documentmodel/DocumentModelBuilderReferenceTypeTestCase.java
@@ -3,7 +3,7 @@ package com.yahoo.vespa.documentmodel;
import com.yahoo.document.ReferenceDataType;
import com.yahoo.documentmodel.NewDocumentType;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.parser.ParseException;
import org.junit.Test;
@@ -56,22 +56,22 @@ public class DocumentModelBuilderReferenceTypeTestCase extends AbstractReference
}
private static class TestDocumentModelBuilder {
- private final SchemaBuilder builder = new SchemaBuilder();
+ private final ApplicationBuilder builder = new ApplicationBuilder();
public TestDocumentModelBuilder addCampaign() throws ParseException {
- builder.importString(joinLines("search campaign {",
- " document campaign {}",
- "}"));
+ builder.addSchema(joinLines("search campaign {",
+ " document campaign {}",
+ "}"));
return this;
}
public TestDocumentModelBuilder addPerson() throws ParseException {
- builder.importString(joinLines("search person {",
- " document person {}",
- "}"));
+ builder.addSchema(joinLines("search person {",
+ " document person {}",
+ "}"));
return this;
}
public DocumentModel build(String adSdContent) throws ParseException {
- builder.importString(adSdContent);
- builder.build();
+ builder.addSchema(adSdContent);
+ builder.build(true);
return builder.getModel();
}
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/documentmodel/DocumentModelBuilderTestCase.java b/config-model/src/test/java/com/yahoo/vespa/documentmodel/DocumentModelBuilderTestCase.java
index 9dfd05b6fdc..dc88590a198 100644
--- a/config-model/src/test/java/com/yahoo/vespa/documentmodel/DocumentModelBuilderTestCase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/documentmodel/DocumentModelBuilderTestCase.java
@@ -3,7 +3,7 @@ package com.yahoo.vespa.documentmodel;
import com.yahoo.document.config.DocumenttypesConfig;
import com.yahoo.document.config.DocumentmanagerConfig;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.AbstractSchemaTestCase;
import com.yahoo.searchdefinition.parser.ParseException;
import com.yahoo.vespa.configmodel.producers.DocumentManager;
@@ -35,10 +35,10 @@ public class DocumentModelBuilderTestCase extends AbstractSchemaTestCase {
@Test
public void testDocumentTypesWithDocumentField() throws IOException, ParseException {
- SchemaBuilder search = new SchemaBuilder();
- search.importFile("src/test/configmodel/types/other_doc.sd");
- search.importFile("src/test/configmodel/types/type_with_doc_field.sd");
- search.build();
+ ApplicationBuilder search = new ApplicationBuilder();
+ search.addSchemaFile("src/test/configmodel/types/other_doc.sd");
+ search.addSchemaFile("src/test/configmodel/types/type_with_doc_field.sd");
+ search.build(true);
DocumentModel model = search.getModel();
DocumenttypesConfig.Builder documenttypesCfg = new DocumentTypes().produce(model, new DocumenttypesConfig.Builder());
@@ -48,15 +48,15 @@ public class DocumentModelBuilderTestCase extends AbstractSchemaTestCase {
@Test
public void testMultipleInheritanceArray() throws IOException, ParseException {
- SchemaBuilder search = new SchemaBuilder();
- search.importFile("src/test/cfg/search/data/travel/schemas/TTData.sd");
- search.importFile("src/test/cfg/search/data/travel/schemas/TTEdge.sd");
- search.importFile("src/test/cfg/search/data/travel/schemas/TTPOI.sd");
- search.build();
+ ApplicationBuilder search = new ApplicationBuilder();
+ search.addSchemaFile("src/test/cfg/search/data/travel/schemas/TTData.sd");
+ search.addSchemaFile("src/test/cfg/search/data/travel/schemas/TTEdge.sd");
+ search.addSchemaFile("src/test/cfg/search/data/travel/schemas/TTPOI.sd");
+ search.build(true);
}
private DocumentModel createAndTestModel(String sd) throws IOException, ParseException {
- SchemaBuilder search = SchemaBuilder.createFromFile(sd);
+ ApplicationBuilder search = ApplicationBuilder.createFromFile(sd);
DocumentModel model = search.getModel();
assertEquals(2, model.getDocumentManager().getTypes().size());
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/HostResourceTest.java b/config-model/src/test/java/com/yahoo/vespa/model/HostResourceTest.java
index 80a388a822e..4d8dd3dacfd 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/HostResourceTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/HostResourceTest.java
@@ -26,7 +26,7 @@ public class HostResourceTest {
TestService service = new TestService(root, 1);
try {
- service.initService(root.deployLogger());
+ service.initService(root.getDeployState());
} catch (RuntimeException e) {
assertTrue(e.getMessage().endsWith("No host found for service 'hostresourcetest$testservice0'. " +
"The hostalias is probably missing from hosts.xml."));
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/ClusterControllerTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/ClusterControllerTestCase.java
index 474013c17fc..8012a00076b 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/admin/ClusterControllerTestCase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/ClusterControllerTestCase.java
@@ -291,7 +291,7 @@ public class ClusterControllerTestCase extends DomBuilderTest {
Service cc = model.getService("admin/cluster-controllers/0").get();
assertTrue(cc instanceof ClusterControllerContainer);
- assertEquals("-Dio.netty.allocator.pageSize=4096 -Dio.netty.allocator.maxOrder=8", cc.getJvmOptions());
+ assertEquals("-Dio.netty.allocator.pageSize=4096 -Dio.netty.allocator.maxOrder=5 -Dio.netty.allocator.numHeapArenas=1 -Dio.netty.allocator.numDirectArenas=1", cc.getJvmOptions());
}
private boolean existsHostsWithClusterControllerConfigId(VespaModel model) {
@@ -397,7 +397,7 @@ public class ClusterControllerTestCase extends DomBuilderTest {
assertEquals("-XX:+UseG1GC -XX:MaxTenuringThreshold=15", qrStartConfig.jvm().gcopts());
assertEquals(512, qrStartConfig.jvm().stacksize());
assertEquals(0, qrStartConfig.jvm().directMemorySizeCache());
- assertEquals(75, qrStartConfig.jvm().baseMaxDirectMemorySize());
+ assertEquals(16, qrStartConfig.jvm().baseMaxDirectMemorySize());
assertReindexingConfigPresent(model);
assertReindexingConfiguredOnAdminCluster(model);
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/AwsAccessControlValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/AwsAccessControlValidatorTest.java
deleted file mode 100644
index e2386e145ca..00000000000
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/AwsAccessControlValidatorTest.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.model.application.validation;
-
-import com.yahoo.config.provision.Cloud;
-import com.yahoo.config.provision.Environment;
-import com.yahoo.config.provision.RegionName;
-import com.yahoo.config.provision.SystemName;
-import com.yahoo.config.provision.Zone;
-import org.junit.Before;
-
-/**
- * @author gjoranv
- */
-public class AwsAccessControlValidatorTest extends AccessControlValidatorTestBase {
-
- @Before
- public void setup() {
- validator = new AwsAccessControlValidator();
- zone = new Zone(Cloud.builder().requireAccessControl(true).build(),
- SystemName.main, Environment.prod, RegionName.from("foo"));
- }
-
-}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/BundleValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/BundleValidatorTest.java
index e2eae30d78d..b5b93be6cd7 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/BundleValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/BundleValidatorTest.java
@@ -2,39 +2,44 @@
package com.yahoo.vespa.model.application.validation;
import com.yahoo.config.application.api.DeployLogger;
-import com.yahoo.config.model.application.provider.BaseDeployLogger;
+import com.yahoo.config.model.deploy.DeployState;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
-import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
+import java.nio.file.Path;
import java.nio.file.Paths;
+import java.util.jar.JarEntry;
import java.util.jar.JarFile;
-import java.util.jar.Manifest;
+import java.util.jar.JarOutputStream;
+import static com.yahoo.yolean.Exceptions.uncheck;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class BundleValidatorTest {
- private static final String JARS_DIR = "src/test/cfg/application/validation/testjars/";
+ @Rule
+ public TemporaryFolder tempDir = new TemporaryFolder();
@Test
public void basicBundleValidation() throws Exception {
// Valid jar file
- JarFile ok = new JarFile(new File(JARS_DIR + "ok.jar"));
+ JarFile ok = createTemporaryJarFile("ok");
BundleValidator bundleValidator = new BundleValidator();
- bundleValidator.validateJarFile(new BaseDeployLogger(), ok);
+ bundleValidator.validateJarFile(DeployState.createTestState(), ok);
// No manifest
- validateWithException("nomanifest.jar", "Non-existing or invalid manifest in " + JARS_DIR + "nomanifest.jar");
+ validateWithException("nomanifest", "Non-existing or invalid manifest in nomanifest.jar");
}
private void validateWithException(String jarName, String exceptionMessage) throws IOException {
try {
- JarFile jarFile = new JarFile(JARS_DIR + jarName);
+ JarFile jarFile = createTemporaryJarFile(jarName);
BundleValidator bundleValidator = new BundleValidator();
- bundleValidator.validateJarFile(new BaseDeployLogger(), jarFile);
+ bundleValidator.validateJarFile(DeployState.createTestState(), jarFile);
assert (false);
} catch (IllegalArgumentException e) {
assertEquals(e.getMessage(), exceptionMessage);
@@ -45,26 +50,48 @@ public class BundleValidatorTest {
public void require_that_deploying_snapshot_bundle_gives_warning() throws IOException {
final StringBuffer buffer = new StringBuffer();
- DeployLogger logger = createDeployLogger(buffer);
-
- new BundleValidator().validateJarFile(logger, new JarFile(JARS_DIR + "snapshot_bundle.jar"));
+ DeployState state = createDeployState(buffer);
+ JarFile jarFile = createTemporaryJarFile("snapshot_bundle");
+ new BundleValidator().validateJarFile(state, jarFile);
assertTrue(buffer.toString().contains("Deploying snapshot bundle"));
}
@Test
public void outputs_deploy_warning_on_import_of_packages_from_deprecated_artifact() throws IOException {
final StringBuffer buffer = new StringBuffer();
- DeployLogger logger = createDeployLogger(buffer);
+ DeployState state = createDeployState(buffer);
BundleValidator validator = new BundleValidator();
- Manifest manifest = new Manifest(Files.newInputStream(Paths.get(JARS_DIR + "/manifest-producing-import-warnings.MF")));
- validator.validateManifest(logger, "my-app-bundle.jar", manifest);
+ JarFile jarFile = createTemporaryJarFile("import-warnings");
+ validator.validateJarFile(state, jarFile);
assertThat(buffer.toString())
- .contains("For JAR file 'my-app-bundle.jar': \n" +
- "Manifest imports the following Java packages from 'org.json:json': [org.json]. \n" +
- "The org.json library will no longer provided by jdisc runtime on Vespa 8. See https://docs.vespa.ai/en/vespa8-release-notes.html#container-runtime.");
+ .contains("JAR file 'import-warnings.jar' imports the packages [org.json] from 'org.json:json'. \n" +
+ "This bundle is no longer provided on Vespa 8 - see https://docs.vespa.ai/en/vespa8-release-notes.html#container-runtime.");
}
- private DeployLogger createDeployLogger(StringBuffer buffer) {
- return (__, message) -> buffer.append(message).append('\n');
+ private DeployState createDeployState(StringBuffer buffer) {
+ DeployLogger logger = (__, message) -> buffer.append(message).append('\n');
+ return DeployState.createTestState(logger);
}
+
+ private JarFile createTemporaryJarFile(String testArtifact) throws IOException {
+ Path jarFile = tempDir.newFile(testArtifact + ".jar").toPath();
+ Path artifactDirectory = Paths.get("src/test/cfg/application/validation/testjars/" + testArtifact);
+ try (JarOutputStream out = new JarOutputStream(Files.newOutputStream(jarFile))) {
+ Files.walk(artifactDirectory).forEach(path -> {
+ Path relativePath = artifactDirectory.relativize(path);
+ String zipName = relativePath.toString();
+ uncheck(() -> {
+ if (Files.isDirectory(path)) {
+ out.putNextEntry(new JarEntry(zipName + "/"));
+ } else {
+ out.putNextEntry(new JarEntry(zipName));
+ out.write(Files.readAllBytes(path));
+ }
+ out.closeEntry();
+ });
+ });
+ }
+ return new JarFile(jarFile.toFile());
+ }
+
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ComplexAttributeFieldsValidatorTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ComplexAttributeFieldsValidatorTestCase.java
index 689f1c70b6e..85050aa0cf9 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ComplexAttributeFieldsValidatorTestCase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ComplexAttributeFieldsValidatorTestCase.java
@@ -105,7 +105,7 @@ public class ComplexAttributeFieldsValidatorTestCase {
DeployState deployState = createDeployState(servicesXml(), schema);
VespaModel model = new VespaModel(new NullConfigModelRegistry(), deployState);
ValidationParameters validationParameters = new ValidationParameters(CheckRouting.FALSE);
- Validation.validate(model, validationParameters, deployState);
+ new Validation().validate(model, validationParameters, deployState);
}
private static DeployState createDeployState(String servicesXml, String schema) {
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ConstantTensorJsonValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ConstantTensorJsonValidatorTest.java
index 90d5c0b27a4..3b5c621a581 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ConstantTensorJsonValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ConstantTensorJsonValidatorTest.java
@@ -10,7 +10,7 @@ import java.io.Reader;
import java.io.StringReader;
import static com.yahoo.test.json.JsonTestHelper.inputJson;
-import static com.yahoo.vespa.model.application.validation.ConstantTensorJsonValidator.InvalidConstantTensor;
+import static com.yahoo.vespa.model.application.validation.ConstantTensorJsonValidator.InvalidConstantTensorException;
public class ConstantTensorJsonValidatorTest {
@@ -88,7 +88,7 @@ public class ConstantTensorJsonValidatorTest {
@Test
public void ensure_that_bound_tensor_outside_limits_is_disallowed() {
- expectedException.expect(InvalidConstantTensor.class);
+ expectedException.expect(InvalidConstantTensorException.class);
expectedException.expectMessage("Index 5 not within limits of bound dimension 'x'");
validateTensorJson(
@@ -121,7 +121,7 @@ public class ConstantTensorJsonValidatorTest {
@Test
public void ensure_that_non_integer_strings_in_address_points_are_disallowed_unbound() {
- expectedException.expect(InvalidConstantTensor.class);
+ expectedException.expect(InvalidConstantTensorException.class);
expectedException.expectMessage("Index 'a' for dimension 'x' is not an integer");
validateTensorJson(
@@ -139,7 +139,7 @@ public class ConstantTensorJsonValidatorTest {
@Test
public void ensure_that_tensor_coordinates_are_strings() {
- expectedException.expect(InvalidConstantTensor.class);
+ expectedException.expect(InvalidConstantTensorException.class);
expectedException.expectMessage("Tensor label is not a string (VALUE_NUMBER_INT)");
validateTensorJson(
@@ -157,7 +157,7 @@ public class ConstantTensorJsonValidatorTest {
@Test
public void ensure_that_non_integer_strings_in_address_points_are_disallowed_bounded() {
- expectedException.expect(InvalidConstantTensor.class);
+ expectedException.expect(InvalidConstantTensorException.class);
expectedException.expectMessage("Index 'a' for dimension 'x' is not an integer");
validateTensorJson(
@@ -175,7 +175,7 @@ public class ConstantTensorJsonValidatorTest {
@Test
public void ensure_that_missing_coordinates_fail() {
- expectedException.expect(InvalidConstantTensor.class);
+ expectedException.expect(InvalidConstantTensorException.class);
expectedException.expectMessage("Tensor address missing dimension(s) y, z");
validateTensorJson(
@@ -193,7 +193,7 @@ public class ConstantTensorJsonValidatorTest {
@Test
public void ensure_that_non_number_values_are_disallowed() {
- expectedException.expect(InvalidConstantTensor.class);
+ expectedException.expect(InvalidConstantTensorException.class);
expectedException.expectMessage("Tensor value is not a number (VALUE_STRING)");
validateTensorJson(
@@ -211,7 +211,7 @@ public class ConstantTensorJsonValidatorTest {
@Test
public void ensure_that_extra_dimensions_are_disallowed() {
- expectedException.expect(InvalidConstantTensor.class);
+ expectedException.expect(InvalidConstantTensorException.class);
expectedException.expectMessage("Tensor dimension 'z' does not exist");
validateTensorJson(
@@ -229,7 +229,7 @@ public class ConstantTensorJsonValidatorTest {
@Test
public void ensure_that_duplicate_dimensions_are_disallowed() {
- expectedException.expect(InvalidConstantTensor.class);
+ expectedException.expect(InvalidConstantTensorException.class);
expectedException.expectMessage("Duplicate tensor dimension 'y'");
validateTensorJson(
@@ -247,7 +247,7 @@ public class ConstantTensorJsonValidatorTest {
@Test
public void ensure_that_invalid_json_fails() {
- expectedException.expect(InvalidConstantTensor.class);
+ expectedException.expect(InvalidConstantTensorException.class);
expectedException.expectMessage("Failed to parse JSON stream");
validateTensorJson(
@@ -265,7 +265,7 @@ public class ConstantTensorJsonValidatorTest {
@Test
public void ensure_that_invalid_json_not_in_tensor_format_fails() {
- expectedException.expect(InvalidConstantTensor.class);
+ expectedException.expect(InvalidConstantTensorException.class);
expectedException.expectMessage("Expected field name 'cells', got 'stats'");
validateTensorJson(TensorType.fromSpec("tensor(x[], y[])"),
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/RankingConstantsValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/RankingConstantsValidatorTest.java
index b1847e5d134..f6fa73dce74 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/RankingConstantsValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/RankingConstantsValidatorTest.java
@@ -4,7 +4,7 @@ package com.yahoo.vespa.model.application.validation;
import com.yahoo.vespa.model.test.utils.VespaModelCreatorWithFilePkg;
import org.junit.Test;
-import static com.yahoo.vespa.model.application.validation.RankingConstantsValidator.TensorValidationFailed;
+import static com.yahoo.vespa.model.application.validation.RankingConstantsValidator.TensorValidationException;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@@ -20,7 +20,7 @@ public class RankingConstantsValidatorTest {
try {
new VespaModelCreatorWithFilePkg("src/test/cfg/application/validation/ranking_constants_fail/").create();
fail();
- } catch (TensorValidationFailed e) {
+ } catch (TensorValidationException e) {
assertTrue(e.getMessage().contains("Ranking constant 'constant_tensor_2' (tensors/constant_tensor_2.json): Tensor label is not a string (VALUE_NUMBER_INT)"));
assertTrue(e.getMessage().contains("Ranking constant 'constant_tensor_3' (tensors/constant_tensor_3.json): Tensor dimension 'cd' does not exist"));
assertTrue(e.getMessage().contains("Ranking constant 'constant_tensor_4' (tensors/constant_tensor_4.json): Tensor dimension 'z' does not exist"));
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ValidationOverridesValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ValidationOverridesValidatorTest.java
index 16bff341c0b..93d42e07dd8 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ValidationOverridesValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ValidationOverridesValidatorTest.java
@@ -37,7 +37,7 @@ public class ValidationOverridesValidatorTest {
var deployState = createDeployState(validationOverridesXml);
VespaModel model = new VespaModel(new NullConfigModelRegistry(), deployState);
- Validation.validate(model, new ValidationParameters(), deployState);
+ new Validation().validate(model, new ValidationParameters(), deployState);
}
@Test
@@ -58,7 +58,7 @@ public class ValidationOverridesValidatorTest {
try {
var deployState = createDeployState(validationOverridesXml);
VespaModel model = new VespaModel(new NullConfigModelRegistry(), deployState);
- Validation.validate(model, new ValidationParameters(), deployState);
+ new Validation().validate(model, new ValidationParameters(), deployState);
fail("Did not get expected exception");
} catch (IllegalArgumentException e) {
assertEquals(message, e.getMessage());
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/first/AccessControlOnFirstDeploymentValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/first/AccessControlOnFirstDeploymentValidatorTest.java
deleted file mode 100644
index b9e92e1b866..00000000000
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/first/AccessControlOnFirstDeploymentValidatorTest.java
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.model.application.validation.first;
-
-import com.yahoo.config.provision.Environment;
-import com.yahoo.config.provision.RegionName;
-import com.yahoo.config.provision.Zone;
-import com.yahoo.vespa.model.application.validation.AccessControlValidatorTestBase;
-import org.junit.Before;
-
-/**
- * @author gjoranv
- */
-public class AccessControlOnFirstDeploymentValidatorTest extends AccessControlValidatorTestBase {
-
- @Before
- public void setup() {
- validator = new AccessControlOnFirstDeploymentValidator();
- zone = new Zone(Environment.prod, RegionName.from("foo"));
- }
-
-}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java
index c746db168ee..77fa0b685fb 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java
@@ -13,6 +13,7 @@ import com.yahoo.vespa.config.ConfigDefinitionKey;
import com.yahoo.vespa.config.ConfigPayloadBuilder;
import com.yahoo.vespa.config.GenericConfig;
import com.yahoo.vespa.config.search.core.ProtonConfig;
+import com.yahoo.vespa.model.AbstractService;
import com.yahoo.vespa.model.HostResource;
import com.yahoo.vespa.model.Service;
import com.yahoo.vespa.model.VespaModel;
@@ -35,7 +36,6 @@ import java.util.List;
import static com.yahoo.config.model.api.container.ContainerServiceType.CLUSTERCONTROLLER_CONTAINER;
import static com.yahoo.config.model.api.container.ContainerServiceType.METRICS_PROXY_CONTAINER;
import static com.yahoo.vespa.config.search.core.ProtonConfig.Feeding.Shared_field_writer_executor;
-import static org.hamcrest.Matchers.containsString;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
@@ -328,10 +328,64 @@ public class ContentBuilderTest extends DomBuilderTest {
assertEquals(200000, b.getRootGroup().getMmapNoCoreLimit().get().longValue());
assertEquals(2, s.getSearchNodes().size());
- assertEquals(200000, s.getSearchNodes().get(0).getMMapNoCoreLimit());
- assertEquals(200000, s.getSearchNodes().get(1).getMMapNoCoreLimit());
- assertEquals("VESPA_MMAP_NOCORE_LIMIT=200000 ", s.getSearchNodes().get(0).getMMapNoCoreEnvVariable());
- assertEquals("VESPA_MMAP_NOCORE_LIMIT=200000 ", s.getSearchNodes().get(1).getMMapNoCoreEnvVariable());
+ assertTrue(s.getSearchNodes().get(0).getEnv().contains("VESPA_MMAP_NOCORE_LIMIT=200000"));
+ assertTrue(s.getSearchNodes().get(1).getEnv().contains("VESPA_MMAP_NOCORE_LIMIT=200000"));
+ }
+
+ @Test
+ public void canAddEnvironmentVariable() {
+ ContentCluster b = createContent(
+ "<content version =\"1.0\" id=\"b\">" +
+ " <redundancy>1</redundancy>" +
+ " <documents>" +
+ " <document type='music' mode='index'/>" +
+ " </documents>" +
+ " <group>" +
+ " <node hostalias=\"mockhost\" distribution-key=\"0\" />" +
+ " </group>" +
+ "</content>");
+ ContentSearchCluster s;
+
+ s = b.getSearch();
+ assertTrue(s.hasIndexedCluster());
+ assertNotNull(s.getIndexed());
+ assertEquals(1, b.getStorageCluster().getChildren().size());
+
+ assertEquals(1, s.getSearchNodes().size());
+ AbstractService node = s.getSearchNodes().get(0);
+ node.addEnvironmentVariable("MY_ENV_1", 7);
+ node.addEnvironmentVariable("MY_ENV_2", "7 8");
+ assertTrue(node.getEnv().contains("MY_ENV_1=7"));
+ assertTrue(node.getEnv().contains("MY_ENV_2=\"7 8\""));
+ node.addEnvironmentVariable("MY_PARSED_ENV_1=7");
+ node.addEnvironmentVariable("MY_PARSED_ENV_2=7 8");
+ assertTrue(node.getEnv().contains("MY_PARSED_ENV_1=\"7\""));
+ assertTrue(node.getEnv().contains("MY_PARSED_ENV_2=\"7 8\""));
+ }
+
+ @Test
+ public void addsEnvironmentVariablesfromFeatureFlag() {
+ ContentCluster b = createContent(
+ "<content version =\"1.0\" id=\"b\">" +
+ " <redundancy>1</redundancy>" +
+ " <documents>" +
+ " <document type='music' mode='index'/>" +
+ " </documents>" +
+ " <group>" +
+ " <node hostalias=\"mockhost\" distribution-key=\"0\" />" +
+ " </group>" +
+ "</content>", new TestProperties().setEnvironmentVariables(List.of("MY_1_ENV=xyz abc", "MY_2_ENV=2")));
+ ContentSearchCluster s;
+
+ s = b.getSearch();
+ assertTrue(s.hasIndexedCluster());
+ assertNotNull(s.getIndexed());
+ assertEquals(1, b.getStorageCluster().getChildren().size());
+
+ assertEquals(1, s.getSearchNodes().size());
+ AbstractService node = s.getSearchNodes().get(0);
+ assertTrue(node.getEnv().contains("MY_1_ENV=\"xyz abc\""));
+ assertTrue(node.getEnv().contains("MY_2_ENV=\"2\""));
}
@Test
@@ -357,10 +411,8 @@ public class ContentBuilderTest extends DomBuilderTest {
assertTrue(b.getRootGroup().getCoreOnOOM().get());
assertEquals(2, s.getSearchNodes().size());
- assertTrue(s.getSearchNodes().get(0).getCoreOnOOM());
- assertTrue(s.getSearchNodes().get(1).getCoreOnOOM());
- assertEquals("", s.getSearchNodes().get(0).getCoreOnOOMEnvVariable());
- assertEquals("", s.getSearchNodes().get(1).getCoreOnOOMEnvVariable());
+ assertFalse(s.getSearchNodes().get(0).getEnv().contains("VESPA_SILENCE_CORE_ON_OOM=true"));
+ assertFalse(s.getSearchNodes().get(1).getEnv().contains("VESPA_SILENCE_CORE_ON_OOM=true"));
}
@Test
@@ -383,10 +435,8 @@ public class ContentBuilderTest extends DomBuilderTest {
assertFalse(b.getRootGroup().getCoreOnOOM().isPresent());
assertEquals(2, s.getSearchNodes().size());
- assertFalse(s.getSearchNodes().get(0).getCoreOnOOM());
- assertFalse(s.getSearchNodes().get(1).getCoreOnOOM());
- assertEquals("VESPA_SILENCE_CORE_ON_OOM=true ", s.getSearchNodes().get(0).getCoreOnOOMEnvVariable());
- assertEquals("VESPA_SILENCE_CORE_ON_OOM=true ", s.getSearchNodes().get(1).getCoreOnOOMEnvVariable());
+ assertTrue(s.getSearchNodes().get(0).getEnv().contains("VESPA_SILENCE_CORE_ON_OOM=true"));
+ assertTrue(s.getSearchNodes().get(1).getEnv().contains("VESPA_SILENCE_CORE_ON_OOM=true"));
}
@Test
@@ -409,10 +459,8 @@ public class ContentBuilderTest extends DomBuilderTest {
assertFalse(b.getRootGroup().getMmapNoCoreLimit().isPresent());
assertEquals(2, s.getSearchNodes().size());
- assertEquals(200000, s.getSearchNodes().get(0).getMMapNoCoreLimit());
- assertEquals(-1, s.getSearchNodes().get(1).getMMapNoCoreLimit());
- assertEquals("VESPA_MMAP_NOCORE_LIMIT=200000 ", s.getSearchNodes().get(0).getMMapNoCoreEnvVariable());
- assertEquals("", s.getSearchNodes().get(1).getMMapNoCoreEnvVariable());
+ assertTrue(s.getSearchNodes().get(0).getEnv().contains("VESPA_MMAP_NOCORE_LIMIT=200000"));
+ assertFalse(s.getSearchNodes().get(1).getEnv().contains("VESPA_MMAP_NOCORE_LIMIT="));
}
@Test
@@ -435,10 +483,8 @@ public class ContentBuilderTest extends DomBuilderTest {
assertFalse(b.getRootGroup().getCoreOnOOM().isPresent());
assertEquals(2, s.getSearchNodes().size());
- assertTrue(s.getSearchNodes().get(0).getCoreOnOOM());
- assertFalse(s.getSearchNodes().get(1).getCoreOnOOM());
- assertEquals("", s.getSearchNodes().get(0).getCoreOnOOMEnvVariable());
- assertEquals("VESPA_SILENCE_CORE_ON_OOM=true ", s.getSearchNodes().get(1).getCoreOnOOMEnvVariable());
+ assertFalse(s.getSearchNodes().get(0).getEnv().contains("VESPA_SILENCE_CORE_ON_OOM=true"));
+ assertTrue(s.getSearchNodes().get(1).getEnv().contains("VESPA_SILENCE_CORE_ON_OOM=true"));
}
@Test
@@ -471,15 +517,7 @@ public class ContentBuilderTest extends DomBuilderTest {
assertEquals(4, s.getSearchNodes().size());
for (SearchNode n : s.getSearchNodes()) {
- assertEquals("proton", n.getNoVespaMalloc());
- assertEquals("VESPA_USE_NO_VESPAMALLOC=\"proton\" ", n.getNoVespaMallocEnvVariable());
- assertEquals("distributord", n.getVespaMallocDebug());
- assertEquals("VESPA_USE_VESPAMALLOC=\"storaged\" ", n.getVespaMallocEnvVariable());
- assertEquals("all", n.getVespaMallocDebugStackTrace());
- assertEquals("VESPA_USE_VESPAMALLOC_D=\"distributord\" ", n.getVespaMallocDebugEnvVariable());
- assertEquals("storaged", n.getVespaMalloc());
- assertEquals("VESPA_USE_VESPAMALLOC_DST=\"all\" ", n.getVespaMallocDebugStackTraceEnvVariable());
- assertEquals("VESPA_SILENCE_CORE_ON_OOM=true OMP_NUM_THREADS=1 VESPA_USE_NO_VESPAMALLOC=\"proton\" VESPA_USE_VESPAMALLOC=\"storaged\" VESPA_USE_VESPAMALLOC_D=\"distributord\" VESPA_USE_VESPAMALLOC_DST=\"all\" ", n.getEnvVariables());
+ assertEquals("OMP_NUM_THREADS=1 VESPA_SILENCE_CORE_ON_OOM=true VESPA_USE_NO_VESPAMALLOC=\"proton\" VESPA_USE_VESPAMALLOC=\"storaged\" VESPA_USE_VESPAMALLOC_D=\"distributord\" VESPA_USE_VESPAMALLOC_DST=\"all\"", n.getEnv());
}
}
@@ -508,10 +546,10 @@ public class ContentBuilderTest extends DomBuilderTest {
assertFalse(b.getRootGroup().getVespaMallocDebugStackTrace().isPresent());
assertEquals(4, s.getSearchNodes().size());
- assertEquals("VESPA_SILENCE_CORE_ON_OOM=true OMP_NUM_THREADS=1 VESPA_USE_NO_VESPAMALLOC=\"proton\" ", s.getSearchNodes().get(0).getEnvVariables());
- assertEquals("VESPA_SILENCE_CORE_ON_OOM=true OMP_NUM_THREADS=1 VESPA_USE_VESPAMALLOC_D=\"distributord\" ", s.getSearchNodes().get(1).getEnvVariables());
- assertEquals("VESPA_SILENCE_CORE_ON_OOM=true OMP_NUM_THREADS=1 VESPA_USE_VESPAMALLOC_DST=\"all\" ", s.getSearchNodes().get(2).getEnvVariables());
- assertEquals("VESPA_SILENCE_CORE_ON_OOM=true OMP_NUM_THREADS=1 VESPA_USE_VESPAMALLOC=\"storaged\" ", s.getSearchNodes().get(3).getEnvVariables());
+ assertEquals("OMP_NUM_THREADS=1 VESPA_SILENCE_CORE_ON_OOM=true VESPA_USE_NO_VESPAMALLOC=\"proton\"", s.getSearchNodes().get(0).getEnv());
+ assertEquals("OMP_NUM_THREADS=1 VESPA_SILENCE_CORE_ON_OOM=true VESPA_USE_VESPAMALLOC_D=\"distributord\"", s.getSearchNodes().get(1).getEnv());
+ assertEquals("OMP_NUM_THREADS=1 VESPA_SILENCE_CORE_ON_OOM=true VESPA_USE_VESPAMALLOC_DST=\"all\"", s.getSearchNodes().get(2).getEnv());
+ assertEquals("OMP_NUM_THREADS=1 VESPA_SILENCE_CORE_ON_OOM=true VESPA_USE_VESPAMALLOC=\"storaged\"", s.getSearchNodes().get(3).getEnv());
}
@Test
@@ -908,6 +946,9 @@ public class ContentBuilderTest extends DomBuilderTest {
}
private ContentCluster createContent(String xml) {
+ return createContent(xml, new TestProperties());
+ }
+ private ContentCluster createContent(String xml, TestProperties props) {
String combined = "" +
"<services>"+
" <admin version='2.0'>" +
@@ -917,12 +958,13 @@ public class ContentBuilderTest extends DomBuilderTest {
"</services>";
+ var deployStateBuilder = new DeployState.Builder().properties(props);
VespaModel m = new VespaModelCreatorWithMockPkg(new MockApplicationPackage.Builder()
- .withHosts(getHosts())
- .withServices(combined)
- .withSearchDefinition(MockApplicationPackage.MUSIC_SEARCHDEFINITION)
- .build())
- .create();
+ .withHosts(getHosts())
+ .withServices(combined)
+ .withSearchDefinition(MockApplicationPackage.MUSIC_SEARCHDEFINITION)
+ .build())
+ .create(deployStateBuilder);
return m.getContentClusters().isEmpty()
? null
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java
index eb1cf668cc9..198b5713876 100755
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java
@@ -6,7 +6,6 @@ import com.yahoo.cloud.config.ConfigserverConfig;
import com.yahoo.cloud.config.CuratorConfig;
import com.yahoo.cloud.config.ZookeeperServerConfig;
import com.yahoo.component.ComponentId;
-import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.model.api.ApplicationClusterEndpoint;
import com.yahoo.config.model.api.ContainerEndpoint;
import com.yahoo.config.model.deploy.DeployState;
@@ -178,7 +177,7 @@ public class ContainerClusterTest {
public void testClusterControllerResourceUsage() {
MockRoot root = createRoot(false);
ClusterControllerContainerCluster cluster = createClusterControllerCluster(root);
- addClusterController(root.deployLogger(), cluster, "host-c1", root.getDeployState());
+ addClusterController(cluster, "host-c1", root.getDeployState());
assertEquals(1, cluster.getContainers().size());
QrStartConfig.Builder qrBuilder = new QrStartConfig.Builder();
cluster.getConfig(qrBuilder);
@@ -190,7 +189,7 @@ public class ContainerClusterTest {
root.freezeModelTopology();
ThreadpoolConfig threadpoolConfig = root.getConfig(ThreadpoolConfig.class, "container0/component/default-threadpool");
- assertEquals(10, threadpoolConfig.maxthreads());
+ assertEquals(2, threadpoolConfig.maxthreads());
assertEquals(50, threadpoolConfig.queueSize());
}
@@ -198,7 +197,7 @@ public class ContainerClusterTest {
public void testThatLinguisticsIsExcludedForClusterControllerCluster() {
MockRoot root = createRoot(false);
ClusterControllerContainerCluster cluster = createClusterControllerCluster(root);
- addClusterController(root.deployLogger(), cluster, "host-c1", root.getDeployState());
+ addClusterController(cluster, "host-c1", root.getDeployState());
assertFalse(contains("com.yahoo.language.provider.DefaultLinguisticsProvider", cluster.getAllComponents()));
}
@@ -365,71 +364,61 @@ public class ContainerClusterTest {
assertNames(main,
ApplicationId.from("t1", "a1", "i1"),
Set.of(),
- List.of("search-cluster.i1.a1.t1.endpoint.suffix"),
- List.of("search-cluster--i1--a1--t1.endpoint.suffix"));
+ List.of("search-cluster.i1.a1.t1.endpoint.suffix"));
assertNames(main,
ApplicationId.from("t1", "a1", "default"),
Set.of(),
- List.of("search-cluster.a1.t1.endpoint.suffix"),
- List.of("search-cluster--a1--t1.endpoint.suffix"));
+ List.of("search-cluster.a1.t1.endpoint.suffix"));
assertNames(main,
ApplicationId.from("t1", "default", "default"),
Set.of(),
- List.of("search-cluster.default.t1.endpoint.suffix"),
- List.of("search-cluster--default--t1.endpoint.suffix"));
+ List.of("search-cluster.default.t1.endpoint.suffix"));
assertNames(main,
ApplicationId.from("t1", "a1", "default"),
Set.of(new ContainerEndpoint("not-in-this-cluster", global, List.of("foo", "bar"))),
- List.of("search-cluster.a1.t1.endpoint.suffix"),
- List.of("search-cluster--a1--t1.endpoint.suffix"));
+ List.of("search-cluster.a1.t1.endpoint.suffix"));
assertNames(main,
ApplicationId.from("t1", "a1", "default"),
Set.of(new ContainerEndpoint("search-cluster", global, List.of("rotation-1.x.y.z", "rotation-2.x.y.z"), OptionalInt.empty(), sharedLayer4),
new ContainerEndpoint("search-cluster", application, List.of("app-rotation.x.y.z"), OptionalInt.of(3), sharedLayer4)),
- List.of("search-cluster.a1.t1.endpoint.suffix", "rotation-1.x.y.z", "rotation-2.x.y.z", "app-rotation.x.y.z"),
- List.of("search-cluster--a1--t1.endpoint.suffix"));
+ List.of("search-cluster.a1.t1.endpoint.suffix", "rotation-1.x.y.z", "rotation-2.x.y.z", "app-rotation.x.y.z"));
// cd system:
assertNames(cd,
ApplicationId.from("t1", "a1", "i1"),
Set.of(),
- List.of("search-cluster.cd.i1.a1.t1.endpoint.suffix"),
- List.of("search-cluster--cd--i1--a1--t1.endpoint.suffix"));
+ List.of("search-cluster.cd.i1.a1.t1.endpoint.suffix"));
assertNames(cd,
ApplicationId.from("t1", "a1", "default"),
Set.of(),
- List.of("search-cluster.cd.a1.t1.endpoint.suffix"),
- List.of("search-cluster--cd--a1--t1.endpoint.suffix"));
+ List.of("search-cluster.cd.a1.t1.endpoint.suffix"));
assertNames(cd,
ApplicationId.from("t1", "default", "default"),
Set.of(),
- List.of("search-cluster.cd.default.t1.endpoint.suffix"),
- List.of("search-cluster--cd--default--t1.endpoint.suffix"));
+ List.of("search-cluster.cd.default.t1.endpoint.suffix"));
assertNames(cd,
ApplicationId.from("t1", "a1", "default"),
Set.of(new ContainerEndpoint("not-in-this-cluster", global, List.of("foo", "bar"))),
- List.of("search-cluster.cd.a1.t1.endpoint.suffix"),
- List.of("search-cluster--cd--a1--t1.endpoint.suffix"));
+ List.of("search-cluster.cd.a1.t1.endpoint.suffix"));
assertNames(cd,
ApplicationId.from("t1", "a1", "default"),
Set.of(new ContainerEndpoint("search-cluster", global, List.of("rotation-1.x.y.z", "rotation-2.x.y.z"), OptionalInt.empty(), sharedLayer4),
- new ContainerEndpoint("search-cluster", global, List.of("a--b.x.y.z", "rotation-2.x.y.z"), OptionalInt.empty(), shared),
+ new ContainerEndpoint("search-cluster", global, List.of("a.b.x.y.z", "rotation-2.x.y.z"), OptionalInt.empty(), shared),
new ContainerEndpoint("search-cluster", application, List.of("app-rotation.x.y.z"), OptionalInt.of(3), sharedLayer4),
new ContainerEndpoint("not-supported", global, List.of("not.supported"), OptionalInt.empty(), exclusive)),
- List.of("search-cluster.cd.a1.t1.endpoint.suffix", "rotation-1.x.y.z", "rotation-2.x.y.z", "app-rotation.x.y.z"),
- List.of("search-cluster--cd--a1--t1.endpoint.suffix", "a--b.x.y.z", "rotation-2.x.y.z"));
+ List.of("search-cluster.cd.a1.t1.endpoint.suffix", "rotation-1.x.y.z", "rotation-2.x.y.z", "app-rotation.x.y.z"));
}
- private void assertNames(SystemName systemName, ApplicationId appId, Set<ContainerEndpoint> globalEndpoints, List<String> expectedSharedL4Names, List<String> expectedSharedNames) {
+ private void assertNames(SystemName systemName, ApplicationId appId, Set<ContainerEndpoint> globalEndpoints, List<String> expectedSharedL4Names) {
Zone zone = new Zone(systemName, Environment.defaultEnvironment(), RegionName.defaultName());
DeployState state = new DeployState.Builder()
.zone(zone)
@@ -445,7 +434,7 @@ public class ContainerClusterTest {
cluster.doPrepare(state);
List<ApplicationClusterEndpoint> endpoints = cluster.endpoints();
- assertNames(expectedSharedNames, endpoints.stream().filter(e -> e.routingMethod() == shared).collect(Collectors.toList()));
+ assertNames(List.of(), endpoints.stream().filter(e -> e.routingMethod() == shared).collect(Collectors.toList()));
assertNames(expectedSharedL4Names, endpoints.stream().filter(e -> e.routingMethod() == sharedLayer4).collect(Collectors.toList()));
List<ContainerEndpoint> endpointsWithWeight =
@@ -493,17 +482,16 @@ public class ContainerClusterTest {
HostResource hostResource) {
ApplicationContainer container = new ApplicationContainer(cluster, name, 0, root.getDeployState());
container.setHostResource(hostResource);
- container.initService(root.deployLogger());
+ container.initService(root.getDeployState());
cluster.addContainer(container);
}
- private static void addClusterController(DeployLogger deployLogger,
- ClusterControllerContainerCluster cluster,
+ private static void addClusterController(ClusterControllerContainerCluster cluster,
String hostName,
DeployState deployState) {
ClusterControllerContainer container = new ClusterControllerContainer(cluster, 1, false, deployState, false);
container.setHostResource(new HostResource(new Host(null, hostName)));
- container.initService(deployLogger);
+ container.initService(deployState);
cluster.addContainer(container);
}
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 4ca85a19c35..29cff23d3bd 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
@@ -73,7 +73,7 @@ public class ConfigserverClusterTest {
assertZookeeperServerProperty(config.server(), ZookeeperServerConfig.Server::hostname, "cfg1", "localhost", "cfg3");
assertZookeeperServerProperty(config.server(), ZookeeperServerConfig.Server::id, 4, 2, 3);
assertEquals(2, config.myid());
- assertEquals("", config.snapshotMethod());
+ assertEquals("gz", config.snapshotMethod());
}
@Test(expected = IllegalArgumentException.class)
@@ -152,8 +152,7 @@ public class ConfigserverClusterTest {
.useVespaVersionInRequest(true)
.hostedVespa(hostedVespa)
.environment("test")
- .region("bar")
- .zooKeeperSnapshotMethod(hostedVespa ? "gz" : "");
+ .region("bar");
Optional.of(configServerHostnames)
.filter(hostnames -> !hostnames.isEmpty())
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/configserver/TestOptions.java b/config-model/src/test/java/com/yahoo/vespa/model/container/configserver/TestOptions.java
index fc7f8674149..95c3262f2f5 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/configserver/TestOptions.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/configserver/TestOptions.java
@@ -3,7 +3,6 @@ package com.yahoo.vespa.model.container.configserver;
import com.yahoo.vespa.model.container.configserver.option.CloudConfigOptions;
-import java.util.Objects;
import java.util.Optional;
/**
@@ -18,7 +17,6 @@ public class TestOptions implements CloudConfigOptions {
private Optional<String> region = Optional.empty();
private Optional<Boolean> useVespaVersionInRequest = Optional.empty();
private Optional<Boolean> hostedVespa = Optional.empty();
- private String zooKeeperSnapshotMethod = "";
@Override
public Optional<Integer> rpcPort() {
@@ -108,9 +106,6 @@ public class TestOptions implements CloudConfigOptions {
return Optional.empty();
}
- @Override
- public String zooKeeperSnapshotMethod() { return zooKeeperSnapshotMethod; }
-
public TestOptions configServers(ConfigServer[] configServers) {
this.configServers = configServers;
return this;
@@ -136,10 +131,4 @@ public class TestOptions implements CloudConfigOptions {
return this;
}
- public TestOptions zooKeeperSnapshotMethod(String snapshotMethod) {
- Objects.requireNonNull(snapshotMethod);
- this.zooKeeperSnapshotMethod = snapshotMethod;
- return this;
- }
-
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/ml/ModelsEvaluatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/ml/ModelsEvaluatorTest.java
index 5630d3cc186..f246b87d9bf 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/ml/ModelsEvaluatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/ml/ModelsEvaluatorTest.java
@@ -1,12 +1,14 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.ml;
+import ai.vespa.modelintegration.evaluator.OnnxEvaluator;
import ai.vespa.models.evaluation.FunctionEvaluator;
import ai.vespa.models.evaluation.ModelsEvaluator;
import com.yahoo.tensor.Tensor;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assume.assumeTrue;
/**
* Tests the ModelsEvaluatorTester.
@@ -17,6 +19,7 @@ public class ModelsEvaluatorTest {
@Test
public void testModelsEvaluatorTester() {
+ assumeTrue(OnnxEvaluator.isRuntimeAvailable());
ModelsEvaluator modelsEvaluator = ModelsEvaluatorTester.create("src/test/cfg/application/stateless_eval");
assertEquals(3, modelsEvaluator.models().size());
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SourceGroupTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SourceGroupTest.java
index a9bab88a065..2cb0e8f0ab1 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SourceGroupTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SourceGroupTest.java
@@ -11,6 +11,7 @@ import org.junit.Test;
import java.util.List;
import java.util.Set;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@@ -80,8 +81,8 @@ public class SourceGroupTest {
searchChains.validate();
fail("Expected exception");
} catch (Exception e) {
- assertTrue(e.getMessage().contains("Same id used for a source"));
- assertTrue(e.getMessage().contains("'sameId'"));
+ assertEquals("Id 'sameId' is used both for a source and another search chain/provider",
+ e.getMessage());
}
}
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/SchemaBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ApplicationBuilderTest.java
index b50261b7568..3490568770c 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/SchemaBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ApplicationBuilderTest.java
@@ -31,7 +31,7 @@ import static org.junit.Assert.fail;
/**
* @author gjoranv
*/
-public class SchemaBuilderTest extends ContainerModelBuilderTestBase {
+public class ApplicationBuilderTest extends ContainerModelBuilderTestBase {
private ChainsConfig chainsConfig() {
return root.getConfig(ChainsConfig.class, "default/component/com.yahoo.search.handler.SearchHandler");
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 f7dbd65ab7d..16b4a8bed9b 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
@@ -778,7 +778,7 @@ public class ContainerModelBuilderTest extends ContainerModelBuilderTestBase {
.build();
createModel(root, state, null, clusterElem);
} catch (RuntimeException e) {
- assertEquals("cloud secret store is not supported in non-public system, please see documentation",
+ assertEquals("Cloud secret store is not supported in non-public system, see the documentation",
e.getMessage());
return;
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/JvmOptionsTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/JvmOptionsTest.java
index a17459ea800..814b2f94e44 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/JvmOptionsTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/JvmOptionsTest.java
@@ -181,7 +181,7 @@ public class JvmOptionsTest extends ContainerModelBuilderTestBase {
"-XX:+ParallelGCThreads=8 foo bar");
fail();
} catch (IllegalArgumentException e) {
- assertTrue(e.getMessage().contains("Invalid JVM GC options in services.xml: bar,foo"));
+ assertTrue(e.getMessage().startsWith("Invalid or misplaced JVM GC options in services.xml: bar,foo"));
}
}
@@ -205,8 +205,10 @@ public class JvmOptionsTest extends ContainerModelBuilderTestBase {
assertEquals(Level.WARNING, firstOption.getFirst());
Collections.sort(strings);
- assertEquals("Invalid JVM " + (optionName.equals("gc-options") ? "GC " : "") +
- "options in services.xml: " + String.join(",", strings), firstOption.getSecond());
+ assertEquals("Invalid or misplaced JVM" + (optionName.equals("gc-options") ? " GC" : "") +
+ " options in services.xml: " + String.join(",", strings) + "." +
+ " See https://docs.vespa.ai/en/reference/services-container.html#jvm"
+ , firstOption.getSecond());
}
private void buildModelWithJvmOptions(boolean isHosted, TestLogger logger, String optionName, String override) throws IOException, SAXException {
@@ -267,7 +269,7 @@ public class JvmOptionsTest extends ContainerModelBuilderTestBase {
"-Xms2G foo bar");
fail();
} catch (IllegalArgumentException e) {
- assertTrue(e.getMessage().contains("Invalid JVM options in services.xml: bar,foo"));
+ assertTrue(e.getMessage().contains("Invalid or misplaced JVM options in services.xml: bar,foo"));
}
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/ClusterResourceLimitsTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/ClusterResourceLimitsTest.java
index 8cc7805fe3e..c9863cf2144 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/ClusterResourceLimitsTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/ClusterResourceLimitsTest.java
@@ -21,7 +21,6 @@ import static org.junit.Assert.fail;
public class ClusterResourceLimitsTest {
private static class Fixture {
- private final boolean enableFeedBlockInDistributor;
private final boolean hostedVespa;
private final ResourceLimits.Builder ctrlBuilder = new ResourceLimits.Builder();
private final ResourceLimits.Builder nodeBuilder = new ResourceLimits.Builder();
@@ -30,12 +29,7 @@ public class ClusterResourceLimitsTest {
this(false);
}
- public Fixture(boolean enableFeedBlockInDistributor) {
- this(enableFeedBlockInDistributor, false);
- }
-
- public Fixture(boolean enableFeedBlockInDistributor, boolean hostedVespa) {
- this.enableFeedBlockInDistributor = enableFeedBlockInDistributor;
+ public Fixture(boolean hostedVespa) {
this.hostedVespa = hostedVespa;
}
@@ -57,8 +51,7 @@ public class ClusterResourceLimitsTest {
}
public ClusterResourceLimits build() {
ModelContext.FeatureFlags featureFlags = new TestProperties();
- var builder = new ClusterResourceLimits.Builder(enableFeedBlockInDistributor,
- hostedVespa,
+ var builder = new ClusterResourceLimits.Builder(hostedVespa,
featureFlags.resourceLimitDisk(),
featureFlags.resourceLimitMemory());
builder.setClusterControllerBuilder(ctrlBuilder);
@@ -71,50 +64,32 @@ public class ClusterResourceLimitsTest {
public void content_node_limits_are_derived_from_cluster_controller_limits_if_not_set() {
assertLimits(0.4, 0.7, 0.7, 0.85,
new Fixture().ctrlDisk(0.4).ctrlMemory(0.7));
- assertLimits(0.4, null, 0.7, null,
+ assertLimits(0.4, 0.8, 0.7, 0.9,
new Fixture().ctrlDisk(0.4));
- assertLimits(null, 0.7, null, 0.85,
+ assertLimits(0.75, 0.7, 0.875, 0.85,
new Fixture().ctrlMemory(0.7));
-
-
- assertLimits(0.4, 0.7, 0.7, 0.85,
- new Fixture(true).ctrlDisk(0.4).ctrlMemory(0.7));
- assertLimits(0.4, 0.8, 0.7, 0.9,
- new Fixture(true).ctrlDisk(0.4));
- assertLimits(0.8, 0.7, 0.9, 0.85,
- new Fixture(true).ctrlMemory(0.7));
}
@Test
public void content_node_limits_can_be_set_explicit() {
assertLimits(0.4, 0.7, 0.9, 0.95,
new Fixture().ctrlDisk(0.4).ctrlMemory(0.7).nodeDisk(0.9).nodeMemory(0.95));
- assertLimits(0.4, null, 0.95, null,
+ assertLimits(0.4, 0.8, 0.95, 0.9,
new Fixture().ctrlDisk(0.4).nodeDisk(0.95));
- assertLimits(null, 0.7, null, 0.95,
+ assertLimits(0.75, 0.7, 0.875, 0.95,
new Fixture().ctrlMemory(0.7).nodeMemory(0.95));
-
- assertLimits(0.4, 0.7, 0.9, 0.95,
- new Fixture(true).ctrlDisk(0.4).ctrlMemory(0.7).nodeDisk(0.9).nodeMemory(0.95));
- assertLimits(0.4, 0.8, 0.95, 0.9,
- new Fixture(true).ctrlDisk(0.4).nodeDisk(0.95));
- assertLimits(0.8, 0.7, 0.9, 0.95,
- new Fixture(true).ctrlMemory(0.7).nodeMemory(0.95));
}
@Test
public void cluster_controller_limits_are_equal_to_content_node_limits_minus_one_percent_if_not_set() {
assertLimits(0.89, 0.94, 0.9, 0.95,
new Fixture().nodeDisk(0.9).nodeMemory(0.95));
- assertLimits(0.89, null, 0.9, null,
+ assertLimits(0.89, 0.8, 0.9, 0.9,
new Fixture().nodeDisk(0.9));
- assertLimits(null, 0.94, null, 0.95,
+ assertLimits(0.75, 0.94, 0.875, 0.95,
new Fixture().nodeMemory(0.95));
- assertLimits(null, 0.0, null, 0.005,
+ assertLimits(0.75, 0.0, 0.875, 0.005,
new Fixture().nodeMemory(0.005));
-
- assertLimits(0.89, 0.94, 0.9, 0.95,
- new Fixture(true).nodeDisk(0.9).nodeMemory(0.95));
}
@Test
@@ -127,7 +102,7 @@ public class ClusterResourceLimitsTest {
@Test
public void default_resource_limits_when_feed_block_is_enabled_in_distributor() {
- assertLimits(0.8, 0.8, 0.9, 0.9,
+ assertLimits(0.75, 0.8, 0.875, 0.9,
new Fixture(true));
}
@@ -193,7 +168,6 @@ public class ClusterResourceLimitsTest {
"</cluster>");
ClusterResourceLimits.Builder builder = new ClusterResourceLimits.Builder(true,
- true,
featureFlags.resourceLimitDisk(),
featureFlags.resourceLimitMemory());
return builder.build(new ModelElement((limitsInXml ? clusterXml : noLimitsXml).getDocumentElement()));
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java
index 87a962339e9..9f571167d8c 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java
@@ -1045,6 +1045,28 @@ public class ContentClusterTest extends ContentBaseTest {
assertEquals(7, resolveMaxCompactBuffers(OptionalInt.of(7)));
}
+ private ProtonConfig.Replay_throttling_policy.Type.Enum resolveReplayThrottlePolicyType(Optional<String> throttlerType) {
+ TestProperties testProperties = new TestProperties();
+ if (throttlerType.isPresent()) {
+ testProperties.setPersistenceAsyncThrottling(throttlerType.get());
+ }
+ VespaModel model = createEnd2EndOneNode(testProperties);
+ ContentCluster cc = model.getContentClusters().get("storage");
+ ProtonConfig.Builder protonBuilder = new ProtonConfig.Builder();
+ cc.getSearch().getConfig(protonBuilder);
+ ProtonConfig protonConfig = new ProtonConfig(protonBuilder);
+ assertEquals(1, protonConfig.documentdb().size());
+ return protonConfig.replay_throttling_policy().type();
+ }
+
+ @Test
+ public void replay_throttling_policy_type_controlled_by_properties() {
+ assertEquals(ProtonConfig.Replay_throttling_policy.Type.Enum.UNLIMITED, resolveReplayThrottlePolicyType(Optional.empty()));
+ assertEquals(ProtonConfig.Replay_throttling_policy.Type.Enum.UNLIMITED, resolveReplayThrottlePolicyType(Optional.of("UNLIMITED")));
+ assertEquals(ProtonConfig.Replay_throttling_policy.Type.Enum.UNLIMITED, resolveReplayThrottlePolicyType(Optional.of("INVALID")));
+ assertEquals(ProtonConfig.Replay_throttling_policy.Type.Enum.DYNAMIC, resolveReplayThrottlePolicyType(Optional.of("DYNAMIC")));
+ }
+
private long resolveMaxTLSSize(Optional<Flavor> flavor) throws Exception {
TestProperties testProperties = new TestProperties();
@@ -1120,54 +1142,38 @@ public class ContentClusterTest extends ContentBaseTest {
}
@Test
- public void distributor_merge_busy_wait_controlled_by_properties() throws Exception {
- assertEquals(1, resolveDistributorMergeBusyWaitConfig(Optional.empty()));
- assertEquals(5, resolveDistributorMergeBusyWaitConfig(Optional.of(5)));
- }
-
- private int resolveDistributorMergeBusyWaitConfig(Optional<Integer> mergeBusyWait) throws Exception {
- var props = new TestProperties();
- if (mergeBusyWait.isPresent()) {
- props.setDistributorMergeBusyWait(mergeBusyWait.get());
- }
- var cluster = createOneNodeCluster(props);
- var builder = new StorDistributormanagerConfig.Builder();
- cluster.getDistributorNodes().getConfig(builder);
- return (new StorDistributormanagerConfig(builder)).inhibit_merge_sending_on_busy_node_duration_sec();
- }
-
- @Test
- public void distributor_enhanced_maintenance_scheduling_controlled_by_properties() throws Exception {
- assertFalse(resolveDistributorEnhancedSchedulingConfig(Optional.of(false)));
- assertTrue(resolveDistributorEnhancedSchedulingConfig(Optional.empty()));
+ public void unordered_merge_chaining_config_controlled_by_properties() throws Exception {
+ assertFalse(resolveUnorderedMergeChainingConfig(Optional.of(false)));
+ assertTrue(resolveUnorderedMergeChainingConfig(Optional.empty()));
}
- private boolean resolveDistributorEnhancedSchedulingConfig(Optional<Boolean> enhancedScheduling) throws Exception {
+ private boolean resolveUnorderedMergeChainingConfig(Optional<Boolean> unorderedMergeChaining) throws Exception {
var props = new TestProperties();
- if (enhancedScheduling.isPresent()) {
- props.distributorEnhancedMaintenanceScheduling(enhancedScheduling.get());
+ if (unorderedMergeChaining.isPresent()) {
+ props.setUnorderedMergeChaining(unorderedMergeChaining.get());
}
var cluster = createOneNodeCluster(props);
var builder = new StorDistributormanagerConfig.Builder();
cluster.getDistributorNodes().getConfig(builder);
- return (new StorDistributormanagerConfig(builder)).implicitly_clear_bucket_priority_on_schedule();
+ return (new StorDistributormanagerConfig(builder)).use_unordered_merge_chaining();
}
@Test
- public void unordered_merge_chaining_config_controlled_by_properties() throws Exception {
- assertFalse(resolveUnorderedMergeChainingConfig(Optional.of(false)));
- assertTrue(resolveUnorderedMergeChainingConfig(Optional.empty()));
+ public void inhibit_default_merges_when_global_merges_pending_controlled_by_properties() throws Exception {
+ assertFalse(resolveInhibitDefaultMergesConfig(Optional.empty()));
+ assertFalse(resolveInhibitDefaultMergesConfig(Optional.of(false)));
+ assertTrue(resolveInhibitDefaultMergesConfig(Optional.of(true)));
}
- private boolean resolveUnorderedMergeChainingConfig(Optional<Boolean> unorderedMergeChaining) throws Exception {
+ private boolean resolveInhibitDefaultMergesConfig(Optional<Boolean> inhibitDefaultMerges) throws Exception {
var props = new TestProperties();
- if (unorderedMergeChaining.isPresent()) {
- props.setUnorderedMergeChaining(unorderedMergeChaining.get());
+ if (inhibitDefaultMerges.isPresent()) {
+ props.inhibitDefaultMergesWhenGlobalMergesPending(inhibitDefaultMerges.get());
}
var cluster = createOneNodeCluster(props);
var builder = new StorDistributormanagerConfig.Builder();
cluster.getDistributorNodes().getConfig(builder);
- return (new StorDistributormanagerConfig(builder)).use_unordered_merge_chaining();
+ return (new StorDistributormanagerConfig(builder)).inhibit_default_merges_when_global_merges_pending();
}
@Test
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/ContentSchemaClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/ContentSchemaClusterTest.java
index 68e722f45d3..ff399fd2294 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/ContentSchemaClusterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/ContentSchemaClusterTest.java
@@ -77,12 +77,6 @@ public class ContentSchemaClusterTest {
return new ProtonConfig(builder);
}
- private static ContentCluster createClusterWithFeatureFlag(String clusterXml, boolean enableFeedBlockInDistributor) throws Exception {
- var deployStateBuilder = new DeployState.Builder().properties(
- new TestProperties().enableFeedBlockInDistributor(enableFeedBlockInDistributor));
- return createCluster(clusterXml, deployStateBuilder);
- }
-
private static void assertProtonResourceLimits(double expDiskLimit, double expMemoryLimit, String clusterXml) throws Exception {
assertProtonResourceLimits(expDiskLimit, expMemoryLimit, createCluster(clusterXml));
}
@@ -124,7 +118,7 @@ public class ContentSchemaClusterTest {
@Test
public void requireThatOnlyMemoryLimitCanBeSet() throws Exception {
- assertProtonResourceLimits(0.9, 0.77,
+ assertProtonResourceLimits(0.875, 0.77,
new ContentClusterBuilder().protonMemoryLimit(0.77).getXml());
}
@@ -142,17 +136,10 @@ public class ContentSchemaClusterTest {
}
@Test
- public void default_resource_limits_when_feed_block_is_disabled_in_distributor() throws Exception {
- var cluster = createClusterWithFeatureFlag(new ContentClusterBuilder().getXml(), false);
- assertProtonResourceLimits(0.8, 0.8, cluster);
- assertClusterControllerResourceLimits(0.8, 0.8, cluster);
- }
-
- @Test
- public void default_resource_limits_when_feed_block_is_enabled_in_distributor() throws Exception {
- var cluster = createClusterWithFeatureFlag(new ContentClusterBuilder().getXml(), true);
- assertProtonResourceLimits(0.9, 0.9, cluster);
- assertClusterControllerResourceLimits(0.8, 0.8, cluster);
+ public void default_resource_limits_with_feed_block_in_distributor() throws Exception {
+ var cluster = createCluster(new ContentClusterBuilder().getXml());
+ assertProtonResourceLimits(0.875, 0.9, cluster);
+ assertClusterControllerResourceLimits(0.75, 0.8, cluster);
}
@Test
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/DistributorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/DistributorTest.java
index 90e3aff0c45..d23dca65dd1 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/DistributorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/DistributorTest.java
@@ -107,7 +107,7 @@ public class DistributorTest {
assertEquals(1024, conf.splitcount());
assertEquals(512, conf.joincount());
- assertEquals(33544432, conf.splitsize());
+ assertEquals(16772216, conf.splitsize());
assertEquals(16000000, conf.joinsize());
assertEquals(8, conf.minsplitcount());
assertTrue(conf.inlinebucketsplitting());
@@ -138,7 +138,7 @@ public class DistributorTest {
assertEquals(1024, conf.splitcount());
assertEquals(512, conf.joincount());
- assertEquals(33544432, conf.splitsize());
+ assertEquals(16772216, conf.splitsize());
assertEquals(16000000, conf.joinsize());
assertEquals(14, conf.minsplitcount());
assertTrue(conf.inlinebucketsplitting());
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/FleetControllerClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/FleetControllerClusterTest.java
index b27a8a192bc..f9fcb777408 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/FleetControllerClusterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/FleetControllerClusterTest.java
@@ -19,14 +19,12 @@ public class FleetControllerClusterTest {
private ClusterControllerConfig parse(String xml, TestProperties props) {
Document doc = XML.getDocument(xml);
var deployState = new DeployState.Builder().properties(props).build();
- boolean enableFeedBlockInDistributor = deployState.getProperties().featureFlags().enableFeedBlockInDistributor();
MockRoot root = new MockRoot("", deployState);
var clusterElement = new ModelElement(doc.getDocumentElement());
ModelContext.FeatureFlags featureFlags = new TestProperties();
return new ClusterControllerConfig.Builder("storage",
clusterElement,
- new ClusterResourceLimits.Builder(enableFeedBlockInDistributor,
- false,
+ new ClusterResourceLimits.Builder(false,
featureFlags.resourceLimitDisk(),
featureFlags.resourceLimitMemory())
.build(clusterElement).getClusterControllerLimits())
@@ -34,7 +32,7 @@ public class FleetControllerClusterTest {
}
private ClusterControllerConfig parse(String xml) {
- return parse(xml, new TestProperties().enableFeedBlockInDistributor(true));
+ return parse(xml, new TestProperties());
}
@Test
@@ -104,17 +102,16 @@ public class FleetControllerClusterTest {
assertEquals(0.0, config.min_node_ratio_per_group(), 0.01);
}
-
@Test
public void default_cluster_feed_block_limits_are_set() {
- assertLimits(0.8, 0.8, getConfigForBasicCluster());
+ assertLimits(0.75, 0.8, getConfigForBasicCluster());
}
@Test
public void resource_limits_can_be_set_in_tuning() {
assertLimits(0.6, 0.7, getConfigForResourceLimitsTuning(0.6, 0.7));
assertLimits(0.6, 0.8, getConfigForResourceLimitsTuning(0.6, null));
- assertLimits(0.8, 0.7, getConfigForResourceLimitsTuning(null, 0.7));
+ assertLimits(0.75, 0.7, getConfigForResourceLimitsTuning(null, 0.7));
}
private static final double DELTA = 0.00001;
@@ -124,7 +121,7 @@ public class FleetControllerClusterTest {
assertEquals(3, limits.size());
assertEquals(expDisk, limits.get("disk"), DELTA);
assertEquals(expMemory, limits.get("memory"), DELTA);
- assertEquals(0.89, limits.get("attribute-address-space"), DELTA);
+ assertEquals(0.9, limits.get("attribute-address-space"), DELTA);
}
private FleetcontrollerConfig getConfigForResourceLimitsTuning(Double diskLimit, Double memoryLimit) {
@@ -143,17 +140,6 @@ public class FleetControllerClusterTest {
}
@Test
- public void feature_flag_controls_enable_cluster_feed_block() {
- verifyThatFeatureFlagControlsEnableClusterFeedBlock(true);
- verifyThatFeatureFlagControlsEnableClusterFeedBlock(false);
- }
-
- private void verifyThatFeatureFlagControlsEnableClusterFeedBlock(boolean flag) {
- var config = getConfigForBasicCluster(new TestProperties().enableFeedBlockInDistributor(flag));
- assertEquals(flag, config.enable_cluster_feed_block());
- }
-
- @Test
public void feature_flag_controls_min_node_ratio_per_group() {
verifyFeatureFlagControlsMinNodeRatioPerGroup(0.0, new TestProperties());
verifyFeatureFlagControlsMinNodeRatioPerGroup(0.3,
@@ -175,6 +161,6 @@ public class FleetControllerClusterTest {
}
private FleetcontrollerConfig getConfigForBasicCluster() {
- return getConfigForBasicCluster(new TestProperties().enableFeedBlockInDistributor(true));
+ return getConfigForBasicCluster(new TestProperties());
}
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/IndexingAndDocprocRoutingTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/IndexingAndDocprocRoutingTest.java
index cea8d724c30..bcb197ed540 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/IndexingAndDocprocRoutingTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/IndexingAndDocprocRoutingTest.java
@@ -444,7 +444,7 @@ public class IndexingAndDocprocRoutingTest extends ContentBaseTest {
for (SearchClusterSpec cluster : searchClusterSpecs) {
for (SearchDefSpec def : cluster.searchDefs) {
- sds.add(ApplicationPackageUtils.generateSearchDefinition(def.typeName, def.field1Name, def.field2Name));
+ sds.add(ApplicationPackageUtils.generateSchema(def.typeName, def.field1Name, def.field2Name));
}
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/StorageClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/StorageClusterTest.java
index cf877d3bf88..509055df7f4 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/StorageClusterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/StorageClusterTest.java
@@ -160,21 +160,22 @@ public class StorageClusterTest {
}
@Test
- public void ignore_merge_queue_limit_can_be_controlled_by_feature_flag() {
- var config = configFromProperties(new TestProperties().setIgnoreMergeQueueLimit(true));
- assertTrue(config.disable_queue_limits_for_chained_merges());
-
- config = configFromProperties(new TestProperties().setIgnoreMergeQueueLimit(false));
- assertFalse(config.disable_queue_limits_for_chained_merges());
+ public void merge_throttling_policy_config_defaults_to_static() {
+ var config = configFromProperties(new TestProperties());
+ assertEquals(StorServerConfig.Merge_throttling_policy.Type.STATIC, config.merge_throttling_policy().type());
}
@Test
- public void async_apply_bucket_diff_can_be_controlled_by_feature_flag() {
- var config = filestorConfigFromProperties(new TestProperties());
- assertTrue(config.async_apply_bucket_diff());
+ public void merge_throttling_policy_config_is_derived_from_flag() {
+ var config = configFromProperties(new TestProperties().setMergeThrottlingPolicy("STATIC"));
+ assertEquals(StorServerConfig.Merge_throttling_policy.Type.STATIC, config.merge_throttling_policy().type());
+
+ config = configFromProperties(new TestProperties().setMergeThrottlingPolicy("DYNAMIC"));
+ assertEquals(StorServerConfig.Merge_throttling_policy.Type.DYNAMIC, config.merge_throttling_policy().type());
- config = filestorConfigFromProperties(new TestProperties().setAsyncApplyBucketDiff(false));
- assertFalse(config.async_apply_bucket_diff());
+ // Invalid enum values fall back to the default
+ config = configFromProperties(new TestProperties().setMergeThrottlingPolicy("UKULELE"));
+ assertEquals(StorServerConfig.Merge_throttling_policy.Type.STATIC, config.merge_throttling_policy().type());
}
@Test
@@ -308,20 +309,40 @@ public class StorageClusterTest {
@Test
public void persistence_async_throttle_config_defaults_to_unlimited() {
var config = filestorConfigFromProducer(simpleCluster(new TestProperties()));
- assertEquals(StorFilestorConfig.Async_operation_throttler_type.UNLIMITED, config.async_operation_throttler_type());
+ assertEquals(StorFilestorConfig.Async_operation_throttler_type.UNLIMITED, config.async_operation_throttler_type()); // TODO remove
+ assertEquals(StorFilestorConfig.Async_operation_throttler.Type.UNLIMITED, config.async_operation_throttler().type());
}
@Test
public void persistence_async_throttle_config_is_derived_from_flag() {
var config = filestorConfigFromProducer(simpleCluster(new TestProperties().setPersistenceAsyncThrottling("UNLIMITED")));
- assertEquals(StorFilestorConfig.Async_operation_throttler_type.UNLIMITED, config.async_operation_throttler_type());
+ assertEquals(StorFilestorConfig.Async_operation_throttler_type.UNLIMITED, config.async_operation_throttler_type()); // TODO remove
+ assertEquals(StorFilestorConfig.Async_operation_throttler.Type.UNLIMITED, config.async_operation_throttler().type());
config = filestorConfigFromProducer(simpleCluster(new TestProperties().setPersistenceAsyncThrottling("DYNAMIC")));
- assertEquals(StorFilestorConfig.Async_operation_throttler_type.DYNAMIC, config.async_operation_throttler_type());
+ assertEquals(StorFilestorConfig.Async_operation_throttler_type.DYNAMIC, config.async_operation_throttler_type()); // TODO remove
+ assertEquals(StorFilestorConfig.Async_operation_throttler.Type.DYNAMIC, config.async_operation_throttler().type());
// Invalid enum values fall back to the default
config = filestorConfigFromProducer(simpleCluster(new TestProperties().setPersistenceAsyncThrottling("BANANAS")));
- assertEquals(StorFilestorConfig.Async_operation_throttler_type.UNLIMITED, config.async_operation_throttler_type());
+ assertEquals(StorFilestorConfig.Async_operation_throttler_type.UNLIMITED, config.async_operation_throttler_type()); // TODO remove
+ assertEquals(StorFilestorConfig.Async_operation_throttler.Type.UNLIMITED, config.async_operation_throttler().type());
+ }
+
+ @Test
+ public void persistence_dynamic_throttling_parameters_have_sane_defaults() {
+ var config = filestorConfigFromProducer(simpleCluster(new TestProperties()));
+ assertEquals(1.2, config.async_operation_throttler().window_size_decrement_factor(), 0.0001);
+ assertEquals(0.95, config.async_operation_throttler().window_size_backoff(), 0.0001);
+ }
+
+ @Test
+ public void persistence_dynamic_throttling_parameters_can_be_set_through_feature_flags() {
+ var config = filestorConfigFromProducer(simpleCluster(new TestProperties()
+ .setPersistenceThrottlingWsDecrementFactor(1.5)
+ .setPersistenceThrottlingWsBackoff(0.8)));
+ assertEquals(1.5, config.async_operation_throttler().window_size_decrement_factor(), 0.0001);
+ assertEquals(0.8, config.async_operation_throttler().window_size_backoff(), 0.0001);
}
@Test
@@ -432,8 +453,8 @@ public class StorageClusterTest {
ContentClusterUtils.createCluster(xml, root);
fail("Did not fail when having both group and nodes");
} catch (RuntimeException e) {
- e.printStackTrace();
- assertEquals("Both group and nodes exists, only one of these tags is legal", e.getMessage());
+ assertEquals("Both <group> and <nodes> is specified: Only one of these tags can be used in the same configuration",
+ e.getMessage());
}
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/DomContentSchemaBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/DomContentApplicationBuilderTest.java
index b8788ece7b6..11aeea5f90d 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/DomContentSchemaBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/DomContentApplicationBuilderTest.java
@@ -15,7 +15,7 @@ import static org.junit.Assert.assertNull;
/**
* @author Simon Thoresen Hult
*/
-public class DomContentSchemaBuilderTest {
+public class DomContentApplicationBuilderTest {
@Test
public void requireThatDefaultsAreNull() throws Exception {
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/ml/ModelEvaluationTest.java b/config-model/src/test/java/com/yahoo/vespa/model/ml/ModelEvaluationTest.java
index 7627ba6319b..c60817704cd 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/ml/ModelEvaluationTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/ml/ModelEvaluationTest.java
@@ -1,6 +1,7 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.ml;
+import ai.vespa.modelintegration.evaluator.OnnxEvaluator;
import ai.vespa.models.evaluation.Model;
import ai.vespa.models.evaluation.ModelsEvaluator;
import ai.vespa.models.handler.ModelsEvaluationHandler;
@@ -30,6 +31,7 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assume.assumeTrue;
/**
* Tests stateless model evaluation (turned on by the "model-evaluation" tag in "container")
@@ -61,6 +63,7 @@ public class ModelEvaluationTest {
@Test
public void testMl_serving() throws IOException {
+ assumeTrue(OnnxEvaluator.isRuntimeAvailable());
Path appDir = Path.fromString("src/test/cfg/application/ml_serving");
Path storedAppDir = appDir.append("copy");
try {
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/ml/StatelessOnnxEvaluationTest.java b/config-model/src/test/java/com/yahoo/vespa/model/ml/StatelessOnnxEvaluationTest.java
index 6e096dd68e4..bad6fcc68c2 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/ml/StatelessOnnxEvaluationTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/ml/StatelessOnnxEvaluationTest.java
@@ -1,6 +1,7 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.ml;
+import ai.vespa.modelintegration.evaluator.OnnxEvaluator;
import ai.vespa.models.evaluation.FunctionEvaluator;
import ai.vespa.models.evaluation.Model;
import ai.vespa.models.evaluation.ModelsEvaluator;
@@ -29,6 +30,7 @@ import java.util.stream.Collectors;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assume.assumeTrue;
/**
* Tests stateless model evaluation (turned on by the "model-evaluation" tag in "container")
@@ -39,7 +41,8 @@ import static org.junit.Assert.assertTrue;
public class StatelessOnnxEvaluationTest {
@Test
- public void testStatelessOnnxModelNameCollision() throws IOException {
+ public void testStatelessOnnxModelNameCollision() {
+ assumeTrue(OnnxEvaluator.isRuntimeAvailable());
Path appDir = Path.fromString("src/test/cfg/application/onnx_name_collision");
try {
ImportedModelTester tester = new ImportedModelTester("onnx", appDir);
@@ -60,6 +63,7 @@ public class StatelessOnnxEvaluationTest {
@Test
public void testStatelessOnnxModelEvaluation() throws IOException {
+ assumeTrue(OnnxEvaluator.isRuntimeAvailable());
Path appDir = Path.fromString("src/test/cfg/application/onnx");
Path storedAppDir = appDir.append("copy");
try {
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/routing/test/RoutingTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/routing/test/RoutingTestCase.java
index 3d4991eebed..30678205e3a 100755
--- a/config-model/src/test/java/com/yahoo/vespa/model/routing/test/RoutingTestCase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/routing/test/RoutingTestCase.java
@@ -8,7 +8,6 @@ import com.yahoo.messagebus.MessagebusConfig;
import com.yahoo.documentapi.messagebus.protocol.DocumentProtocolPoliciesConfig;
import com.yahoo.vespa.model.VespaModel;
import com.yahoo.vespa.model.test.utils.VespaModelCreatorWithFilePkg;
-import org.junit.Ignore;
import org.junit.Test;
import java.io.BufferedReader;
@@ -36,7 +35,6 @@ public class RoutingTestCase {
private static final boolean WRITE_FILES = false;
@Test
- @Ignore // TODO: Why?
public void testRoutingContent() throws IOException {
assertApplication(new File("src/test/cfg/routing/contentsimpleconfig"));
assertApplication(new File("src/test/cfg/routing/content_two_clusters"));
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/search/test/SchemaClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/search/test/SchemaClusterTest.java
index 6830ce79f9f..e58c29cc4fd 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/search/test/SchemaClusterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/search/test/SchemaClusterTest.java
@@ -2,11 +2,12 @@
package com.yahoo.vespa.model.search.test;
import com.yahoo.component.ComponentId;
+import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.container.QrSearchersConfig;
import com.yahoo.document.DataType;
import com.yahoo.search.config.ClusterConfig;
import com.yahoo.searchdefinition.Schema;
-import com.yahoo.searchdefinition.SchemaBuilder;
+import com.yahoo.searchdefinition.ApplicationBuilder;
import com.yahoo.searchdefinition.document.Attribute;
import com.yahoo.searchdefinition.document.SDDocumentType;
import com.yahoo.searchdefinition.document.SDField;
@@ -40,7 +41,7 @@ public class SchemaClusterTest {
public void testSdConfigLogical() {
// sd1
SDDocumentType sdt1 = new SDDocumentType("s1");
- Schema schema1 = new Schema("s1");
+ Schema schema1 = new Schema("s1", MockApplicationPackage.createEmpty());
SDField f1 = new SDField("f1", DataType.STRING);
f1.addAttribute(new Attribute("f1", DataType.STRING));
f1.setIndexingScript(new ScriptExpression(new StatementExpression(new AttributeExpression("f1"))));
@@ -49,17 +50,17 @@ public class SchemaClusterTest {
// sd2
SDDocumentType sdt2 = new SDDocumentType("s2");
- Schema schema2 = new Schema("s2");
+ Schema schema2 = new Schema("s2", MockApplicationPackage.createEmpty());
SDField f2=new SDField("f2", DataType.STRING);
f2.addAttribute(new Attribute("f2", DataType.STRING));
f2.setIndexingScript(new ScriptExpression(new StatementExpression(new AttributeExpression("f2"))));
sdt2.addField(f2);
schema2.addDocument(sdt2);
- SchemaBuilder builder = new SchemaBuilder();
- builder.importRawSchema(schema1);
- builder.importRawSchema(schema2);
- builder.build();
+ ApplicationBuilder builder = new ApplicationBuilder();
+ builder.add(schema1);
+ builder.add(schema2);
+ builder.build(true);
}
@Test
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/search/test/SchemaNodeTest.java b/config-model/src/test/java/com/yahoo/vespa/model/search/test/SchemaNodeTest.java
index 226045f4d8a..a347c0a9c43 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/search/test/SchemaNodeTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/search/test/SchemaNodeTest.java
@@ -40,11 +40,11 @@ public class SchemaNodeTest {
TransactionLogServer tls = new TransactionLogServer(root, "mycluster", useFsync);
tls.setHostResource(new HostResource(host));
tls.setBasePort(100);
- tls.initService(root.deployLogger());
+ tls.initService(root.getDeployState());
node.setTls(tls);
node.setHostResource(new HostResource(host));
node.setBasePort(200);
- node.initService(root.deployLogger());
+ node.initService(root.getDeployState());
root.freezeModelTopology();
}
@@ -78,7 +78,7 @@ public class SchemaNodeTest {
MockRoot root = new MockRoot("");
SearchNode node = createSearchNode(root, "mynode", 3, new NodeSpec(7, 5), false, root.getDeployState().isHosted());
node.setHostResource(new HostResource(new Host(node, "mynbode")));
- node.initService(root.deployLogger());
+ node.initService(root.getDeployState());
assertFalse(node.getPreShutdownCommand().isPresent());
}
@@ -87,7 +87,7 @@ public class SchemaNodeTest {
MockRoot root = new MockRoot("");
SearchNode node = createSearchNode(root, "mynode2", 4, new NodeSpec(7, 5), true, root.getDeployState().isHosted());
node.setHostResource(new HostResource(new Host(node, "mynbode2")));
- node.initService(root.deployLogger());
+ node.initService(root.getDeployState());
assertTrue(node.getPreShutdownCommand().isPresent());
assertTrue(node.getPreShutdownCommand().get().contains("vespa-proton-cmd " + node.getRpcPort() + " prepareRestart"));
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/ModelAmendingTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/test/ModelAmendingTestCase.java
index 3388f9d2670..3de8cfe540f 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/test/ModelAmendingTestCase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/test/ModelAmendingTestCase.java
@@ -2,7 +2,6 @@
package com.yahoo.vespa.model.test;
import com.yahoo.component.ComponentId;
-import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.model.ConfigModel;
import com.yahoo.config.model.ConfigModelContext;
import com.yahoo.config.model.ConfigModelRegistry;
@@ -10,6 +9,7 @@ import com.yahoo.config.model.MapConfigModelRegistry;
import com.yahoo.config.model.admin.AdminModel;
import com.yahoo.config.model.builder.xml.ConfigModelBuilder;
import com.yahoo.config.model.builder.xml.ConfigModelId;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.vespa.defaults.Defaults;
import com.yahoo.vespa.model.AbstractService;
@@ -152,13 +152,13 @@ public class ModelAmendingTestCase {
@Override
public void doBuild(AdminModelAmender model, Element spec, ConfigModelContext modelContext) {
for (AdminModel adminModel : model.adminModels)
- amend(modelContext.getDeployLogger(), adminModel);
+ amend(modelContext.getDeployState(), adminModel);
}
- private void amend(DeployLogger deployLogger, AdminModel adminModel) {
+ private void amend(DeployState deployState, AdminModel adminModel) {
for (HostResource host : adminModel.getAdmin().hostSystem().getHosts()) {
if ( ! host.getHost().getChildrenByTypeRecursive(AmendedService.class).isEmpty()) continue; // already amended
- adminModel.getAdmin().addAndInitializeService(deployLogger, host, new AmendedService(host.getHost()));
+ adminModel.getAdmin().addAndInitializeService(deployState, host, new AmendedService(host.getHost()));
}
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTestCase.java
index bf4d066e454..7f8bca825d2 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTestCase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTestCase.java
@@ -242,7 +242,7 @@ public class VespaModelTestCase {
.build();
DeployState deployState = builder.deployLogger(logger).applicationPackage(app).build();
VespaModel model = new VespaModel(new NullConfigModelRegistry(), deployState);
- Validation.validate(model, new ValidationParameters(ValidationParameters.IgnoreValidationErrors.TRUE), deployState);
+ new Validation().validate(model, new ValidationParameters(ValidationParameters.IgnoreValidationErrors.TRUE), deployState);
assertFalse(logger.msgs.isEmpty());
}
@@ -312,7 +312,7 @@ public class VespaModelTestCase {
.deployLogger(logger)
.build();
VespaModel model = new VespaModel(new NullConfigModelRegistry(), deployState);
- Validation.validate(model, new ValidationParameters(), deployState);
+ new Validation().validate(model, new ValidationParameters(), deployState);
assertContainsWarning(logger.msgs, "Directory searchdefinitions/ should not be used for schemas, use schemas/ instead");
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/utils/ApplicationPackageUtils.java b/config-model/src/test/java/com/yahoo/vespa/model/test/utils/ApplicationPackageUtils.java
index 1992b01788f..3a5bb3dc1b3 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/test/utils/ApplicationPackageUtils.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/test/utils/ApplicationPackageUtils.java
@@ -11,10 +11,9 @@ import java.util.List;
*/
public class ApplicationPackageUtils {
- public static String generateSearchDefinition(String name, String field1, String field2) {
- return "" +
- "search " + name + "{" +
- " document " + name + "{" +
+ public static String generateSchema(String name, String field1, String field2) {
+ return "schema " + name + " {" +
+ " document " + name + " {" +
" field " + field1 + " type string {\n" +
" indexing: index | summary\n" +
" summary: dynamic\n" +
@@ -51,7 +50,7 @@ public class ApplicationPackageUtils {
List<String> sds = new ArrayList<>();
int i = 0;
for (String sdName : sdNames) {
- sds.add(generateSearchDefinition(sdName, "f" + (i + 1), "f" + (i + 2)));
+ sds.add(generateSchema(sdName, "f" + (i + 1), "f" + (i + 2)));
i = i + 2;
}
return sds;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/utils/VespaModelCreatorWithFilePkg.java b/config-model/src/test/java/com/yahoo/vespa/model/test/utils/VespaModelCreatorWithFilePkg.java
index 351b080eb5b..565e4c7c076 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/test/utils/VespaModelCreatorWithFilePkg.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/test/utils/VespaModelCreatorWithFilePkg.java
@@ -66,7 +66,7 @@ public class VespaModelCreatorWithFilePkg {
// is constructed in a special way and cannot always be validated in
// this step for unit tests)
ValidationParameters validationParameters = new ValidationParameters(IgnoreValidationErrors.TRUE, FailOnIncompatibleChange.TRUE, CheckRouting.FALSE);
- Validation.validate(model, validationParameters, deployState);
+ new Validation().validate(model, validationParameters, deployState);
return model;
} catch (Exception e) {
throw e instanceof RuntimeException ? (RuntimeException) e : new RuntimeException(e);
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/utils/VespaModelCreatorWithMockPkg.java b/config-model/src/test/java/com/yahoo/vespa/model/test/utils/VespaModelCreatorWithMockPkg.java
index 66dc63bbb02..d777fefbbe5 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/test/utils/VespaModelCreatorWithMockPkg.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/test/utils/VespaModelCreatorWithMockPkg.java
@@ -75,7 +75,7 @@ public class VespaModelCreatorWithMockPkg {
// is constructed in a special way and cannot always be validated in
// this step for unit tests)
ValidationParameters validationParameters = new ValidationParameters(CheckRouting.FALSE);
- configChangeActions = Validation.validate(model, validationParameters, deployState);
+ configChangeActions = new Validation().validate(model, validationParameters, deployState);
}
return model;
} catch (Exception e) {