logger lager.Logger ) BeforeEach(func() { logger = lagertest.NewTestLogger("test") fakeCake = new(fake_cake.FakeCake) fakeCake.GetReturns(nil, errors.New("no such image")) baseSizer = quota_manager.NewAUFSBaseSizer(fakeCake) }) It("asks for the size of the layer based on the base name of the rootfs path", func() { baseSizer.BaseSize(logger, "/some/path/to/54321") Expect(fakeCake.GetCallCount()).To(Equal(1)) Expect(fakeCake.GetArgsForCall(0)).To(Equal(layercake.DockerImageID("54321"))) }) Context("when the layer doesn't exist", func() { It("returns an error", func() { _, err := baseSizer.BaseSize(logger, "/i/dont/exist") Expect(err).To(HaveOccurred()) }) }) Context("when the layer exists", func() { Context("and has no parents", func() { It("returns the size of the layer", func() { fakeCake.GetReturns(&image.Image{ Size: 1234, }, nil)
Describe("Copying", func() { Context("when parent layer has a file", func() { BeforeEach(func() { Expect(ioutil.WriteFile(filepath.Join(parentDir, "somefile"), []byte("somecontents"), 0755)).To(Succeed()) }) It("should copy the parent layer to the child layer", func() { Expect(aufsCake.Create(namespacedChildID, parentID, "")).To(Succeed()) Expect(cake.CreateCallCount()).To(Equal(1)) layerID, layerParentID, _ := cake.CreateArgsForCall(0) Expect(layerID).To(Equal(namespacedChildID)) Expect(layerParentID).To(Equal(layercake.DockerImageID(""))) Expect(cake.GetCallCount()).To(Equal(1)) Expect(cake.GetArgsForCall(0)).To(Equal(namespacedChildID)) Expect(cake.PathCallCount()).To(Equal(2)) Expect(cake.PathArgsForCall(0)).To(Equal(parentID)) Expect(cake.PathArgsForCall(1)).To(Equal(namespacedChildID)) _, err := os.Stat(filepath.Join(namespacedChildDir, "somefile")) Expect(err).ToNot(HaveOccurred()) }) }) Context("when parent layer has a directory", func() { var subDirectory string BeforeEach(func() { subDirectory = filepath.Join(parentDir, "sub-dir")