Context("when getting the job succeeds", func() { BeforeEach(func() { pipelineDB.GetJobReturns(db.SavedJob{ ID: 1, Paused: true, PipelineName: "some-pipeline", Job: db.Job{ Name: "job-1", }, }, nil) }) It("fetches by job", func() { Expect(pipelineDB.GetJobFinishedAndNextBuildCallCount()).To(Equal(1)) jobName := pipelineDB.GetJobFinishedAndNextBuildArgsForCall(0) Expect(jobName).To(Equal("some-job")) }) It("returns 200 OK", func() { Expect(response.StatusCode).To(Equal(http.StatusOK)) }) It("returns the job's name, url, if it's paused, and any running and finished builds", func() { body, err := ioutil.ReadAll(response.Body) Expect(err).NotTo(HaveOccurred()) Expect(body).To(MatchJSON(`{ "name": "some-job", "paused": true, "url": "/pipelines/some-pipeline/jobs/some-job",
ResourceHash: "docker:qwertyuiop", }, }, }, } fakeBaggageCollectorDB.GetVolumesReturns(savedVolumes, nil) }) It("preserves only the image versions used by the latest finished build of each job", func() { err := baggageCollector.Collect() Expect(err).NotTo(HaveOccurred()) Expect(fakeBaggageCollectorDB.GetAllPipelinesCallCount()).To(Equal(1)) Expect(fakePipelineDBFactory.BuildCallCount()).To(Equal(1)) Expect(fakePipelineDBFactory.BuildArgsForCall(0)).To(Equal(savedPipeline)) Expect(fakePipelineDB.GetJobFinishedAndNextBuildCallCount()).To(Equal(1)) Expect(fakePipelineDB.GetJobFinishedAndNextBuildArgsForCall(0)).To(Equal("my-precious-job")) Expect(fakeBaggageCollectorDB.GetImageVolumeIdentifiersByBuildIDCallCount()).To(Equal(1)) Expect(fakeBaggageCollectorDB.GetImageVolumeIdentifiersByBuildIDArgsForCall(0)).To(Equal(2)) Expect(fakeBaggageCollectorDB.GetVolumesCallCount()).To(Equal(1)) Expect(fakeWorkerClient.GetWorkerCallCount()).To(Equal(3)) Expect(workerA.VolumeManagerCallCount()).To(Equal(0)) Expect(workerB.VolumeManagerCallCount()).To(Equal(1)) Expect(workerC.VolumeManagerCallCount()).To(Equal(1)) var handle string Expect(workerBBaggageClaimClient.LookupVolumeCallCount()).To(Equal(1)) _, handle = workerBBaggageClaimClient.LookupVolumeArgsForCall(0) Expect(handle).To(Equal("docker-volume-handle")) Expect(dockerVolume.ReleaseCallCount()).To(Equal(1)) Expect(dockerVolume.ReleaseArgsForCall(0)).To(Equal(worker.FinalTTL(expectedLatestVersionTTL)))