summaryrefslogtreecommitdiffstats
path: root/config-model/src
diff options
context:
space:
mode:
Diffstat (limited to 'config-model/src')
-rw-r--r--config-model/src/main/java/com/yahoo/schema/Schema.java11
-rw-r--r--config-model/src/main/java/com/yahoo/schema/parser/ConvertParsedSchemas.java25
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/ContainerInCloudValidator.java19
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/Validation.java1
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/ClusterControllerConfig.java133
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java16
-rw-r--r--config-model/src/main/javacc/SchemaParser.jj7
-rw-r--r--config-model/src/test/derived/multiplesummaries/index-info.cfg2
-rw-r--r--config-model/src/test/derived/multiplesummaries/multiplesummaries.sd5
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java33
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/ContainerInCloudValidatorTest.java60
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/ValidationTester.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/IndexingModeChangeValidatorTest.java3
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java8
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/FleetControllerClusterTest.java5
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTester.java7
16 files changed, 184 insertions, 153 deletions
diff --git a/config-model/src/main/java/com/yahoo/schema/Schema.java b/config-model/src/main/java/com/yahoo/schema/Schema.java
index 180c8e6012f..93bec4975a6 100644
--- a/config-model/src/main/java/com/yahoo/schema/Schema.java
+++ b/config-model/src/main/java/com/yahoo/schema/Schema.java
@@ -709,8 +709,17 @@ public class Schema implements ImmutableSchema {
public FieldSets fieldSets() { return fieldSets; }
+ private Schema inheritedSchema = null;
+
+ public void setInheritedSchema(Schema value) {
+ inheritedSchema = value;
+ }
+
/** Returns the schema inherited by this, or throws if none */
- private Schema requireInherited() { return owner.schemas().get(inherited.get()); }
+ private Schema requireInherited() {
+ if (inheritedSchema != null) return inheritedSchema;
+ return owner.schemas().get(inherited.get());
+ }
/**
* For adding structs defined in document scope
diff --git a/config-model/src/main/java/com/yahoo/schema/parser/ConvertParsedSchemas.java b/config-model/src/main/java/com/yahoo/schema/parser/ConvertParsedSchemas.java
index 0abcc9e890a..40ec84ec8bc 100644
--- a/config-model/src/main/java/com/yahoo/schema/parser/ConvertParsedSchemas.java
+++ b/config-model/src/main/java/com/yahoo/schema/parser/ConvertParsedSchemas.java
@@ -98,6 +98,13 @@ public class ConvertParsedSchemas {
Schema schema = parsed.getDocumentWithoutSchema()
? new DocumentOnlySchema(applicationPackage, fileRegistry, deployLogger, properties)
: new Schema(parsed.name(), applicationPackage, inherited, fileRegistry, deployLogger, properties);
+ inherited.ifPresent(parentName -> {
+ for (var possibleParent : resultList) {
+ if (possibleParent.getName().equals(parentName)) {
+ schema.setInheritedSchema(possibleParent);
+ }
+ }
+ });
convertSchema(schema, parsed);
resultList.add(schema);
}
@@ -145,7 +152,23 @@ public class ConvertParsedSchemas {
docsum.setOmitSummaryFeatures(true);
}
for (var parsedField : parsed.getSummaryFields()) {
- DataType dataType = typeContext.resolveType(parsedField.getType());
+ var parsedType = parsedField.getType();
+ DataType dataType = (parsedType != null) ? typeContext.resolveType(parsedType) : null;
+ var existingField = schema.getField(parsedField.name());
+ if (existingField != null) {
+ var existingType = existingField.getDataType();
+ if (dataType == null) {
+ dataType = existingType;
+ } else if (!dataType.equals(existingType)) {
+ if (dataType.getValueClass().equals(com.yahoo.document.datatypes.WeightedSet.class)) {
+ // "adjusting type for field " + parsedField.name() + " in document-summary " + parsed.name() + " field already has: " + existingType + " but declared type was: " + dataType
+ dataType = existingType;
+ }
+ }
+ }
+ if (dataType == null) {
+ throw new IllegalArgumentException("Missing data-type for summary field " + parsedField.name() + " in document-summary " + parsed.name());
+ }
var summaryField = new SummaryField(parsedField.name(), dataType);
// XXX does not belong here:
summaryField.setVsmCommand(SummaryField.VsmCommand.FLATTENSPACE);
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/ContainerInCloudValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/ContainerInCloudValidator.java
deleted file mode 100644
index d9bf82980d7..00000000000
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/ContainerInCloudValidator.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.yahoo.vespa.model.application.validation;
-
-import com.yahoo.config.model.deploy.DeployState;
-import com.yahoo.vespa.model.VespaModel;
-
-/**
- * Validates that a Vespa Cloud application has at least one container cluster.
- *
- * @author jonmv
- */
-public class ContainerInCloudValidator extends Validator {
-
- @Override
- public void validate(VespaModel model, DeployState deployState) {
- if (deployState.isHosted() && model.getContainerClusters().isEmpty())
- throw new IllegalArgumentException("Vespa Cloud applications must have at least one container cluster");
- }
-
-}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/Validation.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/Validation.java
index 4f2f8e7932c..2576d9cb392 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/Validation.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/Validation.java
@@ -76,7 +76,6 @@ public class Validation {
new StreamingValidator().validate(model, deployState);
new RankSetupValidator(validationParameters.ignoreValidationErrors()).validate(model, deployState);
new NoPrefixForIndexes().validate(model, deployState);
- new ContainerInCloudValidator().validate(model, deployState);
new DeploymentSpecValidator().validate(model, deployState);
new ValidationOverridesValidator().validate(model, deployState);
new ConstantValidator().validate(model, deployState);
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/ClusterControllerConfig.java b/config-model/src/main/java/com/yahoo/vespa/model/content/ClusterControllerConfig.java
index 5a96e33c522..e2166b263ee 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/ClusterControllerConfig.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/ClusterControllerConfig.java
@@ -9,6 +9,7 @@ import com.yahoo.vespa.config.content.FleetcontrollerConfig;
import com.yahoo.vespa.model.VespaModel;
import com.yahoo.vespa.model.builder.xml.dom.ModelElement;
import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder;
+import com.yahoo.vespa.model.content.cluster.ContentCluster;
import com.yahoo.vespa.model.utils.Duration;
import org.w3c.dom.Element;
import java.util.Optional;
@@ -47,9 +48,29 @@ public class ClusterControllerConfig extends AnyConfigProducer implements Fleetc
clusterControllerTuning = tuning.child("cluster-controller");
}
+ var tuningConfig = new ClusterControllerTuningBuilder(clusterControllerTuning,
+ minNodeRatioPerGroup,
+ bucketSplittingMinimumBits)
+ .build();
+ if (ancestor instanceof ContentCluster) {
+ int numberOfLeafGroups = ((ContentCluster) ancestor).getRootGroup().getNumberOfLeafGroups();
+ if (tuningConfig.maxGroupsAllowedDown().isPresent()) {
+ Integer maxGroupsAllowedDown = tuningConfig.maxGroupsAllowedDown().get();
+ if (deployState.zone().environment().isProduction() && (maxGroupsAllowedDown > numberOfLeafGroups))
+ throw new IllegalArgumentException("Cannot set max-groups-allowed-down (" + maxGroupsAllowedDown +
+ ") larger than number of groups (" + numberOfLeafGroups + ")");
+ } else {
+ // Reduce to numberOfLeafGroups for tests or in environments where number of groups are reduced by policy (dev, test, staging, perf)
+ tuningConfig = tuningConfig.withMaxGroupsAllowedDown(numberOfLeafGroups);
+ }
+ } else {
+ // Reduce to 1 for tests (ancestor is a mock class)
+ tuningConfig = tuningConfig.withMaxGroupsAllowedDown(1);
+ }
+
return new ClusterControllerConfig(ancestor,
clusterName,
- new ClusterControllerTuning(clusterControllerTuning, minNodeRatioPerGroup, bucketSplittingMinimumBits),
+ tuningConfig,
resourceLimits,
allowMoreThanOneContentGroupDown);
}
@@ -99,45 +120,81 @@ public class ClusterControllerConfig extends AnyConfigProducer implements Fleetc
resourceLimits.getConfig(builder);
}
- public ClusterControllerTuning tuning() { return tuning; }
-
- public static class ClusterControllerTuning {
-
- private final Optional<Double> minNodeRatioPerGroup;
- private final Optional<Duration> initProgressTime;
- private final Optional<Duration> transitionTime;
- private final Optional<Long> maxPrematureCrashes;
- private final Optional<Duration> stableStateTimePeriod;
- private final Optional<Double> minDistributorUpRatio;
- private final Optional<Double> minStorageUpRatio;
- private final Optional<Integer> minSplitBits;
- final Optional<Integer> maxGroupsAllowedDown;
-
- ClusterControllerTuning(ModelElement tuning,
- Optional<Double> minNodeRatioPerGroup,
- Optional<Integer> bucketSplittingMinimumBits) {
- this.minSplitBits = bucketSplittingMinimumBits;
- this.minNodeRatioPerGroup = minNodeRatioPerGroup;
- if (tuning == null) {
- this.initProgressTime = Optional.empty();
- this.transitionTime = Optional.empty();
- this.maxPrematureCrashes = Optional.empty();
- this.stableStateTimePeriod = Optional.empty();
- this.minDistributorUpRatio = Optional.empty();
- this.minStorageUpRatio = Optional.empty();
- this.maxGroupsAllowedDown = Optional.empty();
- } else {
- this.initProgressTime = Optional.ofNullable(tuning.childAsDuration("init-progress-time"));
- this.transitionTime = Optional.ofNullable(tuning.childAsDuration("transition-time"));
- this.maxPrematureCrashes = Optional.ofNullable(tuning.childAsLong("max-premature-crashes"));
- this.stableStateTimePeriod = Optional.ofNullable(tuning.childAsDuration("stable-state-period"));
- this.minDistributorUpRatio = Optional.ofNullable(tuning.childAsDouble("min-distributor-up-ratio"));
- this.minStorageUpRatio = Optional.ofNullable(tuning.childAsDouble("min-storage-up-ratio"));
- this.maxGroupsAllowedDown = Optional.ofNullable(tuning.childAsInteger("max-groups-allowed-down"));
- }
+ public ClusterControllerTuning tuning() {return tuning;}
+
+private static class ClusterControllerTuningBuilder {
+
+ private final Optional<Double> minNodeRatioPerGroup;
+ private final Optional<Duration> initProgressTime;
+ private final Optional<Duration> transitionTime;
+ private final Optional<Long> maxPrematureCrashes;
+ private final Optional<Duration> stableStateTimePeriod;
+ private final Optional<Double> minDistributorUpRatio;
+ private final Optional<Double> minStorageUpRatio;
+ private final Optional<Integer> minSplitBits;
+ final Optional<Integer> maxGroupsAllowedDown;
+
+ ClusterControllerTuningBuilder(ModelElement tuning,
+ Optional<Double> minNodeRatioPerGroup,
+ Optional<Integer> bucketSplittingMinimumBits) {
+ this.minSplitBits = bucketSplittingMinimumBits;
+ this.minNodeRatioPerGroup = minNodeRatioPerGroup;
+ if (tuning == null) {
+ this.initProgressTime = Optional.empty();
+ this.transitionTime = Optional.empty();
+ this.maxPrematureCrashes = Optional.empty();
+ this.stableStateTimePeriod = Optional.empty();
+ this.minDistributorUpRatio = Optional.empty();
+ this.minStorageUpRatio = Optional.empty();
+ this.maxGroupsAllowedDown = Optional.empty();
+ } else {
+ this.initProgressTime = Optional.ofNullable(tuning.childAsDuration("init-progress-time"));
+ this.transitionTime = Optional.ofNullable(tuning.childAsDuration("transition-time"));
+ this.maxPrematureCrashes = Optional.ofNullable(tuning.childAsLong("max-premature-crashes"));
+ this.stableStateTimePeriod = Optional.ofNullable(tuning.childAsDuration("stable-state-period"));
+ this.minDistributorUpRatio = Optional.ofNullable(tuning.childAsDouble("min-distributor-up-ratio"));
+ this.minStorageUpRatio = Optional.ofNullable(tuning.childAsDouble("min-storage-up-ratio"));
+ this.maxGroupsAllowedDown = Optional.ofNullable(tuning.childAsInteger("max-groups-allowed-down"));
}
+ }
- public Optional<Integer> maxGroupsAllowedDown() { return maxGroupsAllowedDown; }
+ private ClusterControllerTuning build() {
+ return new ClusterControllerTuning(initProgressTime,
+ transitionTime,
+ maxPrematureCrashes,
+ stableStateTimePeriod,
+ minDistributorUpRatio,
+ minStorageUpRatio,
+ maxGroupsAllowedDown,
+ minNodeRatioPerGroup,
+ minSplitBits);
}
}
+
+private record ClusterControllerTuning(Optional<Duration> initProgressTime,
+ Optional<Duration> transitionTime,
+ Optional<Long> maxPrematureCrashes,
+ Optional<Duration> stableStateTimePeriod,
+ Optional<Double> minDistributorUpRatio,
+ Optional<Double> minStorageUpRatio,
+ Optional<Integer> maxGroupsAllowedDown,
+ Optional<Double> minNodeRatioPerGroup,
+ Optional<Integer> minSplitBits) {
+
+ public ClusterControllerTuning withMaxGroupsAllowedDown(int maxGroupsAllowedDown) {
+ return new ClusterControllerConfig.ClusterControllerTuning(
+ initProgressTime,
+ transitionTime,
+ maxPrematureCrashes,
+ stableStateTimePeriod,
+ minDistributorUpRatio,
+ minStorageUpRatio,
+ Optional.of(maxGroupsAllowedDown),
+ minNodeRatioPerGroup,
+ minSplitBits);
+ }
+
+}
+
+}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java
index f1f210b013c..f1d5c7c9220 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java
@@ -164,18 +164,12 @@ public class ContentCluster extends TreeConfigProducer<AnyConfigProducer> implem
DeployState deployState,
ContentCluster c,
ClusterResourceLimits resourceLimits) {
- var config = new ClusterControllerConfig.Builder(c.clusterId,
- contentElement,
- resourceLimits.getClusterControllerLimits(),
- deployState.featureFlags()
- .allowMoreThanOneContentGroupDown(new ClusterSpec.Id(c.clusterId)))
+ return new ClusterControllerConfig.Builder(c.clusterId,
+ contentElement,
+ resourceLimits.getClusterControllerLimits(),
+ deployState.featureFlags()
+ .allowMoreThanOneContentGroupDown(new ClusterSpec.Id(c.clusterId)))
.build(deployState, c, contentElement.getXml());
- config.tuning().maxGroupsAllowedDown().ifPresent(m -> {
- int numberOfLeafGroups = c.getRootGroup().getNumberOfLeafGroups();
- if (m > numberOfLeafGroups)
- throw new IllegalArgumentException("Cannot set max-groups-allowed-down (" + m + ") larger than number of groups (" + numberOfLeafGroups + ")");
- });
- return config;
}
private void setupSearchCluster(ContentSearchCluster csc, ModelElement element, DeployLogger logger) {
diff --git a/config-model/src/main/javacc/SchemaParser.jj b/config-model/src/main/javacc/SchemaParser.jj
index 9d6e16b3f67..9a38fdc673e 100644
--- a/config-model/src/main/javacc/SchemaParser.jj
+++ b/config-model/src/main/javacc/SchemaParser.jj
@@ -1075,15 +1075,16 @@ void attributeSetting(ParsedAttribute attribute) :
void summaryInDocument(ParsedDocumentSummary docsum) :
{
String name;
- ParsedType type;
+ ParsedType type = null;
ParsedSummaryField psf;
}
{
<SUMMARY> name = identifierWithDash() { }
- <TYPE> type = dataType() {
+ (<TYPE> type = dataType())?
+ lbrace() {
psf = new ParsedSummaryField(name, type);
}
- lbrace() (summaryItem(psf) (<NL>)*)* <RBRACE>
+ (summaryItem(psf) (<NL>)*)* <RBRACE>
{
var old = docsum.addField(psf);
if (old != null) {
diff --git a/config-model/src/test/derived/multiplesummaries/index-info.cfg b/config-model/src/test/derived/multiplesummaries/index-info.cfg
index 085a9eb232f..50f2419fc58 100644
--- a/config-model/src/test/derived/multiplesummaries/index-info.cfg
+++ b/config-model/src/test/derived/multiplesummaries/index-info.cfg
@@ -82,8 +82,6 @@ indexinfo[].command[].command "index"
indexinfo[].command[].indexname "h"
indexinfo[].command[].command "multivalue"
indexinfo[].command[].indexname "h"
-indexinfo[].command[].command "string"
-indexinfo[].command[].indexname "h"
indexinfo[].command[].command "type WeightedSet<string>"
indexinfo[].command[].indexname "loc"
indexinfo[].command[].command "index"
diff --git a/config-model/src/test/derived/multiplesummaries/multiplesummaries.sd b/config-model/src/test/derived/multiplesummaries/multiplesummaries.sd
index 51259802a3a..5f93a6e512b 100644
--- a/config-model/src/test/derived/multiplesummaries/multiplesummaries.sd
+++ b/config-model/src/test/derived/multiplesummaries/multiplesummaries.sd
@@ -62,6 +62,7 @@ schema multiplesummaries {
field h type weightedset<string> {
indexing: summary
+ weightedset: create-if-nonexistent
}
field loc type string {
@@ -91,7 +92,7 @@ schema multiplesummaries {
summary e type string {
}
- summary f type array<string> {
+ summary f {
}
summary g type array<int> {
@@ -209,7 +210,7 @@ schema multiplesummaries {
bolding: on
}
- summary c type string {
+ summary c {
}
}
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 90b4625a282..f1dffe53ad7 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
@@ -15,6 +15,7 @@ import com.yahoo.config.provision.RegionName;
import com.yahoo.config.provision.Zone;
import com.yahoo.container.core.ApplicationMetadataConfig;
import com.yahoo.search.config.QrStartConfig;
+import com.yahoo.vespa.config.content.FleetcontrollerConfig;
import com.yahoo.vespa.config.content.core.StorCommunicationmanagerConfig;
import com.yahoo.vespa.config.content.core.StorStatusConfig;
import com.yahoo.vespa.config.search.core.ProtonConfig;
@@ -2352,6 +2353,38 @@ public class ModelProvisioningTest {
}
@Test
+ public void testAllow2ContentGroupsDown() {
+ String servicesXml =
+ "<?xml version='1.0' encoding='utf-8' ?>" +
+ "<services>" +
+ " <container version='1.0' id='qrs'>" +
+ " <nodes count='1'/>" +
+ " </container>" +
+ " <content version='1.0' id='content'>" +
+ " <redundancy>1</redundancy>" +
+ " <documents>" +
+ " <document type='type1' mode='index'/>" +
+ " </documents>" +
+ " <nodes count='4' groups='4'/>" +
+ " <tuning>" +
+ " <cluster-controller>" +
+ " <max-groups-allowed-down>2</max-groups-allowed-down>" +
+ " </cluster-controller>" +
+ " </tuning>" +
+ " </content>" +
+ "</services>";
+ VespaModelTester tester = new VespaModelTester();
+ tester.setModelProperties(new TestProperties().setAllowMoreThanOneContentGroupDown(true));
+ tester.addHosts(9);
+ VespaModel model = tester.createModel(servicesXml, true, new DeployState.Builder()
+ .properties(new TestProperties().setAllowMoreThanOneContentGroupDown(true)));
+
+ var fleetControllerConfigBuilder = new FleetcontrollerConfig.Builder();
+ model.getConfig(fleetControllerConfigBuilder, "admin/standalone/cluster-controllers/0/components/clustercontroller-content-configurer");
+ assertEquals(2, fleetControllerConfigBuilder.build().max_number_of_groups_allowed_to_be_down());
+ }
+
+ @Test
public void containerWithZooKeeperSuboptimalNodeCountDuringRetirement() {
String servicesXml =
"<?xml version='1.0' encoding='utf-8' ?>" +
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ContainerInCloudValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ContainerInCloudValidatorTest.java
deleted file mode 100644
index 3feb8888821..00000000000
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ContainerInCloudValidatorTest.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package com.yahoo.vespa.model.application.validation;
-
-import com.yahoo.config.application.api.ApplicationPackage;
-import com.yahoo.config.model.NullConfigModelRegistry;
-import com.yahoo.config.model.deploy.DeployState;
-import com.yahoo.config.model.deploy.TestProperties;
-import com.yahoo.config.model.test.MockApplicationPackage;
-import com.yahoo.vespa.model.VespaModel;
-import org.junit.jupiter.api.Test;
-import org.xml.sax.SAXException;
-
-import java.io.IOException;
-
-import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-
-public class ContainerInCloudValidatorTest {
-
- @Test
- void failsWhenNoContainerInCloud() throws IOException, SAXException {
- String noContainer = "";
- String container = """
- <container id='default' version='1.0'>
- <nodes count='2' />
- </container>
- """;
- runValidatorOnApp(false, container);
- runValidatorOnApp(false, noContainer);
- runValidatorOnApp(true, container);
- assertEquals("Vespa Cloud applications must have at least one container cluster",
- assertThrows(IllegalArgumentException.class,
- () -> runValidatorOnApp(true, noContainer))
- .getMessage());
- }
-
- private static void runValidatorOnApp(boolean isHosted, String container) throws IOException, SAXException {
- String servicesXml = """
- <services version='1.0'>
- %s
- <content version='1.0'>
- <redundancy>2</redundancy>
- <documents>
- </documents>
- <nodes count='2' />
- </content>
- </services>
- """.formatted(container);
- ApplicationPackage app = new MockApplicationPackage.Builder()
- .withServices(servicesXml)
- .build();
- DeployState deployState = new DeployState.Builder()
- .applicationPackage(app)
- .properties(new TestProperties().setHostedVespa(isHosted).setAllowUserFilters(false))
- .build();
- VespaModel model = new VespaModel(new NullConfigModelRegistry(), deployState);
- new ContainerInCloudValidator().validate(model, deployState);
- }
-
-}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ValidationTester.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ValidationTester.java
index 78d3838d39d..cb535380b18 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ValidationTester.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ValidationTester.java
@@ -35,7 +35,7 @@ public class ValidationTester {
/** Creates a validation tester with 1 node available (in addition to cluster controllers) */
public ValidationTester() {
- this(5);
+ this(4);
}
/** Creates a validation tester with number of nodes available and the given test properties */
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/IndexingModeChangeValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/IndexingModeChangeValidatorTest.java
index 784174a35a0..5d0a1704a1d 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/IndexingModeChangeValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/IndexingModeChangeValidatorTest.java
@@ -79,9 +79,6 @@ public class IndexingModeChangeValidatorTest {
private static String getServices(String indexingMode) {
return "<services version='1.0'>" +
- " <container id='default-container' version='1.0'>" +
- " <nodes count='1'/>" +
- " </container>" +
" <content id='default' version='1.0'>" +
" <redundancy>1</redundancy>" +
" <documents>" +
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 a33b30f7d93..12a6ac00f48 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
@@ -1331,14 +1331,10 @@ public class ContentClusterTest extends ContentBaseTest {
" </engine>" +
" </content>" +
" </services>";
- VespaModel model = createEnd2EndOneNode(new TestProperties()
- .setHostedVespa(false)
- .setMultitenant(true)
- .setAllowMoreThanOneContentGroupDown(true),
- services);
+ VespaModel model = createEnd2EndOneNode(new TestProperties().setAllowMoreThanOneContentGroupDown(true), services);
var fleetControllerConfigBuilder = new FleetcontrollerConfig.Builder();
- model.getConfig(fleetControllerConfigBuilder, "admin/standalone/cluster-controllers/0/components/clustercontroller-storage-configurer");
+ model.getConfig(fleetControllerConfigBuilder, "admin/cluster-controllers/0/components/clustercontroller-storage-configurer");
assertEquals(2, fleetControllerConfigBuilder.build().max_number_of_groups_allowed_to_be_down());
}
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 ae22542de6c..138852e1c5c 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
@@ -41,14 +41,14 @@ public class FleetControllerClusterTest {
parse("""
<cluster id="storage">
<documents/> <tuning>
- <bucket-splitting minimum-bits="7" /> <cluster-controller>
+ <bucket-splitting minimum-bits="7" />
+ <cluster-controller>
<init-progress-time>13</init-progress-time>
<transition-time>27</transition-time>
<max-premature-crashes>4</max-premature-crashes>
<stable-state-period>72</stable-state-period>
<min-distributor-up-ratio>0.7</min-distributor-up-ratio>
<min-storage-up-ratio>0.3</min-storage-up-ratio>
- <max-groups-allowed-down>2</max-groups-allowed-down>
</cluster-controller>
</tuning>
</cluster>""",
@@ -63,7 +63,6 @@ public class FleetControllerClusterTest {
assertEquals(0.7, config.min_distributor_up_ratio(), 0.01);
assertEquals(0.3, config.min_storage_up_ratio(), 0.01);
assertEquals(7, config.ideal_distribution_bits());
- assertEquals(2, config.max_number_of_groups_allowed_to_be_down());
}
@Test
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTester.java b/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTester.java
index 48ddf6b8a82..500fb0838e1 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTester.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTester.java
@@ -21,7 +21,6 @@ import com.yahoo.config.provision.ProvisionLogger;
import com.yahoo.config.provision.Zone;
import com.yahoo.vespa.model.VespaModel;
import com.yahoo.vespa.model.test.utils.VespaModelCreatorWithMockPkg;
-
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
@@ -50,6 +49,7 @@ public class VespaModelTester {
private final ConfigModelRegistry configModelRegistry;
private boolean hosted = true;
+ private TestProperties modelProperties = new TestProperties();
private final Map<NodeResources, Collection<Host>> hostsByResources = new HashMap<>();
private ApplicationId applicationId = ApplicationId.defaultId();
private boolean useDedicatedNodeForLogserver = false;
@@ -101,6 +101,9 @@ public class VespaModelTester {
/** Sets whether this sets up a model for a hosted system. Default: true */
public void setHosted(boolean hosted) { this.hosted = hosted; }
+ /** Sets whether this sets up a model for a hosted system. Default: true */
+ public void setModelProperties(TestProperties testProperties) { this.modelProperties = testProperties; }
+
/** Sets architecture to use for admin clusters. Default: x86_64 */
public void setAdminClusterArchitecture(Architecture architecture) {
this.adminClusterArchitecture = architecture;
@@ -206,7 +209,7 @@ public class VespaModelTester {
provisioner = new SingleNodeProvisioner();
}
- TestProperties properties = new TestProperties()
+ TestProperties properties = modelProperties
.setMultitenant(hosted) // Note: system tests are multitenant but not hosted
.setHostedVespa(hosted)
.setApplicationId(applicationId)