new(networkFakes.FakeFilter), new(fake_iptables_manager.FakeIPTablesManager), new(fake_network_statisticser.FakeNetworkStatisticser), fakeOomWatcher, lagertest.NewTestLogger("linux-container-limits-test"), ) }) Describe("Limiting bandwidth", func() { limits := garden.BandwidthLimits{ RateInBytesPerSecond: 128, BurstRateInBytesPerSecond: 256, } It("sets the limit via the bandwidth manager with the new limits", func() { err := container.LimitBandwidth(limits) Expect(err).ToNot(HaveOccurred()) Expect(fakeBandwidthManager.EnforcedLimits).To(ContainElement(limits)) }) Context("when setting the limit fails", func() { disaster := errors.New("oh no!") BeforeEach(func() { fakeBandwidthManager.SetLimitsError = disaster }) It("returns the error", func() { err := container.LimitBandwidth(limits) Expect(err).To(Equal(disaster))
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()) var snapshot linux_backend.LinuxContainerSpec err = json.NewDecoder(out).Decode(&snapshot)