示例#1
0
文件: worker_test.go 项目: ACPK/atc
					BeforeEach(func() {
						handle1Volume = new(bfakes.FakeVolume)
						handle2Volume = new(bfakes.FakeVolume)
						expectedHandle1Volume = new(wfakes.FakeVolume)
						expectedHandle2Volume = new(wfakes.FakeVolume)

						fakeContainer.PropertiesReturns(garden.Properties{
							"concourse:volumes":       `["handle-1","handle-2"]`,
							"concourse:volume-mounts": `{"handle-1":"/handle-1/path","handle-2":"/handle-2/path"}`,
						}, nil)

						fakeBaggageclaimClient.LookupVolumeStub = func(logger lager.Logger, handle string) (baggageclaim.Volume, bool, error) {
							if handle == "handle-1" {
								return handle1Volume, true, nil
							} else if handle == "handle-2" {
								return handle2Volume, true, nil
							} else {
								panic("unknown handle: " + handle)
							}
						}

						fakeVolumeFactory.BuildStub = func(vol baggageclaim.Volume) (Volume, error) {
							if vol == handle1Volume {
								return expectedHandle1Volume, nil
							} else if vol == handle2Volume {
								return expectedHandle2Volume, nil
							} else {
								panic("unknown volume: " + vol.Handle())
							}
						}
					})
			fakePipelineDB *dbfakes.FakePipelineDB
		)

		BeforeEach(func() {
			fakeWorkerClient = new(wfakes.FakeClient)

			workerA = new(wfakes.FakeWorker)
			workerABaggageClaimClient = new(bcfakes.FakeClient)
			workerA.VolumeManagerReturns(workerABaggageClaimClient, true)
			volumeA1 = new(bcfakes.FakeVolume)
			volumeA2 = new(bcfakes.FakeVolume)
			workerABaggageClaimClient.LookupVolumeStub = func(logger lager.Logger, handle string) (baggageclaim.Volume, bool, error) {
				switch handle {
				case "volume-a1":
					return volumeA1, true, nil
				case "volume-a2":
					return volumeA2, true, nil
				default:
					panic("unknown volume handle")
				}
			}

			workerB = new(wfakes.FakeWorker)
			workerBBaggageClaimClient = new(bcfakes.FakeClient)
			workerB.VolumeManagerReturns(workerBBaggageClaimClient, true)
			volumeB1 = new(bcfakes.FakeVolume)
			workerBBaggageClaimClient.LookupVolumeReturns(volumeB1, true, nil)

			fakeWorkerClient.GetWorkerStub = func(name string) (worker.Worker, error) {
				switch name {
				case "worker-a":
					return workerA, nil
				fakeVolumes := map[string]*bcfakes.FakeVolume{}

				var savedVolumes []db.SavedVolume
				for _, volume := range example.volumeData {
					savedVolumes = append(savedVolumes, db.SavedVolume{
						Volume: volume,
					})
					fakeVolumes[volume.Handle] = new(bcfakes.FakeVolume)
				}

				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 {