summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config-model-api/abi-spec.json1
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/application/api/ValidationOverrides.java2
-rw-r--r--config-model-api/src/test/java/com/yahoo/config/application/api/ValidationOverrideTest.java3
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/ValidationOverridesValidator.java4
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/ValidationOverridesValidatorTest.java7
5 files changed, 11 insertions, 6 deletions
diff --git a/config-model-api/abi-spec.json b/config-model-api/abi-spec.json
index 735778f4d46..ba5f994ecd6 100644
--- a/config-model-api/abi-spec.json
+++ b/config-model-api/abi-spec.json
@@ -594,6 +594,7 @@
"public void invalid(com.yahoo.config.application.api.ValidationId, java.lang.String, java.time.Instant)",
"public boolean allows(java.lang.String, java.time.Instant)",
"public boolean allows(com.yahoo.config.application.api.ValidationId, java.time.Instant)",
+ "public boolean validate(java.time.Instant)",
"public java.lang.String xmlForm()",
"public static java.lang.String toAllowMessage(com.yahoo.config.application.api.ValidationId)",
"public static com.yahoo.config.application.api.ValidationOverrides fromXml(java.io.Reader)",
diff --git a/config-model-api/src/main/java/com/yahoo/config/application/api/ValidationOverrides.java b/config-model-api/src/main/java/com/yahoo/config/application/api/ValidationOverrides.java
index 82601e6685b..d79aaef1ab5 100644
--- a/config-model-api/src/main/java/com/yahoo/config/application/api/ValidationOverrides.java
+++ b/config-model-api/src/main/java/com/yahoo/config/application/api/ValidationOverrides.java
@@ -49,7 +49,6 @@ public class ValidationOverrides {
private ValidationOverrides(List<Allow> overrides, String xmlForm) {
this.overrides = ImmutableList.copyOf(overrides);
this.xmlForm = xmlForm;
- validate(Instant.now());
}
/** Throws a ValidationException unless all given validation is overridden at this time */
@@ -74,6 +73,7 @@ public class ValidationOverrides {
/** Returns whether the given (assumed invalid) change is allowed by this at the moment */
public boolean allows(ValidationId validationId, Instant now) {
+ validate(now);
for (Allow override : overrides) {
if (override.allows(validationId, now))
return true;
diff --git a/config-model-api/src/test/java/com/yahoo/config/application/api/ValidationOverrideTest.java b/config-model-api/src/test/java/com/yahoo/config/application/api/ValidationOverrideTest.java
index f7ef059c5f2..81adef1cfea 100644
--- a/config-model-api/src/test/java/com/yahoo/config/application/api/ValidationOverrideTest.java
+++ b/config-model-api/src/test/java/com/yahoo/config/application/api/ValidationOverrideTest.java
@@ -61,10 +61,11 @@ public class ValidationOverrideTest {
ValidationOverrides overrides = ValidationOverrides.fromXml(new StringReader(validationOverrides));
Instant now = ManualClock.at("2000-01-01T23:59:00");
overrides.allows("indexing-change", now);
+ overrides.validate(now);
Assert.fail("Expected validation interval override validation validation failure");
}
catch (IllegalArgumentException e) {
- Assert.assertEquals("allow 'indexing-change' until 2000-02-03T00:00:00Z is too far in the future: Max 30 days is allowed",
+ Assert.assertEquals("validation-overrides is invalid: allow 'indexing-change' until 2000-02-03T00:00:00Z is too far in the future: Max 30 days is allowed",
e.getMessage());
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/ValidationOverridesValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/ValidationOverridesValidator.java
index 0095c2c335d..955d7924f86 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/ValidationOverridesValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/ValidationOverridesValidator.java
@@ -22,8 +22,8 @@ public class ValidationOverridesValidator extends Validator {
Optional<Reader> overrides = deployState.getApplicationPackage().getValidationOverrides();
if (overrides.isEmpty()) return;
- // Dates are validated in constructor
- ValidationOverrides.fromXml(overrides.get());
+ ValidationOverrides validationOverrides = ValidationOverrides.fromXml(overrides.get());
+ validationOverrides.validate(deployState.now());
}
}
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 453bdf98ce7..90d3d80c032 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
@@ -2,6 +2,7 @@
package com.yahoo.vespa.model.application.validation;
import com.yahoo.config.model.NullConfigModelRegistry;
+import com.yahoo.config.model.api.ValidationParameters;
import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.vespa.model.VespaModel;
@@ -35,7 +36,8 @@ public class ValidationOverridesValidatorTest {
" </validation-overrides>";
var deployState = createDeployState(validationOverridesXml);
- new VespaModel(new NullConfigModelRegistry(), deployState);
+ VespaModel model = new VespaModel(new NullConfigModelRegistry(), deployState);
+ Validation.validate(model, new ValidationParameters(), deployState);
}
@Test
@@ -55,7 +57,8 @@ public class ValidationOverridesValidatorTest {
private static void assertValidationError(String message, String validationOverridesXml) {
try {
var deployState = createDeployState(validationOverridesXml);
- new VespaModel(new NullConfigModelRegistry(), deployState);
+ VespaModel model = new VespaModel(new NullConfigModelRegistry(), deployState);
+ Validation.validate(model, new ValidationParameters(), deployState);
fail("Did not get expected exception");
} catch (IllegalArgumentException e) {
assertEquals(message, e.getMessage());