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-06-28 08:17:31 +0200
committerjonmv <venstad@gmail.com>2022-06-28 08:17:31 +0200
commitd17974c4f3d646b835a489e68bcf30081457e7f7 (patch)
treea3960466016502180083689659850378ee8880b3 /controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTriggerTest.java
parentc2142b2fe5129b50f75a235eb1a4a92e31ddb8c5 (diff)
Revert "Merge pull request #23247 from vespa-engine/revert-23218-jonmv/multiple-test-and-staging-zones"
This reverts commit 94a5a63b92cf7a05ed987a5f01fab5bc8d56bd2d, reversing changes made to 24c7eee36b9c251fc754e6ca51c921e97be44aeb.
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.java475
1 files changed, 288 insertions, 187 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 67ddc767b39..e5000a85f71 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
@@ -2,23 +2,34 @@
package com.yahoo.vespa.hosted.controller.deployment;
import com.yahoo.component.Version;
+import com.yahoo.config.provision.CloudName;
+import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.InstanceName;
+import com.yahoo.config.provision.RegionName;
+import com.yahoo.config.provision.SystemName;
+import com.yahoo.config.provision.zone.RoutingMethod;
+import com.yahoo.config.provision.zone.ZoneApi;
import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.vespa.flags.PermanentFlags;
import com.yahoo.vespa.hosted.controller.ControllerTester;
import com.yahoo.vespa.hosted.controller.Instance;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobId;
+import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.RevisionId;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.RunId;
import com.yahoo.vespa.hosted.controller.application.Change;
import com.yahoo.vespa.hosted.controller.application.Deployment;
+import com.yahoo.vespa.hosted.controller.application.SystemApplication;
import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackage;
+import com.yahoo.vespa.hosted.controller.integration.ZoneApiMock;
+import com.yahoo.vespa.hosted.controller.integration.ZoneRegistryMock;
import com.yahoo.vespa.hosted.controller.versions.VespaVersion;
import org.junit.Assert;
import org.junit.Test;
import java.time.Duration;
import java.time.Instant;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
@@ -981,36 +992,38 @@ public class DeploymentTriggerTest {
DeploymentContext i3 = tester.newDeploymentContext("t", "a", "i3");
DeploymentContext i4 = tester.newDeploymentContext("t", "a", "i4");
ApplicationPackage applicationPackage = ApplicationPackageBuilder
- .fromDeploymentXml("<deployment version='1'>\n" +
- " <upgrade revision-change='when-failing' />\n" +
- " <parallel>\n" +
- " <instance id='i1'>\n" +
- " <prod>\n" +
- " <region>us-east-3</region>\n" +
- " <delay hours='6' />\n" +
- " </prod>\n" +
- " </instance>\n" +
- " <instance id='i2'>\n" +
- " <prod>\n" +
- " <region>us-east-3</region>\n" +
- " </prod>\n" +
- " </instance>\n" +
- " </parallel>\n" +
- " <instance id='i3'>\n" +
- " <prod>\n" +
- " <region>us-east-3</region>\n" +
- " <delay hours='18' />\n" +
- " <test>us-east-3</test>\n" +
- " </prod>\n" +
- " </instance>\n" +
- " <instance id='i4'>\n" +
- " <test />\n" +
- " <staging />\n" +
- " <prod>\n" +
- " <region>us-east-3</region>\n" +
- " </prod>\n" +
- " </instance>\n" +
- "</deployment>\n");
+ .fromDeploymentXml("""
+ <deployment version='1'>
+ <upgrade revision-change='when-failing' />
+ <parallel>
+ <instance id='i1'>
+ <prod>
+ <region>us-east-3</region>
+ <delay hours='6' />
+ </prod>
+ </instance>
+ <instance id='i2'>
+ <prod>
+ <region>us-east-3</region>
+ </prod>
+ </instance>
+ </parallel>
+ <instance id='i3'>
+ <prod>
+ <region>us-east-3</region>
+ <delay hours='18' />
+ <test>us-east-3</test>
+ </prod>
+ </instance>
+ <instance id='i4'>
+ <test />
+ <staging />
+ <prod>
+ <region>us-east-3</region>
+ </prod>
+ </instance>
+ </deployment>
+ """);
// Package is submitted, and change propagated to the two first instances.
i1.submit(applicationPackage);
@@ -1085,20 +1098,22 @@ public class DeploymentTriggerTest {
@Test
public void testMultipleInstancesWithRevisionCatchingUpToUpgrade() {
- String spec = "<deployment>\n" +
- " <instance id='alpha'>\n" +
- " <upgrade rollout=\"simultaneous\" revision-target=\"next\" />\n" +
- " <test />\n" +
- " <staging />\n" +
- " </instance>\n" +
- " <instance id='beta'>\n" +
- " <upgrade rollout=\"simultaneous\" revision-change=\"when-clear\" revision-target=\"next\" />\n" +
- " <prod>\n" +
- " <region>us-east-3</region>\n" +
- " <test>us-east-3</test>\n" +
- " </prod>\n" +
- " </instance>\n" +
- "</deployment>\n";
+ String spec = """
+ <deployment>
+ <instance id='alpha'>
+ <upgrade rollout="simultaneous" revision-target="next" />
+ <test />
+ <staging />
+ </instance>
+ <instance id='beta'>
+ <upgrade rollout="simultaneous" revision-change="when-clear" revision-target="next" />
+ <prod>
+ <region>us-east-3</region>
+ <test>us-east-3</test>
+ </prod>
+ </instance>
+ </deployment>
+ """;
ApplicationPackage applicationPackage = ApplicationPackageBuilder.fromDeploymentXml(spec);
DeploymentContext alpha = tester.newDeploymentContext("t", "a", "alpha");
DeploymentContext beta = tester.newDeploymentContext("t", "a", "beta");
@@ -1236,67 +1251,69 @@ public class DeploymentTriggerTest {
@Test
public void testDeployComplicatedDeploymentSpec() {
String complicatedDeploymentSpec =
- "<deployment version='1.0' athenz-domain='domain' athenz-service='service'>\n" +
- " <parallel>\n" +
- " <instance id='instance' athenz-service='in-service'>\n" +
- " <staging />\n" +
- " <prod>\n" +
- " <parallel>\n" +
- " <region active='true'>us-west-1</region>\n" +
- " <steps>\n" +
- " <region active='true'>us-east-3</region>\n" +
- " <delay hours='2' />\n" +
- " <region active='true'>eu-west-1</region>\n" +
- " <delay hours='2' />\n" +
- " </steps>\n" +
- " <steps>\n" +
- " <delay hours='3' />\n" +
- " <region active='true'>aws-us-east-1a</region>\n" +
- " <parallel>\n" +
- " <region active='true' athenz-service='no-service'>ap-northeast-1</region>\n" +
- " <region active='true'>ap-northeast-2</region>\n" +
- " <test>aws-us-east-1a</test>\n" +
- " </parallel>\n" +
- " </steps>\n" +
- " <delay hours='3' minutes='30' />\n" +
- " </parallel>\n" +
- " <parallel>\n" +
- " <test>ap-northeast-2</test>\n" +
- " <test>ap-northeast-1</test>\n" +
- " </parallel>\n" +
- " <test>us-east-3</test>\n" +
- " <region active='true'>ap-southeast-1</region>\n" +
- " </prod>\n" +
- " <endpoints>\n" +
- " <endpoint id='foo' container-id='bar'>\n" +
- " <region>us-east-3</region>\n" +
- " </endpoint>\n" +
- " <endpoint id='nalle' container-id='frosk' />\n" +
- " <endpoint container-id='quux' />\n" +
- " </endpoints>\n" +
- " </instance>\n" +
- " <instance id='other'>\n" +
- " <upgrade policy='conservative' />\n" +
- " <test />\n" +
- " <block-change revision='true' version='false' days='sat' hours='0-23' time-zone='CET' />\n" +
- " <prod>\n" +
- " <region active='true'>eu-west-1</region>\n" +
- " <test>eu-west-1</test>\n" +
- " </prod>\n" +
- " <notifications when='failing'>\n" +
- " <email role='author' />\n" +
- " <email address='john@dev' when='failing-commit' />\n" +
- " <email address='jane@dev' />\n" +
- " </notifications>\n" +
- " </instance>\n" +
- " </parallel>\n" +
- " <instance id='last'>\n" +
- " <upgrade policy='conservative' />\n" +
- " <prod>\n" +
- " <region active='true'>eu-west-1</region>\n" +
- " </prod>\n" +
- " </instance>\n" +
- "</deployment>\n";
+ """
+ <deployment version='1.0' athenz-domain='domain' athenz-service='service'>
+ <parallel>
+ <instance id='instance' athenz-service='in-service'>
+ <staging />
+ <prod>
+ <parallel>
+ <region active='true'>us-west-1</region>
+ <steps>
+ <region active='true'>us-east-3</region>
+ <delay hours='2' />
+ <region active='true'>eu-west-1</region>
+ <delay hours='2' />
+ </steps>
+ <steps>
+ <delay hours='3' />
+ <region active='true'>aws-us-east-1a</region>
+ <parallel>
+ <region active='true' athenz-service='no-service'>ap-northeast-1</region>
+ <region active='true'>ap-northeast-2</region>
+ <test>aws-us-east-1a</test>
+ </parallel>
+ </steps>
+ <delay hours='3' minutes='30' />
+ </parallel>
+ <parallel>
+ <test>ap-northeast-2</test>
+ <test>ap-northeast-1</test>
+ </parallel>
+ <test>us-east-3</test>
+ <region active='true'>ap-southeast-1</region>
+ </prod>
+ <endpoints>
+ <endpoint id='foo' container-id='bar'>
+ <region>us-east-3</region>
+ </endpoint>
+ <endpoint id='nalle' container-id='frosk' />
+ <endpoint container-id='quux' />
+ </endpoints>
+ </instance>
+ <instance id='other'>
+ <upgrade policy='conservative' />
+ <test />
+ <block-change revision='true' version='false' days='sat' hours='0-23' time-zone='CET' />
+ <prod>
+ <region active='true'>eu-west-1</region>
+ <test>eu-west-1</test>
+ </prod>
+ <notifications when='failing'>
+ <email role='author' />
+ <email address='john@dev' when='failing-commit' />
+ <email address='jane@dev' />
+ </notifications>
+ </instance>
+ </parallel>
+ <instance id='last'>
+ <upgrade policy='conservative' />
+ <prod>
+ <region active='true'>eu-west-1</region>
+ </prod>
+ </instance>
+ </deployment>
+ """;
tester.atMondayMorning();
ApplicationPackage applicationPackage = ApplicationPackageBuilder.fromDeploymentXml(complicatedDeploymentSpec);
@@ -1640,31 +1657,33 @@ public class DeploymentTriggerTest {
@Test
public void testVeryLengthyPipelineRevisions() {
String lengthyDeploymentSpec =
- "<deployment version='1.0'>\n" +
- " <instance id='alpha'>\n" +
- " <test />\n" +
- " <staging />\n" +
- " <upgrade revision-change='always' />\n" +
- " <prod>\n" +
- " <region>us-east-3</region>\n" +
- " <test>us-east-3</test>\n" +
- " </prod>\n" +
- " </instance>\n" +
- " <instance id='beta'>\n" +
- " <upgrade revision-change='when-failing' />\n" +
- " <prod>\n" +
- " <region>us-east-3</region>\n" +
- " <test>us-east-3</test>\n" +
- " </prod>\n" +
- " </instance>\n" +
- " <instance id='gamma'>\n" +
- " <upgrade revision-change='when-clear' revision-target='next' min-risk='3' max-risk='6' />\n" +
- " <prod>\n" +
- " <region>us-east-3</region>\n" +
- " <test>us-east-3</test>\n" +
- " </prod>\n" +
- " </instance>\n" +
- "</deployment>\n";
+ """
+ <deployment version='1.0'>
+ <instance id='alpha'>
+ <test />
+ <staging />
+ <upgrade revision-change='always' />
+ <prod>
+ <region>us-east-3</region>
+ <test>us-east-3</test>
+ </prod>
+ </instance>
+ <instance id='beta'>
+ <upgrade revision-change='when-failing' />
+ <prod>
+ <region>us-east-3</region>
+ <test>us-east-3</test>
+ </prod>
+ </instance>
+ <instance id='gamma'>
+ <upgrade revision-change='when-clear' revision-target='next' min-risk='3' max-risk='6' />
+ <prod>
+ <region>us-east-3</region>
+ <test>us-east-3</test>
+ </prod>
+ </instance>
+ </deployment>
+ """;
var appPackage = ApplicationPackageBuilder.fromDeploymentXml(lengthyDeploymentSpec);
var alpha = tester.newDeploymentContext("t", "a", "alpha");
var beta = tester.newDeploymentContext("t", "a", "beta");
@@ -1783,31 +1802,33 @@ public class DeploymentTriggerTest {
@Test
public void testVeryLengthyPipelineUpgrade() {
String lengthyDeploymentSpec =
- "<deployment version='1.0'>\n" +
- " <instance id='alpha'>\n" +
- " <test />\n" +
- " <staging />\n" +
- " <upgrade rollout='simultaneous' />\n" +
- " <prod>\n" +
- " <region>us-east-3</region>\n" +
- " <test>us-east-3</test>\n" +
- " </prod>\n" +
- " </instance>\n" +
- " <instance id='beta'>\n" +
- " <upgrade rollout='simultaneous' />\n" +
- " <prod>\n" +
- " <region>us-east-3</region>\n" +
- " <test>us-east-3</test>\n" +
- " </prod>\n" +
- " </instance>\n" +
- " <instance id='gamma'>\n" +
- " <upgrade rollout='separate' />\n" +
- " <prod>\n" +
- " <region>us-east-3</region>\n" +
- " <test>us-east-3</test>\n" +
- " </prod>\n" +
- " </instance>\n" +
- "</deployment>\n";
+ """
+ <deployment version='1.0'>
+ <instance id='alpha'>
+ <test />
+ <staging />
+ <upgrade rollout='simultaneous' />
+ <prod>
+ <region>us-east-3</region>
+ <test>us-east-3</test>
+ </prod>
+ </instance>
+ <instance id='beta'>
+ <upgrade rollout='simultaneous' />
+ <prod>
+ <region>us-east-3</region>
+ <test>us-east-3</test>
+ </prod>
+ </instance>
+ <instance id='gamma'>
+ <upgrade rollout='separate' />
+ <prod>
+ <region>us-east-3</region>
+ <test>us-east-3</test>
+ </prod>
+ </instance>
+ </deployment>
+ """;
var appPackage = ApplicationPackageBuilder.fromDeploymentXml(lengthyDeploymentSpec);
var alpha = tester.newDeploymentContext("t", "a", "alpha");
var beta = tester.newDeploymentContext("t", "a", "beta");
@@ -1986,19 +2007,21 @@ public class DeploymentTriggerTest {
@Test
public void testsInSeparateInstance() {
String deploymentSpec =
- "<deployment version='1.0' athenz-domain='domain' athenz-service='service'>\n" +
- " <instance id='canary'>\n" +
- " <upgrade policy='canary' />\n" +
- " <test />\n" +
- " <staging />\n" +
- " </instance>\n" +
- " <instance id='default'>\n" +
- " <prod>\n" +
- " <region>eu-west-1</region>\n" +
- " <test>eu-west-1</test>\n" +
- " </prod>\n" +
- " </instance>\n" +
- "</deployment>\n";
+ """
+ <deployment version='1.0' athenz-domain='domain' athenz-service='service'>
+ <instance id='canary'>
+ <upgrade policy='canary' />
+ <test />
+ <staging />
+ </instance>
+ <instance id='default'>
+ <prod>
+ <region>eu-west-1</region>
+ <test>eu-west-1</test>
+ </prod>
+ </instance>
+ </deployment>
+ """;
ApplicationPackage applicationPackage = ApplicationPackageBuilder.fromDeploymentXml(deploymentSpec);
var canary = tester.newDeploymentContext("t", "a", "canary").submit(applicationPackage);
@@ -2157,29 +2180,60 @@ public class DeploymentTriggerTest {
}
@Test
- public void testInstanceWithOnlySystemTest() {
- String spec = "<deployment>\n" +
- " <instance id='tests'>" +
- " <test />\n" +
- " <upgrade revision-target='next' />" +
- " </instance>\n" +
- " <instance id='main'>\n" +
- " <prod>\n" +
- " <region>us-east-3</region>\n" +
- " </prod>\n" +
- " <upgrade revision-target='next' />" +
- " </instance>\n" +
- "</deployment>\n";
+ public void testInstanceWithOnlySystemTestInTwoClouds() {
+ String spec = """
+ <deployment>
+ <instance id='tests'>
+ <test />
+ <upgrade revision-target='next' />
+ </instance>
+ <instance id='main'>
+ <prod>
+ <region>us-east-3</region>
+ <region>alpha-centauri</region>
+ </prod>
+ <upgrade revision-target='next' />
+ </instance>
+ </deployment>
+ """;
+
+ RegionName alphaCentauri = RegionName.from("alpha-centauri");
+ ZoneApiMock.Builder builder = ZoneApiMock.newBuilder().withCloud("centauri").withSystem(tester.controller().system());
+ ZoneApi testAlphaCentauri = builder.with(ZoneId.from(Environment.test, alphaCentauri)).build();
+ ZoneApi stagingAlphaCentauri = builder.with(ZoneId.from(Environment.staging, alphaCentauri)).build();
+ ZoneApi prodAlphaCentauri = builder.with(ZoneId.from(Environment.prod, alphaCentauri)).build();
+
+ tester.controllerTester().zoneRegistry().addZones(testAlphaCentauri, stagingAlphaCentauri, prodAlphaCentauri);
+ tester.controllerTester().setRoutingMethod(tester.controllerTester().zoneRegistry().zones().all().ids(), RoutingMethod.sharedLayer4);
+ tester.configServer().bootstrap(tester.controllerTester().zoneRegistry().zones().all().ids(), SystemApplication.notController());
+
ApplicationPackage appPackage = ApplicationPackageBuilder.fromDeploymentXml(spec);
DeploymentContext tests = tester.newDeploymentContext("tenant", "application", "tests");
DeploymentContext main = tester.newDeploymentContext("tenant", "application", "main");
Version version1 = new Version("7");
tester.controllerTester().upgradeSystem(version1);
- tests.submit(appPackage).deploy();
+ tests.submit(appPackage);
Optional<RevisionId> revision1 = tests.lastSubmission();
JobId systemTestJob = new JobId(tests.instanceId(), systemTest);
JobId stagingTestJob = new JobId(tests.instanceId(), stagingTest);
JobId mainJob = new JobId(main.instanceId(), productionUsEast3);
+ JobId centauriJob = new JobId(main.instanceId(), JobType.deploymentTo(prodAlphaCentauri.getId()));
+
+ assertEquals(Set.of(systemTestJob, stagingTestJob, mainJob, centauriJob), tests.deploymentStatus().jobsToRun().keySet());
+ tests.runJob(systemTest).runJob(stagingTest).triggerJobs();
+
+ assertEquals(Set.of(systemTestJob, stagingTestJob, mainJob, centauriJob), tests.deploymentStatus().jobsToRun().keySet());
+ tests.triggerJobs();
+ assertEquals(3, tester.jobs().active().size());
+
+ tests.runJob(systemTest);
+ tester.outstandingChangeDeployer().run();
+
+ assertEquals(2, tester.jobs().active().size());
+ main.assertRunning(productionUsEast3);
+
+ tests.runJob(stagingTest);
+ main.runJob(productionUsEast3).runJob(centauriJob.type());
assertEquals(Change.empty(), tests.instance().change());
assertEquals(Change.empty(), main.instance().change());
@@ -2197,25 +2251,28 @@ public class DeploymentTriggerTest {
assertEquals(Change.of(version2), tests.instance().change());
assertEquals(Change.empty(), main.instance().change());
assertEquals(Set.of(systemTestJob), tests.deploymentStatus().jobsToRun().keySet());
+ assertEquals(2, tests.deploymentStatus().jobsToRun().get(systemTestJob).size());
Version version3 = new Version("9");
tester.controllerTester().upgradeSystem(version3);
- tests.failDeployment(systemTest);
+ tests.runJob(systemTest) // Success in default cloud.
+ .failDeployment(systemTest); // Failure in centauri cloud.
tester.upgrader().run();
assertEquals(Change.of(version3), tests.instance().change());
assertEquals(Change.empty(), main.instance().change());
assertEquals(Set.of(systemTestJob), tests.deploymentStatus().jobsToRun().keySet());
- tests.runJob(systemTest);
+ tests.runJob(systemTest).runJob(systemTest);
tester.upgrader().run();
- tests.runJob(stagingTest);
+ tests.runJob(stagingTest).runJob(stagingTest);
assertEquals(Change.empty(), tests.instance().change());
assertEquals(Change.of(version3), main.instance().change());
- assertEquals(Set.of(mainJob), tests.deploymentStatus().jobsToRun().keySet());
+ assertEquals(Set.of(mainJob, centauriJob), tests.deploymentStatus().jobsToRun().keySet());
main.runJob(productionUsEast3);
+ main.runJob(centauriJob.type());
assertEquals(Change.empty(), tests.instance().change());
assertEquals(Change.empty(), main.instance().change());
@@ -2237,6 +2294,7 @@ public class DeploymentTriggerTest {
assertEquals(Change.of(revision2.get()), tests.instance().change());
assertEquals(Change.empty(), main.instance().change());
assertEquals(Set.of(systemTestJob), tests.deploymentStatus().jobsToRun().keySet());
+ assertEquals(2, tests.deploymentStatus().jobsToRun().get(systemTestJob).size());
tests.submit(appPackage);
Optional<RevisionId> revision3 = tests.lastSubmission();
@@ -2253,15 +2311,34 @@ public class DeploymentTriggerTest {
assertEquals(Set.of(systemTestJob), tests.deploymentStatus().jobsToRun().keySet());
tests.runJob(systemTest);
+ assertEquals(Change.of(revision3.get()), tests.instance().change());
+ assertEquals(Change.empty(), main.instance().change());
+ assertEquals(Set.of(systemTestJob, stagingTestJob), tests.deploymentStatus().jobsToRun().keySet());
+
+ tester.outstandingChangeDeployer().run();
+ tester.outstandingChangeDeployer().run();
+ tests.runJob(stagingTest);
+
+ assertEquals(Change.of(revision3.get()), tests.instance().change());
+ assertEquals(Change.empty(), main.instance().change());
+ assertEquals(Set.of(systemTestJob, stagingTestJob), tests.deploymentStatus().jobsToRun().keySet());
+
+ tests.runJob(systemTest);
tester.outstandingChangeDeployer().run();
tester.outstandingChangeDeployer().run();
+
+ assertEquals(Change.empty(), tests.instance().change());
+ assertEquals(Change.of(revision3.get()), main.instance().change());
+ assertEquals(Set.of(stagingTestJob, mainJob, centauriJob), tests.deploymentStatus().jobsToRun().keySet());
+
tests.runJob(stagingTest);
assertEquals(Change.empty(), tests.instance().change());
assertEquals(Change.of(revision3.get()), main.instance().change());
- assertEquals(Set.of(mainJob), tests.deploymentStatus().jobsToRun().keySet());
+ assertEquals(Set.of(mainJob, centauriJob), tests.deploymentStatus().jobsToRun().keySet());
main.runJob(productionUsEast3);
+ main.runJob(centauriJob.type());
tester.outstandingChangeDeployer().run();
assertEquals(Change.empty(), tests.instance().change());
@@ -2287,4 +2364,28 @@ public class DeploymentTriggerTest {
assertTrue(tester.jobs().last(app.instanceId(), stagingTest).get().hasSucceeded());
}
+ @Test
+ public void testJobNames() {
+ ZoneRegistryMock zones = new ZoneRegistryMock(SystemName.main);
+ List<ZoneApi> existing = new ArrayList<>(zones.zones().all().zones());
+ existing.add(ZoneApiMock.newBuilder().withCloud("pink-clouds").withId("test.zone").build());
+ zones.setZones(existing);
+
+ JobType defaultSystemTest = JobType.systemTest(zones, CloudName.defaultName());
+ JobType pinkSystemTest = JobType.systemTest(zones, CloudName.from("pink-clouds"));
+
+ // Job name is identity, used for looking up run history, etc..
+ assertEquals(defaultSystemTest, pinkSystemTest);
+
+ assertEquals(defaultSystemTest, JobType.systemTest(zones, null));
+ assertEquals(defaultSystemTest, JobType.systemTest(zones, CloudName.from("dark-clouds")));
+ assertEquals(defaultSystemTest, JobType.fromJobName("system-test", zones));
+
+ assertEquals(ZoneId.from("test", "us-east-1"), defaultSystemTest.zone());
+ assertEquals(ZoneId.from("staging", "us-east-3"), JobType.stagingTest(zones, null).zone());
+
+ assertEquals(ZoneId.from("test", "zone"), pinkSystemTest.zone());
+ assertEquals(ZoneId.from("staging", "us-east-3"), JobType.stagingTest(zones, CloudName.from("pink-clouds")).zone());
+ }
+
}