Example #1
0
	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))
			})
		})
	})

	Describe("Getting the current disk limits", func() {
			new(fake_network_statisticser.FakeNetworkStatisticser),
			fakeOomWatcher,
			lagertest.NewTestLogger("linux-container-limits-test"),
		)
	})

	It("sets the container ID", func() {
		Expect(container.ID()).To(Equal("some-id"))
	})

	It("sets the container handle", func() {
		Expect(container.Handle()).To(Equal("some-handle"))
	})

	It("sets the container subvolume path", func() {
		Expect(container.RootFSPath()).To(Equal("some-volume-path"))
	})

	It("sets the container grace time", func() {
		Expect(container.GraceTime()).To(Equal(1 * time.Second))
	})

	Describe("Starting", func() {
		It("executes the container's start.sh with the correct environment", func() {
			err := container.Start()
			Expect(err).ToNot(HaveOccurred())

			Expect(fakeRunner).To(HaveExecutedSerially(
				fake_command_runner.CommandSpec{
					Path: containerDir + "/start.sh",
					Env: []string{