It("sets the ttl of each volume used in a one-off build to at least 24 hours", 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.GetVolumesForOneOffBuildImageResourcesCallCount()).To(Equal(1)) Expect(fakeBaggageCollectorDB.GetVolumesCallCount()).To(Equal(1)) Expect(fakeWorkerClient.GetWorkerCallCount()).To(Equal(2)) Expect(worker1.VolumeManagerCallCount()).To(Equal(0)) Expect(worker2.VolumeManagerCallCount()).To(Equal(1)) Expect(baggageClaimClient2.LookupVolumeCallCount()).To(Equal(1)) _, handle := baggageClaimClient2.LookupVolumeArgsForCall(0) Expect(handle).To(Equal("volume2")) Expect(volume2.ReleaseCallCount()).To(Equal(1)) Expect(volume2.ReleaseArgsForCall(0)).To(Equal(worker.FinalTTL(expectedLatestVersionTTL))) Expect(fakeBaggageCollectorDB.SetVolumeTTLCallCount()).To(Equal(1)) handle, ttl := fakeBaggageCollectorDB.SetVolumeTTLArgsForCall(0) Expect(handle).To(Equal("volume2")) Expect(ttl).To(Equal(expectedLatestVersionTTL)) }) })
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))) Expect(workerCBaggageClaimClient.LookupVolumeCallCount()).To(Equal(1)) _, handle = workerCBaggageClaimClient.LookupVolumeArgsForCall(0) Expect(handle).To(Equal("crossed-wires-volume-handle")) Expect(crossedWiresVolume.ReleaseCallCount()).To(Equal(1)) Expect(crossedWiresVolume.ReleaseArgsForCall(0)).To(Equal(worker.FinalTTL(expectedOldVersionTTL))) Expect(fakeBaggageCollectorDB.SetVolumeTTLCallCount()).To(Equal(2)) type setVolumeTTLArgs struct { Handle string TTL time.Duration
fakeBaggageCollectorDB.GetVolumesReturns(savedVolumes, nil) fakeBaggageClaimClient.LookupVolumeStub = func(_ lager.Logger, handle string) (baggageclaim.Volume, bool, error) { vol, ok := fakeVolumes[handle] Expect(ok).To(BeTrue()) return vol, true, nil } err = baggageCollector.Collect() Expect(err).NotTo(HaveOccurred()) Expect(fakeBaggageClaimClient.LookupVolumeCallCount()).To(Equal(len(example.expectedTTLs))) var actualHandles []string for i := 0; i < fakeBaggageClaimClient.LookupVolumeCallCount(); i++ { _, actualHandle := fakeBaggageClaimClient.LookupVolumeArgsForCall(i) actualHandles = append(actualHandles, actualHandle) } var expectedHandles []string for handle, expectedTTL := range example.expectedTTLs { Expect(fakeVolumes[handle].ReleaseCallCount()).To(Equal(1)) actualTTL := fakeVolumes[handle].ReleaseArgsForCall(0) Expect(actualTTL).To(Equal(worker.FinalTTL(expectedTTL))) expectedHandles = append(expectedHandles, handle) } Expect(actualHandles).To(ConsistOf(expectedHandles)) Expect(fakeBaggageCollectorDB.SetVolumeTTLCallCount()).To(Equal(len(example.expectedTTLs))) actualHandles = nil