summaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2019-04-25 13:53:50 +0200
committerMartin Polden <mpolden@mpolden.no>2019-04-25 13:54:10 +0200
commit49878f23b6cc48b895daddbdd9b95b9ef87b9152 (patch)
tree92d63a60105d03c93d09a91ac8e2f0922b16f778 /controller-server
parentab852eb9a428097d97720f71f3ad1e3db0fdc5cf (diff)
Move deployCompletely to tester class
Diffstat (limited to 'controller-server')
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ContainerControllerTester.java34
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ContainerTester.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiTest.java52
3 files changed, 36 insertions, 52 deletions
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ContainerControllerTester.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ContainerControllerTester.java
index d9cdea2ea7b..c851cb18e8c 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ContainerControllerTester.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ContainerControllerTester.java
@@ -4,7 +4,9 @@ package com.yahoo.vespa.hosted.controller.restapi;
import com.yahoo.application.container.JDisc;
import com.yahoo.application.container.handler.Request;
import com.yahoo.config.provision.ApplicationId;
+import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.TenantName;
+import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.vespa.athenz.api.AthenzDomain;
import com.yahoo.vespa.athenz.api.AthenzPrincipal;
import com.yahoo.vespa.athenz.api.AthenzUser;
@@ -15,23 +17,23 @@ import com.yahoo.vespa.hosted.controller.api.application.v4.model.DeployOptions;
import com.yahoo.vespa.hosted.controller.api.identifiers.Property;
import com.yahoo.vespa.hosted.controller.api.identifiers.PropertyId;
import com.yahoo.vespa.hosted.controller.api.identifiers.ScrewdriverId;
-import com.yahoo.vespa.hosted.controller.athenz.ApplicationAction;
-import com.yahoo.vespa.hosted.controller.athenz.HostedAthenzIdentities;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType;
import com.yahoo.vespa.hosted.controller.api.integration.stubs.MockBuildService;
-import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.application.DeploymentJobs;
+import com.yahoo.vespa.hosted.controller.athenz.ApplicationAction;
+import com.yahoo.vespa.hosted.controller.athenz.HostedAthenzIdentities;
import com.yahoo.vespa.hosted.controller.athenz.mock.AthenzClientFactoryMock;
import com.yahoo.vespa.hosted.controller.athenz.mock.AthenzDbMock;
import com.yahoo.vespa.hosted.controller.deployment.BuildJob;
+import com.yahoo.vespa.hosted.controller.deployment.DeploymentSteps;
import com.yahoo.vespa.hosted.controller.integration.ArtifactRepositoryMock;
import com.yahoo.vespa.hosted.controller.maintenance.JobControl;
import com.yahoo.vespa.hosted.controller.maintenance.Upgrader;
-import com.yahoo.vespa.hosted.controller.security.AthenzCredentials;
-import com.yahoo.vespa.hosted.controller.security.AthenzTenantSpec;
import com.yahoo.vespa.hosted.controller.persistence.CuratorDb;
import com.yahoo.vespa.hosted.controller.persistence.MockCuratorDb;
+import com.yahoo.vespa.hosted.controller.security.AthenzCredentials;
+import com.yahoo.vespa.hosted.controller.security.AthenzTenantSpec;
import java.io.File;
import java.time.Duration;
@@ -94,6 +96,28 @@ public class ContainerControllerTester {
return application;
}
+ public void deployCompletely(Application application, ApplicationPackage applicationPackage, long projectId,
+ boolean failStaging) {
+ jobCompletion(JobType.component).application(application)
+ .projectId(projectId)
+ .uploadArtifact(applicationPackage)
+ .submit();
+ DeploymentSteps steps = controller().applications().deploymentTrigger().steps(applicationPackage.deploymentSpec());
+ boolean succeeding = true;
+ for (var job : steps.jobs()) {
+ if (!succeeding) return;
+ var zone = job.zone(controller().system());
+ deploy(application, applicationPackage, zone);
+ if (failStaging && zone.environment() == Environment.staging) {
+ succeeding = false;
+ }
+ if (zone.environment().isTest()) {
+ controller().applications().deactivate(application.id(), zone);
+ }
+ jobCompletion(job).application(application).success(succeeding).projectId(projectId).submit();
+ }
+ }
+
/** Notify the controller about a job completing */
public BuildJob jobCompletion(JobType job) {
return new BuildJob(this::notifyJobCompletion, artifactRepository()).type(job);
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ContainerTester.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ContainerTester.java
index 11ac250d4e0..ef86ffa125f 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ContainerTester.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ContainerTester.java
@@ -6,11 +6,11 @@ import com.yahoo.application.container.handler.Request;
import com.yahoo.application.container.handler.Response;
import com.yahoo.component.ComponentSpecification;
import com.yahoo.component.Version;
+import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.container.http.filter.FilterChainRepository;
import com.yahoo.jdisc.http.filter.SecurityRequestFilter;
import com.yahoo.jdisc.http.filter.SecurityRequestFilterChain;
import com.yahoo.vespa.hosted.controller.Controller;
-import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.vespa.hosted.controller.application.SystemApplication;
import com.yahoo.vespa.hosted.controller.integration.ConfigServerMock;
import com.yahoo.vespa.hosted.controller.versions.VersionStatus;
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 575427c9222..73977d7c2fa 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
@@ -5,18 +5,15 @@ import com.google.common.collect.ImmutableSet;
import com.yahoo.component.Version;
import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.HostName;
-import com.yahoo.config.provision.RegionName;
+import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.vespa.hosted.controller.Application;
import com.yahoo.vespa.hosted.controller.Controller;
-import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType;
-import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.deployment.ApplicationPackageBuilder;
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;
@@ -31,13 +28,6 @@ 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() {
ContainerControllerTester tester = new ContainerControllerTester(container, responseFiles);
@@ -55,11 +45,11 @@ public class DeploymentApiTest extends ControllerContainerTest {
"application2");
Application applicationWithoutDeployment = tester.createApplication("domain3", "tenant3",
"application3");
- deployCompletely(failingApplication, applicationPackage, 1L, true);
- deployCompletely(productionApplication, applicationPackage, 2L, true);
+ tester.deployCompletely(failingApplication, applicationPackage, 1L, false);
+ tester.deployCompletely(productionApplication, applicationPackage, 2L, false);
// Deploy once so that job information is stored, then remove the deployment
- deployCompletely(applicationWithoutDeployment, applicationPackage, 3L, true);
+ tester.deployCompletely(applicationWithoutDeployment, applicationPackage, 3L, false);
tester.controller().applications().deactivate(applicationWithoutDeployment.id(), ZoneId.from("prod", "us-west-1"));
// New version released
@@ -70,8 +60,8 @@ public class DeploymentApiTest extends ControllerContainerTest {
tester.upgrader().maintain();
tester.controller().applications().deploymentTrigger().triggerReadyJobs();
tester.controller().applications().deploymentTrigger().triggerReadyJobs();
- deployCompletely(failingApplication, applicationPackage, 1L, false);
- deployCompletely(productionApplication, applicationPackage, 2L, true);
+ tester.deployCompletely(failingApplication, applicationPackage, 1L, true);
+ tester.deployCompletely(productionApplication, applicationPackage, 2L, false);
tester.controller().updateVersionStatus(censorConfigServers(VersionStatus.compute(tester.controller()),
tester.controller()));
@@ -98,34 +88,4 @@ public class DeploymentApiTest extends ControllerContainerTest {
return new VersionStatus(censored);
}
- private void deployCompletely(Application application, ApplicationPackage applicationPackage, long projectId,
- boolean success) {
- tester.jobCompletion(JobType.component)
- .application(application)
- .projectId(projectId)
- .uploadArtifact(applicationPackage)
- .submit();
- tester.deploy(application, applicationPackage, ZoneId.from(Environment.test, RegionName.from("us-east-1"))
- );
- tester.jobCompletion(JobType.systemTest)
- .application(application)
- .projectId(projectId)
- .submit();
- tester.deploy(application, applicationPackage, ZoneId.from(Environment.staging, RegionName.from("us-east-3"))
- );
- tester.jobCompletion(JobType.stagingTest)
- .application(application)
- .projectId(projectId)
- .success(success)
- .submit();
- if (success) {
- tester.deploy(application, applicationPackage, ZoneId.from(Environment.prod,
- RegionName.from("us-west-1")));
- tester.jobCompletion(JobType.productionUsWest1)
- .application(application)
- .projectId(projectId)
- .submit();
- }
- }
-
}