summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2019-11-11 09:19:28 +0100
committerGitHub <noreply@github.com>2019-11-11 09:19:28 +0100
commita390e33a1cdbf5f7ad246a53492b34b3e409fb9d (patch)
tree8247cf81610f935c0ced89351cc93108bde90e7f
parent4faca41f28583c4fd6d8d27e8cc22f0d5071bd35 (diff)
parent3838685d7c27ab1fd1cee58dfc04a2a227774add (diff)
Merge pull request #11265 from vespa-engine/jvenstad/multi-instance-deployment-api-tets
Jvenstad/multi instance deployment api tets
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiHandler.java8
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiTest.java13
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/responses/root.json23
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"
}
]
}