diff options
author | Jon Marius Venstad <jvenstad@yahoo-inc.com> | 2018-04-19 11:14:18 +0200 |
---|---|---|
committer | Jon Marius Venstad <jvenstad@yahoo-inc.com> | 2018-04-20 14:30:20 +0200 |
commit | 4d2f0f8073b051acff0e863d1586da7f201933dd (patch) | |
tree | 66ecae307061275f3253da25f162955f28438761 | |
parent | a504e8980d6796c6ee870438f099f8048da4dcfc (diff) |
BuildJob cleanup
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) { |