Esempio n. 1
0
		)
	})

	Describe("Running", func() {
		It("runs the /bin/bash via wsh with the given script as the input, and rlimits in env", func() {
			_, err := container.Run(garden.ProcessSpec{
				User: "******",
				Path: "/some/script",
				Args: []string{"arg1", "arg2"},
				Limits: garden.ResourceLimits{
					As:         uint64ptr(1),
					Core:       uint64ptr(2),
					Cpu:        uint64ptr(3),
					Data:       uint64ptr(4),
					Fsize:      uint64ptr(5),
					Locks:      uint64ptr(6),
					Memlock:    uint64ptr(7),
					Msgqueue:   uint64ptr(8),
					Nice:       uint64ptr(9),
					Nofile:     uint64ptr(10),
					Nproc:      uint64ptr(11),
					Rss:        uint64ptr(12),
					Rtprio:     uint64ptr(13),
					Sigpending: uint64ptr(14),
					Stack:      uint64ptr(15),
				},
			}, garden.ProcessIO{})

			Expect(err).ToNot(HaveOccurred())

			Expect(fakeProcessTracker.RunCallCount()).To(Equal(1))
			_, ranCmd, _, _, _ := fakeProcessTracker.RunArgsForCall(0)
				Processes: []linux_backend.ActiveProcess{
					{
						ID:  0,
						TTY: false,
					},
					{
						ID:  5,
						TTY: true,
					},
				},
			})
			Expect(err).ToNot(HaveOccurred())

			_, err = container.Run(garden.ProcessSpec{
				User: "******",
				Path: "/some/script",
			}, garden.ProcessIO{})
			Expect(err).ToNot(HaveOccurred())

			nextGuid, _, _, _, _ := fakeProcessTracker.RunArgsForCall(0)
			nextId, _ := strconv.Atoi(nextGuid)

			Expect(nextId).To(BeNumerically(">", 5))
		})

		It("restores the correct process signaller", func() {
			Expect(container.Restore(linux_backend.LinuxContainerSpec{
				State:     "active",
				Processes: []linux_backend.ActiveProcess{{ID: 0, TTY: false}},
				Resources: containerResources,
			})).To(Succeed())