aboutsummaryrefslogtreecommitdiffstats
path: root/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTriggerTest.java
diff options
context:
space:
mode:
authorjonmv <venstad@gmail.com>2022-09-12 23:40:43 +0200
committerjonmv <venstad@gmail.com>2022-09-12 23:40:43 +0200
commit61ce6727165ab6d0d1362771ac464e9cf4a12494 (patch)
tree584ccc01855e3cbbef7315f8cf3e83f3d8b7c050 /controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTriggerTest.java
parent9b3d41620d9f728d38f9e32084a14f411e1856fc (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.java53
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");