Пример #1
0
					data, err := json.Marshal(&spec)
					Expect(err).ToNot(HaveOccurred())

					request = &container_daemon.RequestMessage{
						Type: container_daemon.ProcessRequest,
						Data: data,
					}

					listener.ListenStub = func(cb container_daemon.ConnectionHandler) error {
						b, err := json.Marshal(request)
						Expect(err).ToNot(HaveOccurred())

						response, handlerError = cb.Handle(json.NewDecoder(bytes.NewReader(b)))

						if response != nil {
							handleFileHandles = response.Files
							handlerPid = response.Pid
						} else {
							handleFileHandles = nil
							handlerPid = 0
						}

						return nil
					}

					daemon.Run(listener)
				})

				It("runs the spawner with a prepared command", func() {
					Expect(preparer.PrepareCmdCallCount()).To(Equal(1))
					Expect(preparer.PrepareCmdArgsForCall(0)).To(Equal(spec))
					Expect(spawner.SpawnCallCount()).To(Equal(1))
Пример #2
0
					Env:  []string{"foo=bar", "baz=barry"},
				}

				preparer.PrepareCmdReturns(exec.Command("foo"), nil)

				spawner.SpawnStub = func(cmd *exec.Cmd, withTty bool) ([]*os.File, error) {
					cmd.Process = &os.Process{Pid: 123}
					return nil, nil
				}
			})

			JustBeforeEach(func() {
				listener.ListenStub = func(cb unix_socket.ConnectionHandler) error {
					b, err := json.Marshal(spec)
					Expect(err).ToNot(HaveOccurred())

					handleFileHandles, handlerPid, handlerError = cb.Handle(json.NewDecoder(bytes.NewReader(b)))

					return nil
				}

				daemon.Run(listener)
			})

			It("runs the spawner with a prepared command", func() {
				Expect(preparer.PrepareCmdCallCount()).To(Equal(1))
				Expect(preparer.PrepareCmdArgsForCall(0)).To(Equal(spec))
				Expect(spawner.SpawnCallCount()).To(Equal(1))
			})

			It("returns the PID of the spawned process", func() {
				Expect(handlerPid).To(Equal(123))