diff options
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()); |