summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjonmv <venstad@gmail.com>2022-06-28 09:25:28 +0200
committerjonmv <venstad@gmail.com>2022-06-28 09:25:28 +0200
commite708fd50fdc5e213267e1da9febd3ece8da3c7de (patch)
treebd2888ae22fabfd8596345dc4e7a72e7d29a0b92
parentd17974c4f3d646b835a489e68bcf30081457e7f7 (diff)
Correctly compare run and expected cloud
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobType.java5
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentStatus.java8
2 files changed, 8 insertions, 5 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobType.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobType.java
index 3ecf350b0b5..079383dd808 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobType.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobType.java
@@ -57,8 +57,9 @@ public final class JobType implements Comparable<JobType> {
if (cloud == null || candidates.in(cloud).zones().isEmpty())
cloud = zones.systemZone().getCloudName();
- return candidates.in(cloud).zones().stream().map(zone -> deploymentTo(zone.getId()))
- .findFirst().orElseThrow(() -> new IllegalArgumentException("no zones in " + environment + " among " +
+ return candidates.in(cloud).zones().stream().findFirst()
+ .map(zone -> deploymentTo(zone.getId()))
+ .orElseThrow(() -> new IllegalArgumentException("no zones in " + environment + " among " +
zones.zones().controllerUpgraded().zones()));
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentStatus.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentStatus.java
index ba54793a891..9f93033a1a2 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentStatus.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentStatus.java
@@ -382,8 +382,8 @@ public class DeploymentStatus {
.filter(run -> run.versions().equals(versions))
.findFirst())
.map(Run::start);
- Optional<Instant> systemTestedAt = testedAt(job.application(), systemTest(null), versions);
- Optional<Instant> stagingTestedAt = testedAt(job.application(), stagingTest(null), versions);
+ Optional<Instant> systemTestedAt = testedAt(job.application(), systemTest(job.type()), versions);
+ Optional<Instant> stagingTestedAt = testedAt(job.application(), stagingTest(job.type()), versions);
if (systemTestedAt.isEmpty() || stagingTestedAt.isEmpty()) return triggeredAt;
Optional<Instant> testedAt = systemTestedAt.get().isAfter(stagingTestedAt.get()) ? systemTestedAt : stagingTestedAt;
return triggeredAt.isPresent() && triggeredAt.get().isBefore(testedAt.get()) ? triggeredAt : testedAt;
@@ -990,6 +990,8 @@ public class DeploymentStatus {
return new JobStepStatus(StepType.test, step, dependencies, job, status) {
@Override
Optional<Instant> completedAt(Change change, Optional<JobId> dependent) {
+ Optional<ZoneId> requiredTestZone = dependent.map(dep -> job.id().type().isSystemTest() ? status.systemTest(dep.type()).zone()
+ : status.stagingTest(dep.type()).zone());
return RunList.from(job)
.matching(run -> dependent.flatMap(status::deploymentFor)
.map(deployment -> run.versions().targetsMatch(Versions.from(change,
@@ -999,7 +1001,7 @@ public class DeploymentStatus {
.orElseGet(() -> (change.platform().isEmpty() || change.platform().get().equals(run.versions().targetPlatform()))
&& (change.revision().isEmpty() || change.revision().get().equals(run.versions().targetRevision()))))
.matching(Run::hasSucceeded)
- .matching(run -> dependent.isEmpty() || status.findCloud(dependent.get().type()).equals(status.findCloud(run.id().type())))
+ .matching(run -> requiredTestZone.isEmpty() || requiredTestZone.get().equals(run.id().type().zone()))
.asList().stream()
.map(run -> run.end().get())
.max(naturalOrder());