type baggageCollectionExample struct { pipelineData map[string][]resourceConfigAndVersions volumeData []db.Volume expectedTTLs map[string]time.Duration } DescribeTable("baggage collection", func(examples ...baggageCollectionExample) { var err error for _, example := range examples { fakeWorkerClient = new(wfakes.FakeClient) fakeWorker = new(wfakes.FakeWorker) fakeBaggageClaimClient = new(bcfakes.FakeClient) fakeWorkerClient.GetWorkerReturns(fakeWorker, nil) fakeWorker.VolumeManagerReturns(fakeBaggageClaimClient, true) baggageCollectorLogger := lagertest.NewTestLogger("test") fakeBaggageCollectorDB = new(fakes.FakeBaggageCollectorDB) fakePipelineDBFactory = new(dbfakes.FakePipelineDBFactory) baggageCollector = lostandfound.NewBaggageCollector( baggageCollectorLogger, fakeWorkerClient, fakeBaggageCollectorDB, fakePipelineDBFactory, expectedOldResourceGracePeriod, expectedOneOffTTL, )
VolumeIdentifier: db.VolumeIdentifier{ ResourceVersion: atc.Version{"some": "newest-version"}, ResourceHash: hashkey, }, }, ID: 124, ExpiresIn: 0, } returnedVolumes = append(returnedVolumes, newestReturnedSavedVolume) fakeBaggageCollectorDB.GetAllPipelinesReturns([]db.SavedPipeline{fakeSavedPipeline}, nil) fakePipelineDBFactory.BuildReturns(&fakePipelineDB) fakePipelineDB.GetLatestEnabledVersionedResourceReturns(fakeSavedVersionedResource, true, nil) fakeWorkerClient.GetWorkerReturns(nil, errors.New("no-worker-found")) }) It("should remove the volume from the database", func() { err := baggageCollector.Collect() Expect(err).NotTo(HaveOccurred()) Expect(fakeBaggageCollectorDB.ReapVolumeCallCount()).To(Equal(2)) Expect(fakeBaggageCollectorDB.ReapVolumeArgsForCall(0)).To(Equal(returnedSavedVolume.Handle)) Expect(fakeBaggageCollectorDB.ReapVolumeArgsForCall(1)).To(Equal(newestReturnedSavedVolume.Handle)) }) }) Context("when volume no longer exists", func() { Context("when the worker is no longer around", func() { BeforeEach(func() {