container, err := client.Create(garden.ContainerSpec{}) Expect(err).NotTo(HaveOccurred()) hostPort, _, err := container.NetIn(0, 0) Expect(err).NotTo(HaveOccurred()) Expect(hostPort).To(Equal(uint32(portPoolStart + (numContainers - 1) - i))) } }) Context("when guardian is restarted", func() { BeforeEach(func() { numContainers = 3 }) JustBeforeEach(func() { client.Stop() client = startGarden(args...) }) It("should persist the head of the port allocation queue", func() { container, err := client.Create(garden.ContainerSpec{}) Expect(err).NotTo(HaveOccurred()) hostPort, _, err := container.NetIn(0, 0) Expect(err).NotTo(HaveOccurred()) Expect(expectedPort).To(Equal(uint32(hostPort))) }) It("should arrange the ports in increasing order starting with the head", func() { for i := 0; i < numContainers; i++ { container, err := client.Create(garden.ContainerSpec{})
It("can get the default properties", func() { props, err := container.Properties() Expect(err).ToNot(HaveOccurred()) Expect(props).To(HaveKey("kawasaki.bridge-interface")) Expect(props).To(HaveKey(gardener.BridgeIPKey)) Expect(props).To(HaveKey(gardener.ContainerIPKey)) Expect(props).To(HaveKey("kawasaki.host-interface")) Expect(props).To(HaveKey("kawasaki.iptable-inst")) Expect(props).To(HaveKey("kawasaki.subnet")) Expect(props).To(HaveKey("kawasaki.container-interface")) Expect(props).To(HaveKey(gardener.ExternalIPKey)) Expect(props).To(HaveKey("kawasaki.mtu")) }) Context("after a server restart", func() { It("can still get the container's properties", func() { beforeProps, err := container.Properties() Expect(err).NotTo(HaveOccurred()) Expect(client.Stop()).To(Succeed()) client = startGarden(args...) afterProps, err := container.Properties() Expect(err).NotTo(HaveOccurred()) Expect(beforeProps).To(Equal(afterProps)) }) }) })
func restartGarden(client *runner.RunningGarden, argv ...string) { Expect(client.Ping()).To(Succeed(), "tried to restart garden while it was not running") Expect(client.Stop()).To(Succeed()) client = startGarden(argv...) }