summaryrefslogtreecommitdiffstats
path: root/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiTest.java
diff options
context:
space:
mode:
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.java54
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);
+ }
+ }
+
}