summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Marius Venstad <jvenstad@yahoo-inc.com>2018-04-19 11:14:18 +0200
committerJon Marius Venstad <jvenstad@yahoo-inc.com>2018-04-20 14:30:20 +0200
commit4d2f0f8073b051acff0e863d1586da7f201933dd (patch)
tree66ecae307061275f3253da25f162955f28438761
parenta504e8980d6796c6ee870438f099f8048da4dcfc (diff)
BuildJob cleanup
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/BuildService.java30
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockBuildService.java5
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java3
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/DeploymentJobs.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTrigger.java15
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/screwdriver/ScrewdriverApiHandler.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java31
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTester.java5
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTester.java10
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTriggerTest.java3
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/FailureRedeployerTest.java6
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/UpgraderTest.java4
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ContainerControllerTester.java6
13 files changed, 67 insertions, 55 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/BuildService.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/BuildService.java
index d853443bf5d..937df497133 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/BuildService.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/BuildService.java
@@ -1,7 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration;
-import java.util.Objects;
+import com.yahoo.config.provision.ApplicationId;
/**
* @author jvenstad
@@ -21,37 +21,47 @@ public interface BuildService {
boolean isRunning(BuildJob buildJob);
- // TODO jvenstad: Implement with DeploymentTrigger.Job
class BuildJob {
+ private final ApplicationId applicationId;
private final long projectId;
private final String jobName;
- public BuildJob(long projectId, String jobName) {
+ protected BuildJob(ApplicationId applicationId, long projectId, String jobName) {
+ this.applicationId = applicationId;
this.projectId = projectId;
this.jobName = jobName;
}
+ public static BuildJob of(ApplicationId applicationId, long projectId, String jobName) {
+ return new BuildJob(applicationId, projectId, jobName);
+ }
+
+ public ApplicationId applicationId() { return applicationId; }
public long projectId() { return projectId; }
public String jobName() { return jobName; }
@Override
- public boolean equals(Object o) {
+ public final boolean equals(Object o) {
if (this == o) return true;
if ( ! (o instanceof BuildJob)) return false;
+
BuildJob buildJob = (BuildJob) o;
- return projectId == buildJob.projectId &&
- Objects.equals(jobName, buildJob.jobName);
+
+ if (projectId != buildJob.projectId) return false;
+ return jobName.equals(buildJob.jobName);
}
@Override
- public String toString() {
- return jobName + "@" + projectId;
+ public final int hashCode() {
+ int result = (int) (projectId ^ (projectId >>> 32));
+ result = 31 * result + jobName.hashCode();
+ return result;
}
@Override
- public int hashCode() {
- return Objects.hash(projectId, jobName);
+ public String toString() {
+ return jobName + " for " + applicationId + " with project " + projectId;
}
}
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockBuildService.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockBuildService.java
index b942a6baa98..9219619dc9e 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockBuildService.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockBuildService.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.hosted.controller.api.integration.stubs;
import com.yahoo.component.AbstractComponent;
+import com.yahoo.config.provision.ApplicationId;
import com.yahoo.vespa.hosted.controller.api.integration.BuildService;
import java.util.ArrayList;
@@ -36,8 +37,8 @@ public class MockBuildService extends AbstractComponent implements BuildService
}
/** Removes the given job for the given project and returns whether it was found. */
- public boolean removeJob(long projectId, String jobType) {
- return jobs.remove(new BuildJob(projectId, jobType));
+ public boolean remove(BuildJob buildJob) {
+ return jobs.remove(buildJob);
}
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java
index 0749e49729f..fce36406830 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java
@@ -37,6 +37,7 @@ import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.application.ApplicationVersion;
import com.yahoo.vespa.hosted.controller.application.DeploymentJobs.JobType;
import com.yahoo.vespa.hosted.controller.application.JobStatus;
+import com.yahoo.vespa.hosted.controller.application.JobStatus.JobRun;
import com.yahoo.vespa.hosted.controller.tenant.AthenzTenant;
import com.yahoo.vespa.hosted.controller.application.Deployment;
import com.yahoo.vespa.hosted.controller.tenant.Tenant;
@@ -283,7 +284,7 @@ public class ApplicationController {
} else {
JobType jobType = JobType.from(controller.system(), zone)
.orElseThrow(() -> new IllegalArgumentException("No job found for zone " + zone));
- Optional<JobStatus.JobRun> triggered = Optional.ofNullable(application.deploymentJobs().jobStatus().get(jobType))
+ Optional<JobRun> triggered = Optional.ofNullable(application.deploymentJobs().jobStatus().get(jobType))
.flatMap(JobStatus::lastTriggered);
// TODO jvenstad: Verify this response with a test, and see that it sorts itself when triggered.
if ( ! triggered.isPresent())
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/DeploymentJobs.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/DeploymentJobs.java
index 711853d2f9c..87578e6639b 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/DeploymentJobs.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/DeploymentJobs.java
@@ -7,6 +7,7 @@ import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.RegionName;
import com.yahoo.config.provision.SystemName;
import com.yahoo.vespa.hosted.controller.Controller;
+import com.yahoo.vespa.hosted.controller.api.integration.BuildService;
import com.yahoo.vespa.hosted.controller.api.integration.organization.IssueId;
import com.yahoo.vespa.hosted.controller.api.integration.zone.ZoneId;
@@ -262,6 +263,7 @@ public class DeploymentJobs {
public boolean success() { return ! jobError.isPresent(); }
public Optional<SourceRevision> sourceRevision() { return sourceRevision; }
public Optional<JobError> jobError() { return jobError; }
+ public BuildService.BuildJob buildJob() { return BuildService.BuildJob.of(applicationId, projectId, jobType.jobName()); }
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTrigger.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTrigger.java
index b8f49ab9ca7..b9ecaa61e6d 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTrigger.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTrigger.java
@@ -129,7 +129,7 @@ public class DeploymentTrigger {
.collect(groupingBy(Job::jobType))
// False for production jobs -- keep step order and make a task for each application.
: entry.getValue().stream()
- .collect(groupingBy(Job::id)))
+ .collect(groupingBy(Job::applicationId)))
.values().stream()
.map(jobs -> (Supplier<Long>) jobs.stream()
.filter(job -> canTrigger(job) && trigger(job))
@@ -147,7 +147,7 @@ public class DeploymentTrigger {
log.log(LogLevel.INFO, String.format("Attempting to trigger %s for %s, deploying %s: %s (platform: %s, application: %s)", job.jobType, job.id, job.change, job.reason, job.platformVersion, job.applicationVersion.id()));
try {
- buildService.trigger(new BuildService.BuildJob(job.projectId, job.jobType.jobName()));
+ buildService.trigger(job);
applications().lockOrThrow(job.id, application -> applications().store(application.withJobTriggering(
job.jobType, new JobStatus.JobRun(-1, job.platformVersion, job.applicationVersion, job.reason, clock.instant()))));
return true;
@@ -205,7 +205,7 @@ public class DeploymentTrigger {
public boolean isRunning(Application application, JobType jobType) {
return ! application.deploymentJobs().statusOf(jobType)
.flatMap(job -> job.lastCompleted().map(run -> run.at().isAfter(job.lastTriggered().get().at()))).orElse(false)
- && buildService.isRunning(new BuildService.BuildJob(application.deploymentJobs().projectId().getAsLong(), jobType.jobName()));
+ && buildService.isRunning(BuildService.BuildJob.of(application.id(), application.deploymentJobs().projectId().getAsLong(), jobType.jobName()));
}
public Job forcedDeploymentJob(Application application, JobType jobType, String reason) {
@@ -342,11 +342,9 @@ public class DeploymentTrigger {
return Optional.ofNullable(application.deployments().get(jobType.zone(controller.system()).get()));
}
- public static class Job {
+ public static class Job extends BuildService.BuildJob {
- private final ApplicationId id;
private final JobType jobType;
- private final long projectId;
private final String reason;
private final Instant availableSince;
private final Collection<JobType> concurrentlyWith;
@@ -357,9 +355,8 @@ public class DeploymentTrigger {
private final ApplicationVersion applicationVersion;
private Job(Application application, JobType jobType, String reason, Instant availableSince, Collection<JobType> concurrentlyWith, boolean isRetry, Change change, Version platformVersion, ApplicationVersion applicationVersion) {
- this.id = application.id();
+ super(application.id(), application.deploymentJobs().projectId().getAsLong(), jobType.jobName());
this.jobType = jobType;
- this.projectId = application.deploymentJobs().projectId().getAsLong();
this.availableSince = availableSince;
this.concurrentlyWith = concurrentlyWith;
this.reason = reason;
@@ -370,9 +367,7 @@ public class DeploymentTrigger {
this.applicationVersion = applicationVersion;
}
- public ApplicationId id() { return id; }
public JobType jobType() { return jobType; }
- public long projectId() { return projectId; }
public String reason() { return reason; }
public Instant availableSince() { return availableSince; }
public boolean isRetry() { return isRetry; }
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/screwdriver/ScrewdriverApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/screwdriver/ScrewdriverApiHandler.java
index 0f7d5b0eab2..960b1c84c3f 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/screwdriver/ScrewdriverApiHandler.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/screwdriver/ScrewdriverApiHandler.java
@@ -119,7 +119,7 @@ public class ScrewdriverApiHandler extends LoggingRequestHandler {
Cursor jobArray = jobTypesObject.setArray(jobType.jobName());
jobs.forEach(job -> {
Cursor buildJobObject = jobArray.addObject();
- buildJobObject.setString("id", job.id().toString());
+ buildJobObject.setString("id", job.applicationId().toString());
buildJobObject.setLong("projectId", job.projectId());
buildJobObject.setString("reason", job.reason());
buildJobObject.setString("change", job.change().toString());
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java
index 81228749323..58628a42042 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java
@@ -53,6 +53,7 @@ import java.util.Map;
import java.util.Optional;
import java.util.function.Supplier;
+import static com.yahoo.vespa.hosted.controller.api.integration.BuildService.BuildJob.of;
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.productionUsEast3;
@@ -440,33 +441,33 @@ public class ControllerTest {
assertEquals(jobs, tester.buildService().jobs());
tester.readyJobTrigger().maintain();
- jobs.add(new BuildService.BuildJob(app2.deploymentJobs().projectId().getAsLong(), stagingTest.jobName()));
+ jobs.add(of(app2, stagingTest));
assertEquals(jobs, tester.buildService().jobs());
tester.readyJobTrigger().maintain();
- jobs.add(new BuildService.BuildJob(app1.deploymentJobs().projectId().getAsLong(), stagingTest.jobName()));
+ jobs.add(of(app1, stagingTest));
assertEquals(jobs, tester.buildService().jobs());
tester.readyJobTrigger().maintain();
- jobs.add(new BuildService.BuildJob(app3.deploymentJobs().projectId().getAsLong(), stagingTest.jobName()));
+ jobs.add(of(app3, stagingTest));
assertEquals(jobs, tester.buildService().jobs());
// Remove the jobs for app1 and app2, and then let app3 fail with outOfCapacity.
// All three jobs are now eligible, but the one for app3 should trigger first as an outOfCapacity-retry.
- tester.buildService().removeJob(app1.deploymentJobs().projectId().getAsLong(), stagingTest.jobName());
- tester.buildService().removeJob(app2.deploymentJobs().projectId().getAsLong(), stagingTest.jobName());
+ tester.buildService().remove(of(app1, stagingTest));
+ tester.buildService().remove(of(app2, stagingTest));
tester.clock().advance(Duration.ofHours(13));
- jobs.remove(new BuildService.BuildJob(app1.deploymentJobs().projectId().getAsLong(), stagingTest.jobName()));
- jobs.remove(new BuildService.BuildJob(app2.deploymentJobs().projectId().getAsLong(), stagingTest.jobName()));
+ jobs.remove(of(app1, stagingTest));
+ jobs.remove(of(app2, stagingTest));
tester.jobCompletion(stagingTest).application(app3).error(JobError.outOfCapacity).submit();
assertEquals(jobs, tester.buildService().jobs());
tester.readyJobTrigger().maintain();
- jobs.add(new BuildService.BuildJob(app2.deploymentJobs().projectId().getAsLong(), stagingTest.jobName()));
+ jobs.add(of(app2, stagingTest));
assertEquals(jobs, tester.buildService().jobs());
tester.readyJobTrigger().maintain();
- jobs.add(new BuildService.BuildJob(app1.deploymentJobs().projectId().getAsLong(), stagingTest.jobName()));
+ jobs.add(of(app1, stagingTest));
assertEquals(jobs, tester.buildService().jobs());
// Finish deployment for apps 2 and 3, then release a new version, leaving only app1 with an application upgrade.
@@ -486,21 +487,21 @@ public class ControllerTest {
// Let the last system test job start, then remove the ones for apps 1 and 2, and let app3 fail with outOfCapacity again.
tester.readyJobTrigger().maintain();
- tester.buildService().removeJob(app1.deploymentJobs().projectId().getAsLong(), systemTest.jobName());
- tester.buildService().removeJob(app2.deploymentJobs().projectId().getAsLong(), systemTest.jobName());
+ tester.buildService().remove(of(app1, systemTest));
+ tester.buildService().remove(of(app2, systemTest));
tester.clock().advance(Duration.ofHours(13));
jobs.clear();
- jobs.add(new BuildService.BuildJob(app1.deploymentJobs().projectId().getAsLong(), stagingTest.jobName()));
- jobs.add(new BuildService.BuildJob(app3.deploymentJobs().projectId().getAsLong(), systemTest.jobName()));
+ jobs.add(of(app1, stagingTest));
+ jobs.add(of(app3, systemTest));
tester.jobCompletion(systemTest).application(app3).error(JobError.outOfCapacity).submit();
assertEquals(jobs, tester.buildService().jobs());
tester.readyJobTrigger().maintain();
- jobs.add(new BuildService.BuildJob(app1.deploymentJobs().projectId().getAsLong(), systemTest.jobName()));
+ jobs.add(of(app1, systemTest));
assertEquals(jobs, tester.buildService().jobs());
tester.readyJobTrigger().maintain();
- jobs.add(new BuildService.BuildJob(app2.deploymentJobs().projectId().getAsLong(), systemTest.jobName()));
+ jobs.add(of(app2, systemTest));
assertEquals(jobs, tester.buildService().jobs());
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTester.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTester.java
index b4bc8140aca..614310d9221 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTester.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTester.java
@@ -30,6 +30,7 @@ import com.yahoo.vespa.hosted.controller.api.integration.organization.MockOrgani
import com.yahoo.vespa.hosted.controller.api.integration.routing.MemoryGlobalRoutingService;
import com.yahoo.vespa.hosted.controller.api.integration.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.mock.AthenzClientFactoryMock;
import com.yahoo.vespa.hosted.controller.athenz.mock.AthenzDbMock;
import com.yahoo.vespa.hosted.controller.api.integration.stubs.MockBuildService;
@@ -122,6 +123,10 @@ public final class ControllerTester {
});
}
+ public static BuildService.BuildJob buildJob(Application application, DeploymentJobs.JobType jobType) {
+ return BuildService.BuildJob.of(application.id(), application.deploymentJobs().projectId().getAsLong(), jobType.jobName());
+ }
+
public Controller controller() { return controller; }
public CuratorDb curator() { return curator; }
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTester.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTester.java
index d5154c95cdc..ba0694e242b 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTester.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTester.java
@@ -272,10 +272,10 @@ public class DeploymentTester {
}
private void notifyJobCompletion(DeploymentJobs.JobReport report) {
- if (report.jobType() != JobType.component && ! buildService().removeJob(report.projectId(), report.jobType().jobName()))
+ if (report.jobType() != JobType.component && !buildService().remove(report.buildJob()))
throw new IllegalArgumentException(report.jobType() + " is not running for " + report.applicationId());
assertFalse("Unexpected entry '" + report.jobType() + "@" + report.projectId() + " in: " + buildService().jobs(),
- buildService().removeJob(report.projectId(), report.jobType().jobName()));
+ buildService().remove(report.buildJob()));
clock().advance(Duration.ofMillis(1));
applications().deploymentTrigger().notifyOfCompletion(report);
@@ -292,11 +292,7 @@ public class DeploymentTester {
}
public void assertRunning(ApplicationId id, JobType jobType) {
- assertRunning(application(id).deploymentJobs().projectId().getAsLong(), jobType);
- }
-
- public void assertRunning(long projectId, JobType jobType) {
- assertTrue(buildService().jobs().contains(new BuildService.BuildJob(projectId, jobType.jobName())));
+ assertTrue(buildService().jobs().contains(BuildService.BuildJob.of(id, application(id).deploymentJobs().projectId().getAsLong(), jobType.jobName())));
}
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTriggerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTriggerTest.java
index 63bbc3a206e..76e3b50748f 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTriggerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTriggerTest.java
@@ -7,7 +7,6 @@ import com.yahoo.config.provision.TenantName;
import com.yahoo.test.ManualClock;
import com.yahoo.vespa.hosted.controller.Application;
import com.yahoo.vespa.hosted.controller.ControllerTester;
-import com.yahoo.vespa.hosted.controller.api.integration.BuildService;
import com.yahoo.vespa.hosted.controller.api.integration.stubs.MockBuildService;
import com.yahoo.vespa.hosted.controller.api.integration.zone.ZoneId;
import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
@@ -324,7 +323,7 @@ public class DeploymentTriggerTest {
tester.clock().advance(Duration.ofHours(2)); // ---------------- Exit block window: 20:30
tester.deploymentTrigger().triggerReadyJobs(); // Schedules the blocked production job(s)
- assertEquals(singletonList(new BuildService.BuildJob(app.deploymentJobs().projectId().getAsLong(), "production-us-west-1")),
+ assertEquals(singletonList(ControllerTester.buildJob(app.deploymentJobs().projectId().getAsLong(), "production-us-west-1")),
tester.buildService().jobs());
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/FailureRedeployerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/FailureRedeployerTest.java
index d28a70eb838..5dd2eab72c9 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/FailureRedeployerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/FailureRedeployerTest.java
@@ -7,7 +7,7 @@ import com.yahoo.config.provision.SystemName;
import com.yahoo.slime.Slime;
import com.yahoo.vespa.config.SlimeUtils;
import com.yahoo.vespa.hosted.controller.Application;
-import com.yahoo.vespa.hosted.controller.api.integration.BuildService;
+import com.yahoo.vespa.hosted.controller.ControllerTester;
import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.application.DeploymentJobs;
import com.yahoo.vespa.hosted.controller.deployment.ApplicationPackageBuilder;
@@ -85,7 +85,7 @@ public class FailureRedeployerTest {
// Production job fails again, and is retried
tester.deployAndNotify(app, applicationPackage, false, DeploymentJobs.JobType.productionUsEast3);
tester.readyJobTrigger().maintain();
- assertEquals("Job is retried", Collections.singletonList(new BuildService.BuildJob(app.deploymentJobs().projectId().getAsLong(), productionUsEast3.jobName())), tester.buildService().jobs());
+ assertEquals("Job is retried", Collections.singletonList(ControllerTester.buildJob(app, productionUsEast3)), tester.buildService().jobs());
// Production job finally succeeds
tester.deployAndNotify(app, applicationPackage, true, DeploymentJobs.JobType.productionUsEast3);
@@ -125,7 +125,7 @@ public class FailureRedeployerTest {
tester.updateVersionStatus(version);
assertEquals(version, tester.controller().versionStatus().systemVersion().get().versionNumber());
- tester.buildService().removeJob((long) 1, systemTest.jobName());
+ tester.buildService().remove(ControllerTester.buildJob(app, systemTest));
tester.upgrader().maintain();
tester.readyJobTrigger().maintain();
assertEquals("Application has pending upgrade to " + version, version, tester.application(app.id()).change().platform().get());
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/UpgraderTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/UpgraderTest.java
index 424141137b0..db95a15cff4 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/UpgraderTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/UpgraderTest.java
@@ -123,8 +123,8 @@ public class UpgraderTest {
tester.updateVersionStatus(version);
assertEquals(version, tester.controller().versionStatus().systemVersion().get().versionNumber());
tester.upgrader().maintain();
- tester.buildService().removeJob(canary0.deploymentJobs().projectId().getAsLong(), stagingTest.jobName());
- tester.buildService().removeJob(canary1.deploymentJobs().projectId().getAsLong(), systemTest.jobName());
+ tester.buildService().remove(ControllerTester.buildJob(canary0, stagingTest));
+ tester.buildService().remove(ControllerTester.buildJob(canary1, systemTest));
tester.readyJobTrigger().maintain();
tester.readyJobTrigger().maintain();
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 5184eeacc33..b0f2d8b252c 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
@@ -40,6 +40,8 @@ import java.io.IOException;
import java.time.Duration;
import java.util.Optional;
+import static com.yahoo.vespa.hosted.controller.api.integration.BuildService.BuildJob.of;
+import static com.yahoo.vespa.hosted.controller.application.DeploymentJobs.JobType.component;
import static org.junit.Assert.assertFalse;
/**
@@ -125,10 +127,10 @@ public class ContainerControllerTester {
private void notifyJobCompletion(DeploymentJobs.JobReport report) {
MockBuildService buildService = (MockBuildService) containerTester.container().components().getComponent(MockBuildService.class.getName());
- if (report.jobType() != DeploymentJobs.JobType.component && ! buildService.removeJob(report.projectId(), report.jobType().jobName()))
+ if (report.jobType() != component && ! buildService.remove(report.buildJob()))
throw new IllegalArgumentException(report.jobType() + " is not running for " + report.applicationId());
assertFalse("Unexpected entry '" + report.jobType() + "@" + report.projectId() + " in: " + buildService.jobs(),
- buildService.removeJob(report.projectId(), report.jobType().jobName()));
+ buildService.remove(report.buildJob()));
try {
Thread.sleep(1);
} catch (InterruptedException e) {