本文整理汇总了Golang中github.com/cloudfoundry-incubator/garden.Container.NetIn方法的典型用法代码示例。如果您正苦于以下问题:Golang Container.NetIn方法的具体用法?Golang Container.NetIn怎么用?Golang Container.NetIn使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/cloudfoundry-incubator/garden.Container
的用法示例。
在下文中一共展示了Container.NetIn方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1:
Ω(process.ID()).Should(Equal(uint32(42)))
status, err := process.Wait()
Ω(err).ShouldNot(HaveOccurred())
Ω(status).Should(Equal(123))
Eventually(stdout).Should(gbytes.Say("stdout data"))
Eventually(stderr).Should(gbytes.Say("stderr data"))
})
})
Describe("NetIn", func() {
It("sends a net in request", func() {
fakeConnection.NetInReturns(111, 222, nil)
hostPort, containerPort, err := container.NetIn(123, 456)
Ω(err).ShouldNot(HaveOccurred())
Ω(hostPort).Should(Equal(uint32(111)))
Ω(containerPort).Should(Equal(uint32(222)))
h, hp, cp := fakeConnection.NetInArgsForCall(0)
Ω(h).Should(Equal("some-handle"))
Ω(hp).Should(Equal(uint32(123)))
Ω(cp).Should(Equal(uint32(456)))
})
Context("when the request fails", func() {
disaster := errors.New("oh no!")
BeforeEach(func() {
fakeConnection.NetInReturns(0, 0, disaster)
示例2:
It("makes a call out to an external service", func() {
server.AppendHandlers(
ghttp.CombineHandlers(
ghttp.VerifyRequest("POST", "/api/containers/containerhandle/net/in"),
ghttp.RespondWith(200, `{"hostPort":1234}`),
func(w http.ResponseWriter, req *http.Request) {
body, err := ioutil.ReadAll(req.Body)
req.Body.Close()
Expect(err).ShouldNot(HaveOccurred())
Expect(string(body)).Should(Equal(`{"hostPort":1234,"containerPort":3456}`))
},
),
)
var hostPort uint32 = 1234
var containerPort uint32 = 3456
_, _, err := container.NetIn(hostPort, containerPort)
Expect(err).NotTo(HaveOccurred())
Expect(server.ReceivedRequests()).Should(HaveLen(1))
})
Context("Containerizer succeeds", func() {
It("returns containerizers host port", func() {
server.AppendHandlers(
ghttp.CombineHandlers(
ghttp.VerifyRequest("POST", "/api/containers/containerhandle/net/in"),
ghttp.RespondWith(200, `{"hostPort":9876}`),
),
)
var containerPort uint32 = 3456
returnedHostPort, returnedContainerPort, err := container.NetIn(1234, containerPort)
Expect(err).NotTo(HaveOccurred())
示例3:
Describe("NetIn", func() {
var container garden.Container
const (
externalPort uint32 = 8888
contianerPort uint32 = 8080
)
BeforeEach(func() {
var err error
container, err = gdnr.Lookup("banana")
Expect(err).NotTo(HaveOccurred())
})
It("asks the netwoker to forward the correct ports", func() {
_, _, err := container.NetIn(externalPort, contianerPort)
Expect(err).NotTo(HaveOccurred())
Expect(networker.NetInCallCount()).To(Equal(1))
actualHandle, actualExtPort, actualContainerPort := networker.NetInArgsForCall(0)
Expect(actualHandle).To(Equal(container.Handle()))
Expect(actualExtPort).To(Equal(externalPort))
Expect(actualContainerPort).To(Equal(contianerPort))
})
Context("when networker returns an error", func() {
It("returns the error", func() {
networker.NetInReturns(uint32(0), uint32(0), fmt.Errorf("error"))
_, _, err := container.NetIn(externalPort, contianerPort)
示例4:
otherContainer, err = client.Create(garden.ContainerSpec{})
Expect(err).ToNot(HaveOccurred())
})
AfterEach(func() {
Expect(client.Destroy(otherContainer.Handle())).To(Succeed())
})
It("reuses IP addresses", func() {
newIpAddress := containerIP(otherContainer)
Expect(newIpAddress).To(Equal(otherContainerIP))
})
It("is accessible from the outside", func() {
hostPort, containerPort, err := otherContainer.NetIn(0, 4321)
Expect(err).ToNot(HaveOccurred())
Expect(listenInContainer(otherContainer, containerPort)).To(Succeed())
externalIP := externalIP(otherContainer)
stdout := sendRequest(externalIP, hostPort)
Expect(stdout).To(gbytes.Say(fmt.Sprintf("%d", containerPort)))
})
})
Describe("NetIn", func() {
It("maps the provided host port to the container port", func() {
const (
hostPort uint32 = 9888
示例5:
// Put show_port.bat in container
tarFile, err := os.Open("../bin/show_port.tgz")
Expect(err).ShouldNot(HaveOccurred())
defer tarFile.Close()
err = c.StreamIn(garden.StreamInSpec{Path: "bin", TarStream: tarFile})
Expect(err).ShouldNot(HaveOccurred())
})
AfterEach(func() {
err := client.Destroy(c.Handle())
Expect(err).ShouldNot(HaveOccurred())
})
It("Sets MappedPorts correctly in container's info", func() {
httpPort, _, err := c.NetIn(0, 8080)
Expect(err).To(BeNil())
sshPort, _, err := c.NetIn(0, 2222)
Expect(err).To(BeNil())
info, err := c.Info()
Expect(err).To(BeNil())
mapping := map[uint32]uint32{
8080: httpPort,
2222: sshPort,
}
Expect(info.MappedPorts).To(HaveLen(2))
Expect(info.MappedPorts[0]).ToNot(Equal(info.MappedPorts[1]))
for _, mp := range info.MappedPorts {
Expect(mp.HostPort).To(Equal(mapping[mp.ContainerPort]))
}
})
示例6:
Expect(err).ToNot(HaveOccurred())
info, err := container.Info()
Expect(err).ToNot(HaveOccurred())
externalIP = info.ExternalIP
hostPort = 8888
containerPort = 8080
})
AfterEach(func() {
err := client.Destroy(container.Handle())
Expect(err).ToNot(HaveOccurred())
})
It("maps the provided host port to the container port", func() {
_, _, err := container.NetIn(hostPort, containerPort)
Expect(err).ToNot(HaveOccurred())
Expect(listenInContainer(container, containerPort)).To(Succeed())
stdout := sendRequest(externalIP, hostPort)
Expect(stdout).To(gbytes.Say(fmt.Sprintf("%d", containerPort)))
})
Context("when multiple netin calls map the same host port to distinct container ports", func() {
var containerPort2 uint32
BeforeEach(func() {
containerPort2 = uint32(8081)
_, _, err := container.NetIn(hostPort, containerPort)
示例7:
},
})).To(Succeed())
// Check it worked (sanity check)
ByAllowingTCPTo(externalIP)
restartGarden(gardenArgs...)
ByAllowingTCPTo(externalIP)
})
})
})
Describe("a container's mapped port", func() {
It("does not get reused", func() {
netInAHost, netInAContainer, err := container.NetIn(0, 0)
Expect(err).ToNot(HaveOccurred())
restartGarden(gardenArgs...)
containerB, err := client.Create(garden.ContainerSpec{})
Expect(err).ToNot(HaveOccurred())
netInBHost, netInBContainer, err := containerB.NetIn(0, 0)
Expect(err).ToNot(HaveOccurred())
Expect(netInAHost).ToNot(Equal(netInBHost))
Expect(netInAContainer).ToNot(Equal(netInBContainer))
})
})