fake_command_runner.CommandSpec{
						Path: containerDir + "/stop.sh",
					},
				))
			})

			It("registers an 'out of memory' event", func() {
				limits := garden.MemoryLimits{
					LimitInBytes: 102400,
				}

				err := container.LimitMemory(limits)
				Expect(err).ToNot(HaveOccurred())

				Eventually(func() []string {
					return container.Events()
				}).Should(ContainElement("out of memory"))
			})
		})

		Context("when setting memory.memsw.limit_in_bytes fails", func() {
			disaster := errors.New("oh no!")

			JustBeforeEach(func() {
				fakeCgroups.WhenSetting("memory", "memory.memsw.limit_in_bytes", func() error {
					return disaster
				})
			})

			It("does not fail", func() {
				err := container.LimitMemory(garden.MemoryLimits{
			})
		})
	})

	Describe("Restoring", func() {
		It("sets the container's state and events", func() {
			err := container.Restore(linux_backend.LinuxContainerSpec{
				State:     "active",
				Events:    []string{"out of memory", "foo"},
				Resources: containerResources,
			})
			Expect(err).ToNot(HaveOccurred())

			Expect(container.State()).To(Equal(linux_backend.State("active")))
			Expect(container.Events()).To(Equal([]string{
				"out of memory",
				"foo",
			}))

		})

		It("restores process state", func() {
			err := container.Restore(linux_backend.LinuxContainerSpec{
				State:     "active",
				Events:    []string{},
				Resources: containerResources,

				Processes: []linux_backend.ActiveProcess{
					{
						ID:  0,