diff options
Diffstat (limited to 'controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiTest.java')
-rw-r--r-- | controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiTest.java | 54 |
1 files changed, 46 insertions, 8 deletions
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiTest.java index 26741148d3a..c002c7fb24a 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiTest.java @@ -3,6 +3,7 @@ package com.yahoo.vespa.hosted.controller.restapi.deployment; import com.google.common.collect.ImmutableSet; import com.yahoo.application.container.handler.Request; +import com.yahoo.component.Version; import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.RegionName; import com.yahoo.config.provision.Zone; @@ -14,6 +15,7 @@ import com.yahoo.vespa.hosted.controller.restapi.ContainerControllerTester; import com.yahoo.vespa.hosted.controller.restapi.ControllerContainerTest; import com.yahoo.vespa.hosted.controller.versions.VersionStatus; import com.yahoo.vespa.hosted.controller.versions.VespaVersion; +import org.junit.Before; import org.junit.Test; import java.io.File; @@ -22,6 +24,7 @@ import java.util.ArrayList; import java.util.List; import static com.yahoo.vespa.hosted.controller.application.DeploymentJobs.JobType.component; +import static com.yahoo.vespa.hosted.controller.application.DeploymentJobs.JobType.productionCorpUsEast1; import static com.yahoo.vespa.hosted.controller.application.DeploymentJobs.JobType.stagingTest; import static com.yahoo.vespa.hosted.controller.application.DeploymentJobs.JobType.systemTest; @@ -32,23 +35,42 @@ public class DeploymentApiTest extends ControllerContainerTest { private final static String responseFiles = "src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/responses/"; + private ContainerControllerTester tester; + + @Before + public void before() { + tester = new ContainerControllerTester(container, responseFiles); + } + @Test public void testDeploymentApi() throws IOException { ContainerControllerTester tester = new ContainerControllerTester(container, responseFiles); - tester.containerTester().updateSystemVersion(); + Version version = Version.fromString("5.0"); + tester.containerTester().updateSystemVersion(version); long projectId = 11; - Application app = tester.createApplication(); ApplicationPackage applicationPackage = new ApplicationPackageBuilder() .environment(Environment.prod) .region("corp-us-east-1") .build(); - tester.notifyJobCompletion(app.id(), projectId, true, component); - tester.deploy(app, applicationPackage, new Zone(Environment.test, RegionName.from("us-east-1")), projectId); - tester.notifyJobCompletion(app.id(), projectId, true, systemTest); - tester.deploy(app, applicationPackage, new Zone(Environment.staging, RegionName.from("us-east-3")), projectId); - tester.notifyJobCompletion(app.id(), projectId, false, stagingTest); - tester.controller().updateVersionStatus(censorConfigServers(VersionStatus.compute(tester.controller()), + // 2 applications deploy on current system version + Application failingApplication = tester.createApplication("domain1", "tenant1", + "application1"); + Application productionApplication = tester.createApplication("domain2", "tenant2", + "application2"); + deployCompletely(failingApplication, applicationPackage, projectId, true); + deployCompletely(productionApplication, applicationPackage, projectId, true); + + // New version released + version = Version.fromString("5.1"); + tester.containerTester().updateSystemVersion(version); + + // Applications upgrade, 1/2 succeed + tester.upgrader().maintain(); + deployCompletely(failingApplication, applicationPackage, projectId, false); + deployCompletely(productionApplication, applicationPackage, projectId, true); + + tester.controller().updateVersionStatus(censorConfigServers(VersionStatus.compute(tester.controller()), tester.controller())); tester.assertResponse(new Request("http://localhost:8080/deployment/v1/"), new File("root.json")); @@ -69,4 +91,20 @@ public class DeploymentApiTest extends ControllerContainerTest { return new VersionStatus(censored); } + private void deployCompletely(Application application, ApplicationPackage applicationPackage, long projectId, + boolean success) { + tester.notifyJobCompletion(application.id(), projectId, true, component); + tester.deploy(application, applicationPackage, new Zone(Environment.test, + RegionName.from("us-east-1")), projectId); + tester.notifyJobCompletion(application.id(), projectId, true, systemTest); + tester.deploy(application, applicationPackage, new Zone(Environment.staging, + RegionName.from("us-east-3")), projectId); + tester.notifyJobCompletion(application.id(), projectId, success, stagingTest); + if (success) { + tester.deploy(application, applicationPackage, new Zone(Environment.prod,RegionName.from("corp-us-east-1")), + projectId); + tester.notifyJobCompletion(application.id(), projectId, true, productionCorpUsEast1); + } + } + } |