}) Context("when a host port is not provided", func() { It("acquires one from the port pool", func() { hostPort, containerPort, err := container.NetIn(0, 456) Expect(err).ToNot(HaveOccurred()) Expect(hostPort).To(Equal(uint32(1000))) Expect(containerPort).To(Equal(uint32(456))) secondHostPort, _, err := container.NetIn(0, 456) Expect(err).ToNot(HaveOccurred()) Expect(secondHostPort).ToNot(Equal(hostPort)) Expect(container.Resources().Ports).To(ContainElement(hostPort)) }) Context("and acquiring a port from the pool fails", func() { disaster := errors.New("oh no!") BeforeEach(func() { fakePortPool.AcquireError = disaster }) It("returns the error", func() { _, _, err := container.NetIn(0, 456) Expect(err).To(Equal(disaster)) }) }) })
err := pool.Prune(map[string]bool{}) Expect(err).To(Equal(disaster)) }) }) }) Describe("destroying", func() { var createdContainer *linux_backend.LinuxContainer BeforeEach(func() { container, err := pool.Create(backend.ContainerSpec{}) Expect(err).ToNot(HaveOccurred()) createdContainer = container.(*linux_backend.LinuxContainer) createdContainer.Resources().AddPort(123) createdContainer.Resources().AddPort(456) }) It("executes destroy.sh with the correct args and environment", func() { err := pool.Destroy(createdContainer) Expect(err).ToNot(HaveOccurred()) Expect(fakeRunner).To(HaveExecutedSerially( fake_command_runner.CommandSpec{ Path: "/root/path/destroy.sh", Args: []string{"/depot/path/" + createdContainer.ID()}, }, )) })