本文整理匯總了Golang中code/cloudfoundry/org/guardian/gqt/runner.RunningGarden.Destroy方法的典型用法代碼示例。如果您正苦於以下問題:Golang RunningGarden.Destroy方法的具體用法?Golang RunningGarden.Destroy怎麽用?Golang RunningGarden.Destroy使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類code/cloudfoundry/org/guardian/gqt/runner.RunningGarden
的用法示例。
在下文中一共展示了RunningGarden.Destroy方法的6個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1:
BeforeEach(func() {
container = nil
args = []string{}
})
JustBeforeEach(func() {
if supplyDefaultRootfs {
client = startGarden(args...)
} else {
client = startGardenWithoutDefaultRootfs(args...)
}
})
AfterEach(func() {
if container != nil {
Expect(client.Destroy(container.Handle())).To(Succeed())
}
})
Context("without a default rootfs", func() {
BeforeEach(func() {
supplyDefaultRootfs = false
})
It("fails if a rootfs is not supplied in container spec", func() {
var err error
container, err = client.Create(garden.ContainerSpec{RootFSPath: ""})
Expect(err).To(HaveOccurred())
Expect(err).To(MatchError(ContainSubstring("RootFSPath: is a required parameter, since no default rootfs was provided to the server.")))
})
示例2:
Expect(err).NotTo(HaveOccurred())
Eventually(out).Should(gbytes.Say("hello"))
Expect(process.Signal(garden.SignalKill)).To(Succeed())
exited := make(chan struct{})
go func() {
process.Wait()
close(exited)
}()
Eventually(exited).Should(BeClosed())
})
It("can still destroy the container", func() {
Expect(client.Destroy(container.Handle())).To(Succeed())
})
It("can still be able to access the internet", func() {
Expect(checkConnection(container, "8.8.8.8", 53)).To(Succeed())
})
It("can still be accessible from the outside", func() {
Expect(listenInContainer(container, 8080)).To(Succeed())
info, err := container.Info()
Expect(err).NotTo(HaveOccurred())
externalIP := info.ExternalIP
// retry because listener process inside other container
// may not start immediately
示例3:
Expect(err).ToNot(HaveOccurred())
mntFiles, err := ioutil.ReadDir(mntPath)
Expect(err).ToNot(HaveOccurred())
numLayerFiles := len(layerFiles)
Expect(numLayerFiles).To(Equal(len(diffFiles)))
Expect(numLayerFiles).To(Equal(len(mntFiles)))
return numLayerFiles
}
expectLayerCountAfterGraphCleanupToBe := func(layerCount int) {
nonPersistantRootfsContainer, err := client.Create(garden.ContainerSpec{
RootFSPath: nonDefaultRootfsPath,
})
Expect(err).ToNot(HaveOccurred())
Expect(client.Destroy(nonPersistantRootfsContainer.Handle())).To(Succeed())
Expect(numLayersInGraph()).To(Equal(layerCount + 2)) // +2 for the layers created for the nondefaultrootfs container
}
BeforeEach(func() {
var err error
nonDefaultRootfsPath, err = ioutil.TempDir("", "tmpRootfs")
Expect(err).ToNot(HaveOccurred())
// temporary workaround as runc expects a /tmp dir to exist in the container rootfs
err = os.Mkdir(filepath.Join(nonDefaultRootfsPath, "tmp"), 0700)
Expect(err).ToNot(HaveOccurred())
})
JustBeforeEach(func() {
for _, image := range persistentImages {
args = append(args, "--persistent-image", image)
示例4:
AfterEach(func() {
Expect(client.DestroyAndStop()).To(Succeed())
})
It("should not leak goroutines", func() {
handle := fmt.Sprintf("goroutine-leak-test-%d", GinkgoParallelNode())
numGoroutinesBefore, err := client.NumGoroutines()
Expect(err).NotTo(HaveOccurred())
_, err = client.Create(garden.ContainerSpec{
Handle: handle,
})
Expect(err).NotTo(HaveOccurred())
client.Destroy(handle)
Eventually(func() int {
numGoroutinesAfter, err := client.NumGoroutines()
Expect(err).NotTo(HaveOccurred())
return numGoroutinesAfter
}).Should(Equal(numGoroutinesBefore))
})
It("should destroy the container's rootfs", func() {
container, err := client.Create(garden.ContainerSpec{})
Expect(err).NotTo(HaveOccurred())
info, err := container.Info()
Expect(err).NotTo(HaveOccurred())
containerRootfs := info.ContainerPath
示例5:
SrcPath: srcPath,
DstPath: dstPath,
Mode: bindMountMode,
Origin: bindMountOrigin,
}},
Network: fmt.Sprintf("10.0.%d.0/24", GinkgoParallelNode()),
})
Expect(err).NotTo(HaveOccurred())
})
AfterEach(func() {
err := os.RemoveAll(srcPath)
Expect(err).ToNot(HaveOccurred())
if container != nil {
err := client.Destroy(container.Handle())
Expect(err).ToNot(HaveOccurred())
}
Expect(client.DestroyAndStop()).To(Succeed())
})
Context("which is read-only", func() {
BeforeEach(func() {
bindMountMode = garden.BindMountModeRO
dstPath = "/home/alice/readonly"
})
Context("and with privileged=true", func() {
BeforeEach(func() {
privilegedContainer = true
示例6:
})
Context("when container handle is longer than 49 chars", func() {
var (
longHandle string = "too-looooong-haaaaaaaaaaaaaannnnnndddle-1234456787889"
longHandleContainer garden.Container
)
JustBeforeEach(func() {
var err error
longHandleContainer, err = client.Create(garden.ContainerSpec{Handle: longHandle})
Expect(err).NotTo(HaveOccurred())
})
AfterEach(func() {
client.Destroy(longHandle)
})
It("should lookup container ip using last 49 chars of handle as hostname", func() {
buff := gbytes.NewBuffer()
p, err := longHandleContainer.Run(garden.ProcessSpec{
Path: "cat",
Args: []string{"/etc/hosts"},
}, garden.ProcessIO{
Stdout: buff,
Stderr: buff,
})
Expect(err).NotTo(HaveOccurred())
code, err := p.Wait()
Expect(err).NotTo(HaveOccurred())