diff options
author | Harald Musum <musum@verizonmedia.com> | 2019-11-11 09:19:28 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-11 09:19:28 +0100 |
commit | a390e33a1cdbf5f7ad246a53492b34b3e409fb9d (patch) | |
tree | 8247cf81610f935c0ced89351cc93108bde90e7f | |
parent | 4faca41f28583c4fd6d8d27e8cc22f0d5071bd35 (diff) | |
parent | 3838685d7c27ab1fd1cee58dfc04a2a227774add (diff) |
Merge pull request #11265 from vespa-engine/jvenstad/multi-instance-deployment-api-tets
Jvenstad/multi instance deployment api tets
3 files changed, 35 insertions, 9 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiHandler.java index 4ac7ff4d6d4..46f4b2816c1 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiHandler.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiHandler.java @@ -23,6 +23,8 @@ import com.yahoo.vespa.hosted.controller.restapi.application.EmptyResponse; import com.yahoo.vespa.hosted.controller.versions.VespaVersion; import com.yahoo.yolean.Exceptions; +import java.time.Instant; +import java.util.Comparator; import java.util.Optional; import java.util.logging.Level; @@ -162,7 +164,8 @@ public class DeploymentApiHandler extends LoggingRequestHandler { .not().failingBecause(outOfCapacity) .lastCompleted().on(version) .asList().stream() - .min(comparing(job -> job.lastCompleted().get().at())); + .min(Comparator.<JobStatus, Instant>comparing(job -> job.lastCompleted().get().at()) + .thenComparing(job -> job.type())); } /** The number of production jobs for this application */ @@ -186,7 +189,8 @@ public class DeploymentApiHandler extends LoggingRequestHandler { .upgrading() .lastTriggered().on(version) .asList().stream() - .max(comparing(job -> job.lastTriggered().get().at())); + .max(Comparator.<JobStatus, Instant>comparing(job -> job.lastCompleted().get().at()) + .thenComparing(job -> job.type())); } } 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 3c23053eac0..b2c851a4b7d 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 @@ -36,17 +36,22 @@ public class DeploymentApiTest extends ControllerContainerTest { DeploymentTester deploymentTester = new DeploymentTester(new ControllerTester(tester)); Version version = Version.fromString("5.0"); deploymentTester.controllerTester().upgradeSystem(version); + ApplicationPackage multiInstancePackage = new ApplicationPackageBuilder() + .instances("i1,i2") + .region("us-west-1") + .build(); ApplicationPackage applicationPackage = new ApplicationPackageBuilder() - .environment(Environment.prod) .region("us-west-1") .build(); // 3 applications deploy on current system version var failingApp = deploymentTester.newDeploymentContext("tenant1", "application1", "default"); - var productionApp = deploymentTester.newDeploymentContext("tenant2", "application2", "default"); + var productionApp = deploymentTester.newDeploymentContext("tenant2", "application2", "i1"); + var otherProductionApp = deploymentTester.newDeploymentContext("tenant2", "application2", "i2"); var appWithoutDeployments = deploymentTester.newDeploymentContext("tenant3", "application3", "default"); failingApp.submit(applicationPackage).deploy(); - productionApp.submit(applicationPackage).deploy(); + productionApp.submit(multiInstancePackage).runJob(JobType.systemTest).runJob(JobType.stagingTest).runJob(JobType.productionUsWest1); + otherProductionApp.runJob(JobType.systemTest).runJob(JobType.stagingTest).runJob(JobType.productionUsWest1); // Deploy once so that job information is stored, then remove the deployment appWithoutDeployments.submit(applicationPackage).deploy(); @@ -59,7 +64,7 @@ public class DeploymentApiTest extends ControllerContainerTest { // Applications upgrade, 1/2 succeed deploymentTester.upgrader().maintain(); deploymentTester.triggerJobs(); - productionApp.deployPlatform(version); + productionApp.runJob(JobType.systemTest).runJob(JobType.stagingTest).runJob(JobType.productionUsWest1); failingApp.runJob(JobType.systemTest).failDeployment(JobType.stagingTest); deploymentTester.triggerJobs(); diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/responses/root.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/responses/root.json index a3a763e9634..ca5424696d2 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/responses/root.json +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/responses/root.json @@ -18,6 +18,15 @@ "upgradePolicy": "default", "productionJobs": 1, "productionSuccesses": 1 + }, + { + "tenant": "tenant2", + "application": "application2", + "instance": "i2", + "url": "http://localhost:8080/application/v4/tenant/tenant2/application/application2", + "upgradePolicy": "default", + "productionJobs": 1, + "productionSuccesses": 1 } ], "deployingApplications": [] @@ -31,10 +40,10 @@ "systemVersion": true, "configServers": [ { - "hostname":"config1.test" + "hostname": "config1.test" }, { - "hostname":"config2.test" + "hostname": "config2.test" } ], "failingApplications": [ @@ -51,7 +60,7 @@ { "tenant": "tenant2", "application": "application2", - "instance": "default", + "instance": "i1", "url": "http://localhost:8080/application/v4/tenant/tenant2/application/application2", "upgradePolicy": "default", "productionJobs": 1, @@ -66,6 +75,14 @@ "url": "http://localhost:8080/application/v4/tenant/tenant1/application/application1", "upgradePolicy": "default", "running": "staging-test" + }, + { + "tenant": "tenant2", + "application": "application2", + "instance": "i2", + "url": "http://localhost:8080/application/v4/tenant/tenant2/application/application2", + "upgradePolicy": "default", + "running": "staging-test" } ] } |