本文整理匯總了Golang中code/cloudfoundry/org/guardian/gqt/runner.RunningGarden.Create方法的典型用法代碼示例。如果您正苦於以下問題:Golang RunningGarden.Create方法的具體用法?Golang RunningGarden.Create怎麽用?Golang RunningGarden.Create使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類code/cloudfoundry/org/guardian/gqt/runner.RunningGarden
的用法示例。
在下文中一共展示了RunningGarden.Create方法的13個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1:
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.")))
})
It("creates successfully if a rootfs is supplied in container spec", func() {
var err error
container, err = client.Create(garden.ContainerSpec{RootFSPath: os.Getenv("GARDEN_TEST_ROOTFS")})
Expect(err).NotTo(HaveOccurred())
})
})
Context("with a default rootfs", func() {
BeforeEach(func() {
args = append(args, "--default-rootfs", os.Getenv("GARDEN_TEST_ROOTFS"))
示例2:
container garden.Container
props garden.Properties
propertiesDir string
)
BeforeEach(func() {
var err error
propertiesDir, err = ioutil.TempDir("", "props")
Expect(err).NotTo(HaveOccurred())
args = append(args, "--properties-path", path.Join(propertiesDir, "props.json"))
client = startGarden(args...)
props = garden.Properties{"somename": "somevalue"}
container, err = client.Create(garden.ContainerSpec{
Properties: props,
})
Expect(err).NotTo(HaveOccurred())
})
AfterEach(func() {
Expect(client.DestroyAndStop()).To(Succeed())
Expect(os.RemoveAll(propertiesDir)).To(Succeed())
})
It("can get properties", func() {
properties, err := container.Properties()
Expect(err).NotTo(HaveOccurred())
Expect(properties).To(HaveKeyWithValue("somename", "somevalue"))
})
示例3:
var err error
propertiesDir, err = ioutil.TempDir("", "props")
Expect(err).NotTo(HaveOccurred())
args = append(args, "--properties-path", path.Join(propertiesDir, "props.json"))
containerSpec = garden.ContainerSpec{
Network: "177.100.10.30/30",
}
restartArgs = []string{}
gracefulShutdown = true
})
JustBeforeEach(func() {
var err error
container, err = client.Create(containerSpec)
Expect(err).NotTo(HaveOccurred())
hostNetInPort, _, err = container.NetIn(hostNetInPort, 8080)
Expect(err).NotTo(HaveOccurred())
container.NetOut(garden.NetOutRule{
Networks: []garden.IPRange{
garden.IPRangeFromIP(net.ParseIP("8.8.8.8")),
},
})
info, err := container.Info()
Expect(err).NotTo(HaveOccurred())
externalIP = info.ExternalIP
interfacePrefix = info.Properties["kawasaki.iptable-prefix"]
示例4:
"github.com/onsi/gomega/gbytes"
"github.com/onsi/gomega/gexec"
"github.com/onsi/gomega/types"
)
var _ = Describe("Run", func() {
var client *runner.RunningGarden
AfterEach(func() {
Expect(client.DestroyAndStop()).To(Succeed())
})
DescribeTable("running a process",
func(spec garden.ProcessSpec, matchers ...func(actual interface{})) {
client = startGarden()
container, err := client.Create(garden.ContainerSpec{})
Expect(err).NotTo(HaveOccurred())
out := gbytes.NewBuffer()
proc, err := container.Run(
spec,
garden.ProcessIO{
Stdout: io.MultiWriter(GinkgoWriter, out),
Stderr: io.MultiWriter(GinkgoWriter, out),
})
Expect(err).NotTo(HaveOccurred())
exitCode, err := proc.Wait()
Expect(err).NotTo(HaveOccurred())
for _, m := range matchers {
示例5:
JustBeforeEach(func() {
var err error
portPoolStart = GinkgoParallelNode() * 10000
propsPoolDir, err = ioutil.TempDir("", "portpool")
Expect(err).NotTo(HaveOccurred())
args = []string{
"--port-pool-size", strconv.Itoa(numContainers),
"--port-pool-properties-path", filepath.Join(propsPoolDir, "props.json"),
"--port-pool-start", strconv.Itoa(portPoolStart),
}
containers = []garden.Container{}
client = startGarden(args...)
// Create containers and NetIn
for i := 0; i < numContainers; i++ {
container, err := client.Create(garden.ContainerSpec{})
Expect(err).NotTo(HaveOccurred())
hostPort, _, err := container.NetIn(0, 0)
if i == numContainers-1 {
expectedPort = hostPort
}
Expect(err).NotTo(HaveOccurred())
containers = append(containers, container)
}
})
AfterEach(func() {
Expect(client.DestroyAndStop()).To(Succeed())
示例6:
layerFiles, err := ioutil.ReadDir(layersPath)
Expect(err).ToNot(HaveOccurred())
diffFiles, err := ioutil.ReadDir(diffPath)
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())
})
示例7:
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
var _ = Describe("Info", func() {
var (
client *runner.RunningGarden
container garden.Container
)
BeforeEach(func() {
var err error
client = startGarden()
container, err = client.Create(garden.ContainerSpec{
Network: "10.252.0.2",
Properties: garden.Properties{
"foo": "bar",
},
})
Expect(err).NotTo(HaveOccurred())
})
AfterEach(func() {
Expect(client.DestroyAndStop()).To(Succeed())
})
It("can return the state", func() {
info, err := container.Info()
Expect(err).NotTo(HaveOccurred())
Expect(info.State).To(Equal("active"))
})
示例8:
JustBeforeEach(func() {
client = startGarden(args...)
})
AfterEach(func() {
Expect(client.DestroyAndStop()).To(Succeed())
})
Describe("Apparmor", func() {
Context("when the --apparmor flag is pointing to a loaded policy", func() {
BeforeEach(func() {
args = append(args, "--apparmor", "garden-default")
})
It("should enforce the policy when running processes in unprivileged containers", func() {
container, err := client.Create(garden.ContainerSpec{})
Expect(err).NotTo(HaveOccurred())
buffer := gbytes.NewBuffer()
_, err = container.Run(garden.ProcessSpec{
Path: "cat",
Args: []string{"/proc/self/attr/current"},
}, garden.ProcessIO{
Stdout: io.MultiWriter(GinkgoWriter, buffer),
Stderr: GinkgoWriter,
})
Expect(err).NotTo(HaveOccurred())
Eventually(buffer).Should(gbytes.Say("garden-default"))
})
示例9:
JustBeforeEach(func() {
client = startGarden(args...)
})
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())
示例10:
initialSockets = numOpenSockets(client.Pid)
initialPipes = numPipes(client.Pid)
})
AfterEach(func() {
Expect(client.DestroyAndStop()).To(Succeed())
})
Context("when creating fails", func() {
// cause Create to fail by specifying an invalid network CIDR address
var containerSpec = garden.ContainerSpec{
Network: "not-a-valid-network",
}
It("returns a nice error rather than timing out", func() {
_, err := client.Create(containerSpec)
Expect(err).To(MatchError(ContainSubstring("invalid CIDR address")))
})
It("cleans up the depot directory", func() {
_, err := client.Create(containerSpec)
Expect(err).To(HaveOccurred())
Expect(ioutil.ReadDir(client.DepotDir)).To(BeEmpty())
})
It("cleans up the graph", func() {
// pre-warm cache to avoid test pollution
// i.e. ensure base layers that are never removed are already in the graph
_, err := client.Create(containerSpec)
Expect(err).To(HaveOccurred())
示例11:
var _ = Describe("Fuse", func() {
var (
client *runner.RunningGarden
container garden.Container
)
BeforeEach(func() {
fuseRootfs := os.Getenv("GARDEN_FUSE_TEST_ROOTFS")
if fuseRootfs == "" {
Skip("GARDEN_FUSE_TEST_ROOTFS not defined, skipping")
}
var err error
client = startGarden()
container, err = client.Create(garden.ContainerSpec{
RootFSPath: fuseRootfs,
Privileged: true,
})
Expect(err).NotTo(HaveOccurred())
})
AfterEach(func() {
Expect(client.DestroyAndStop()).To(Succeed())
})
It("can mount fuse in the container", func() {
stdout := gbytes.NewBuffer()
sess, err := container.Run(garden.ProcessSpec{
Path: "sh",
Args: []string{
"-c", `mkdir -p /tmp/fusetest && /usr/bin/hellofs /tmp/fusetest; cat /tmp/fusetest/hello`,
},
示例12:
testFileName = ""
srcPath, testFileName = createTestHostDirAndTestFile()
bindMountOrigin = garden.BindMountOriginHost
})
JustBeforeEach(func() {
client = startGarden()
var err error
container, err = client.Create(
garden.ContainerSpec{
Privileged: privilegedContainer,
BindMounts: []garden.BindMount{{
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())
示例13:
Eventually(func() error {
var err error
ips, err = net.LookupIP("www.example.com")
return err
}, "60s", "2s").Should(Succeed())
exampleDotCom = ips[0]
})
JustBeforeEach(func() {
var err error
client = startGarden(args...)
container, err = client.Create(garden.ContainerSpec{
Network: containerNetwork,
Properties: extraProperties,
})
Expect(err).NotTo(HaveOccurred())
})
AfterEach(func() {
Expect(client.DestroyAndStop()).To(Succeed())
})
It("should have a loopback interface", func() {
buffer := gbytes.NewBuffer()
proc, err := container.Run(
garden.ProcessSpec{
Path: "ifconfig",
User: "root",
}, garden.ProcessIO{Stdout: io.MultiWriter(GinkgoWriter, buffer), Stderr: GinkgoWriter},