JustBeforeEach(func() {
		gc = cleaner.NewOvenCleaner(
			retainer,
			fakeThreshold,
		)
	})

	Context("when the threshold is exceeded", func() {
		BeforeEach(func() {
			fakeThreshold.ExceededReturns(true)
		})

		Describe("GC", func() {
			Context("when there is a single leaf", func() {
				BeforeEach(func() {
					fakeCake.GetAllLeavesReturns([]layercake.ID{layercake.DockerImageID("child")}, nil)
					size[layercake.DockerImageID("child2")] = 2048
				})

				It("should not remove it when it is used by a container", func() {
					fakeCake.GetReturns(&image.Image{Container: "used-by-me"}, nil)
					Expect(gc.GC(logger, fakeCake)).To(Succeed())
					Expect(fakeCake.RemoveCallCount()).To(Equal(0))
				})

				Context("when the layer has no parents", func() {
					BeforeEach(func() {
						fakeCake.GetReturns(&image.Image{}, nil)
					})

					It("removes the layer", func() {
Beispiel #2
0
				Expect(err).NotTo(HaveOccurred())
				Expect(cake.IsLeafCallCount()).To(Equal(1))
				Expect(cake.IsLeafArgsForCall(0)).To(Equal(parentID))
			})
		})
	})

	Describe("GetAllLeaves", func() {
		Context("when there are no cloned layers", func() {
			var (
				leaves []layercake.ID
				err    error
			)

			JustBeforeEach(func() {
				cake.GetAllLeavesReturns([]layercake.ID{layercake.DockerImageID("1"), layercake.DockerImageID("2")}, nil)
				leaves, err = aufsCake.GetAllLeaves()
				Expect(err).NotTo(HaveOccurred())
			})

			It("should delegate to the cake", func() {
				Expect(cake.GetAllLeavesCallCount()).To(Equal(1))
			})

			It("should get all leaves", func() {
				Expect(leaves).To(HaveLen(2))
				Expect(leaves[0]).To(Equal(layercake.DockerImageID("1")))
				Expect(leaves[1]).To(Equal(layercake.DockerImageID("2")))
			})

		})