Esempio n. 1
0
					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)
			Expect(ranCmd.Path).To(Equal(containerDir + "/bin/wsh"))

			Expect(ranCmd.Args).To(Equal([]string{
				containerDir + "/bin/wsh",
				"--socket", containerDir + "/run/wshd.sock",
				"--user", "alice",
				"--env", "env1=env1Value",
				"--env", "env2=env2Value",
				"/some/script",
				"arg1",
				"arg2",
			}))

			Expect(ranCmd.Env).To(Equal([]string{
				"RLIMIT_AS=1",
Esempio n. 2
0
				return exec.Command("dosh", append([]string{path}, args...)...)
			}

			requestedIO := garden.ProcessIO{Stdout: gbytes.NewBuffer()}
			requestedTTY := &garden.TTYSpec{
				WindowSize: &garden.WindowSize{1, 2},
			}

			container.Run(garden.ProcessSpec{
				Path: "some-path",
				Args: []string{"an-arg", "another-arg"},
				TTY:  requestedTTY,
			}, requestedIO)

			Expect(fakeProcessTracker.RunCallCount()).To(Equal(1))
			_, cmd, io, tty, _ := fakeProcessTracker.RunArgsForCall(0)

			Expect(cmd.Path).To(Equal("dosh"))
			Expect(cmd.Args).To(Equal([]string{"dosh", "some-path", "an-arg", "another-arg"}))
			Expect(io).To(Equal(requestedIO))
			Expect(tty).To(Equal(requestedTTY))
		})

		PIt("requests sequential process ids", func() {})
	})

	Describe("Attach", func() {
		It("attaches to the requested process", func() {
			requestedIO := garden.ProcessIO{Stdout: gbytes.NewBuffer()}
			container.Attach(33, requestedIO)
					},
					{
						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())

			_, signaller := fakeProcessTracker.RestoreArgsForCall(0)
			Expect(signaller).To(BeAssignableToTypeOf(&process_tracker.LinkSignaller{}))
		})