"prop-b": "val-b", }, Env: []string{"env1=env1Value", "env2=env2Value"}, })) }) Context("when a grace time is given", func() { It("destroys the container after it has been idle for the grace time", func() { graceTime := time.Second fakeContainer = new(fakes.FakeContainer) fakeContainer.HandleReturns("doomed-handle") serverBackend.GraceTimeReturns(graceTime) serverBackend.CreateReturns(fakeContainer, nil) serverBackend.LookupReturns(fakeContainer, nil) before := time.Now() _, err := apiClient.Create(garden.ContainerSpec{}) Ω(err).ShouldNot(HaveOccurred()) Eventually(serverBackend.DestroyCallCount, 2*time.Second).Should(Equal(1)) Ω(serverBackend.DestroyArgsForCall(0)).Should(Equal("doomed-handle")) Ω(time.Since(before)).Should(BeNumerically("~", graceTime, 100*time.Millisecond)) }) }) Context("when a grace time is not given", func() { It("defaults it to the server's grace time", func() {
var spec ResourceTypeContainerSpec JustBeforeEach(func() { id = Identifier{ Name: "some-name", } spec = ResourceTypeContainerSpec{ Type: "some-resource-a", } fakeContainer := new(gfakes.FakeContainer) fakeContainer.HandleReturns("created-handle") worker.CreateReturns(fakeContainer, nil) worker.LookupReturns(fakeContainer, nil) By("connecting to the worker") container, err := workers[0].CreateContainer(logger, id, spec) Expect(err).NotTo(HaveOccurred()) err = container.Destroy() Expect(err).NotTo(HaveOccurred()) By("restarting the worker with a new address") workerServer.Stop() Eventually(func() error { conn, err := net.Dial("tcp", workerAddr) if err == nil { conn.Close()
time.Sleep(time.Minute) _, err = io.Stdout.Write([]byte("msg 2\n")) Ω(err).ShouldNot(HaveOccurred()) }() return process, nil } fakeBackend.CreateReturns(fakeContainer, nil) clientContainer, err := apiClient.Create(garden.ContainerSpec{}) Ω(err).ShouldNot(HaveOccurred()) fakeBackend.LookupReturns(fakeContainer, nil) stdout := gbytes.NewBuffer() process, err := clientContainer.Run(garden.ProcessSpec{ Path: "some-path", Args: []string{"arg1", "arg2"}, }, garden.ProcessIO{ Stdout: stdout, }) Ω(err).ShouldNot(HaveOccurred()) Eventually(stdout).Should(gbytes.Say("msg 1\n")) apiServer.Stop()