diff options
author | jonmv <venstad@gmail.com> | 2022-09-12 23:40:43 +0200 |
---|---|---|
committer | jonmv <venstad@gmail.com> | 2022-09-12 23:40:43 +0200 |
commit | 61ce6727165ab6d0d1362771ac464e9cf4a12494 (patch) | |
tree | 584ccc01855e3cbbef7315f8cf3e83f3d8b7c050 /controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTriggerTest.java | |
parent | 9b3d41620d9f728d38f9e32084a14f411e1856fc (diff) |
Refuse new apps deployments to outdated majors
Diffstat (limited to 'controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTriggerTest.java')
-rw-r--r-- | controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTriggerTest.java | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTriggerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTriggerTest.java index 9edcc5de312..9e0155dc50f 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTriggerTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTriggerTest.java @@ -2207,6 +2207,7 @@ public class DeploymentTriggerTest { app.submit(new ApplicationPackageBuilder().region("us-east-3") .compileVersion(version2) .build()); + tester.upgrader().overrideConfidence(version2, Confidence.normal); tester.upgrader().overrideConfidence(version3, Confidence.broken); tester.controllerTester().computeVersionStatus(); tester.upgrader().run(); @@ -2280,6 +2281,58 @@ public class DeploymentTriggerTest { } @Test + void testOutdatedMajorIsIllegal() { + Version version0 = new Version("6.2"); + Version version1 = new Version("7.1"); + tester.controllerTester().upgradeSystem(version0); + DeploymentContext old = tester.newDeploymentContext("t", "a", "default").submit() + .runJob(systemTest).runJob(stagingTest).runJob(productionUsCentral1); + old.runJob(JobType.dev("us-east-1"), applicationPackage()); + + tester.controllerTester().upgradeSystem(version1); + tester.upgrader().overrideConfidence(version1, Confidence.high); + tester.controllerTester().computeVersionStatus(); + + // New app can't deploy to 6.2 + DeploymentContext app = tester.newDeploymentContext("t", "b", "default"); + assertEquals("platform version 6.2 is not on a current major version in this system", + assertThrows(IllegalArgumentException.class, + () -> tester.jobs().deploy(app.instanceId(), + JobType.dev("us-east-1"), + Optional.of(version0), + DeploymentContext.applicationPackage())) + .getMessage()); + + // App which already deployed to 6.2 can still do so. + tester.jobs().deploy(old.instanceId(), + JobType.dev("us-east-1"), + Optional.of(version0), + DeploymentContext.applicationPackage()); + + app.submit(); + assertEquals("platform version 6.2 is not on a current major version in this system", + assertThrows(IllegalArgumentException.class, + () -> tester.deploymentTrigger().forceChange(app.instanceId(), Change.of(version0), false)) + .getMessage()); + + tester.deploymentTrigger().forceChange(old.instanceId(), Change.of(version0), false); + + // Not even version incompatibility tricks the system. + tester.controllerTester().flagSource().withListFlag(PermanentFlags.INCOMPATIBLE_VERSIONS.id(), List.of("7"), String.class); + assertEquals("compile version 6.2 is incompatible with the current major version of this system", + assertThrows(IllegalArgumentException.class, + () -> + app.submit(new ApplicationPackageBuilder().region("us-central-1").region("us-east-3").region("us-west-1") + .compileVersion(version0) + .build())) + .getMessage()); + + old.submit(new ApplicationPackageBuilder().region("us-central-1").region("us-east-3").region("us-west-1") + .compileVersion(version0) + .build()); + } + + @Test void testInitialDeploymentPlatform() { Version version0 = tester.controllerTester().controller().readSystemVersion(); Version version1 = new Version("6.2"); |