Exemple #1
0
				})

				Context("when the worker supports volume management", func() {
					var fakeBaggageclaimClient *bfakes.FakeClient

					BeforeEach(func() {
						fakeBaggageclaimClient = new(bfakes.FakeClient)
						satisfyingWorker.VolumeManagerReturns(fakeBaggageclaimClient, true)
					})

					Context("when the cache is already present", func() {
						var foundVolume *bfakes.FakeVolume

						BeforeEach(func() {
							foundVolume = new(bfakes.FakeVolume)
							foundVolume.HandleReturns("found-volume-handle")
							cacheIdentifier.FindOnReturns(foundVolume, true, nil)

							cacheIdentifier.ResourceVersionReturns(atc.Version{"some": "theversion"})
							cacheIdentifier.ResourceHashReturns("hash")
							satisfyingWorker.NameReturns("myworker")
							foundVolume.ExpirationReturns(time.Hour, time.Now(), nil)
						})

						It("does not error and returns a resource", func() {
							Expect(initErr).NotTo(HaveOccurred())
							Expect(initResource).NotTo(BeNil())
						})

						It("chose the worker satisfying the resource type and tags", func() {
							Expect(workerClient.SatisfyingArgsForCall(0)).To(Equal(worker.WorkerSpec{
Exemple #2
0
		volumeFactory = worker.NewVolumeFactory(fakeDB, fakeClock)
	})

	Context("VolumeFactory", func() {
		Describe("Build", func() {
			It("releases the volume it was given", func() {
				_, err := volumeFactory.Build(logger, fakeVolume)
				Expect(err).ToNot(HaveOccurred())
				Expect(fakeVolume.ReleaseCallCount()).To(Equal(1))
				actualTTL := fakeVolume.ReleaseArgsForCall(0)
				Expect(actualTTL).To(BeNil())
			})

			It("embeds the original volume in the wrapped volume", func() {
				fakeVolume.HandleReturns("some-handle")
				vol, err := volumeFactory.Build(logger, fakeVolume)
				Expect(err).ToNot(HaveOccurred())
				Expect(vol.Handle()).To(Equal("some-handle"))
			})
		})
	})

	Context("Volume", func() {
		var expectedTTL time.Duration
		var expectedTTL2 time.Duration

		BeforeEach(func() {
			expectedTTL = 10 * time.Second
			expectedTTL2 = 5 * time.Second
			fakeVolume.HandleReturns("some-handle")
	Describe("FindOn", func() {
		var foundVolume baggageclaim.Volume
		var found bool
		var findErr error

		JustBeforeEach(func() {
			foundVolume, found, findErr = cacheIdentifier.FindOn(logger, fakeBaggageclaimClient)
		})

		Context("when one cache volume is present", func() {
			var workerVolume *bfakes.FakeVolume

			BeforeEach(func() {
				workerVolume = new(bfakes.FakeVolume)
				workerVolume.HandleReturns("found-volume-handle")
				fakeBaggageclaimClient.ListVolumesReturns([]baggageclaim.Volume{workerVolume}, nil)
			})

			It("returns the volume and true", func() {
				Expect(foundVolume).To(Equal(workerVolume))
				Expect(found).To(BeTrue())
			})

			It("found it by querying for the correct properties", func() {
				_, spec := fakeBaggageclaimClient.ListVolumesArgsForCall(0)
				Expect(spec).To(Equal(baggageclaim.VolumeProperties{
					"resource-type":    "some-resource-type",
					"resource-version": `{"some":"version"}`,
					"resource-source":  "968e27f71617a029e58a09fb53895f1e1875b51bdaa11293ddc2cb335960875cb42c19ae8bc696caec88d55221f33c2bcc3278a7d15e8d13f23782d1a05564f1",
					"resource-params":  "fe7d9dbc2ac75030c3e8c88e54a33676c38d8d9d2876700bc01d4961caf898e7cbe8e738232e86afcf6a5f64a9527c458a130277b08d72fb339962968d0d0967",
Exemple #4
0
								Env:        []string{"a=1", "b=2"},
								Properties: garden.Properties{},
							}))

						})
					})

					Context("when a volume mount is provided", func() {
						var (
							volume1 *bfakes.FakeVolume
							volume2 *bfakes.FakeVolume
						)

						BeforeEach(func() {
							volume1 = new(bfakes.FakeVolume)
							volume1.HandleReturns("some-volume1")
							volume1.PathReturns("/some/src/path1")

							volume2 = new(bfakes.FakeVolume)
							volume2.HandleReturns("some-volume2")
							volume2.PathReturns("/some/src/path2")
						})

						Context("when copy-on-write is specified", func() {
							var (
								cowVolume1 *bfakes.FakeVolume
								cowVolume2 *bfakes.FakeVolume
							)

							BeforeEach(func() {
								spec = ResourceTypeContainerSpec{