Expect(err.Error()).To(HaveSuffix("invalid syntax")) }) }) }) Describe("Limiting disk", func() { limits := garden.DiskLimits{ InodeSoft: 13, InodeHard: 14, ByteSoft: 23, ByteHard: 24, } It("sets the quota via the quota manager with the container id", func() { err := container.LimitDisk(limits) Expect(err).ToNot(HaveOccurred()) Expect(fakeQuotaManager.SetLimitsCallCount()).To(Equal(1)) _, path, receivedLimits := fakeQuotaManager.SetLimitsArgsForCall(0) Expect(path).To(Equal(container.RootFSPath())) Expect(receivedLimits).To(Equal(limits)) }) Context("when setting the quota fails", func() { It("returns the error", func() { disaster := errors.New("oh no!") fakeQuotaManager.SetLimitsReturns(disaster) err := container.LimitDisk(limits) Expect(err).To(Equal(disaster))
}) Context("with limits set", func() { JustBeforeEach(func() { fakeOomWatcher.WatchStub = func(onOom func()) error { onOom() return nil } err := container.LimitMemory(memoryLimits) Expect(err).ToNot(HaveOccurred()) Eventually(container.Events).Should(ContainElement("out of memory")) Eventually(container.State).Should(Equal(linux_backend.StateStopped)) err = container.LimitDisk(diskLimits) Expect(err).ToNot(HaveOccurred()) err = container.LimitBandwidth(bandwidthLimits) Expect(err).ToNot(HaveOccurred()) err = container.LimitCPU(cpuLimits) Expect(err).ToNot(HaveOccurred()) }) It("saves them", func() { out := new(bytes.Buffer) err := container.Snapshot(out) Expect(err).ToNot(HaveOccurred())