. "github.com/onsi/gomega" ) var _ = Describe("Properties", func() { var ( client *runner.RunningGarden container garden.Container props garden.Properties ) BeforeEach(func() { var err error client = startGarden() props = garden.Properties{"somename": "somevalue"} container, err = client.Create(garden.ContainerSpec{ Properties: props, }) Expect(err).NotTo(HaveOccurred()) }) AfterEach(func() { Expect(client.DestroyAndStop()).To(Succeed()) }) It("can get properties", func() { properties, err := container.Properties() Expect(err).NotTo(HaveOccurred()) Expect(properties).To(HaveKeyWithValue("somename", "somevalue")) }) It("can set a single property", func() {
subnet string args []string ) BeforeEach(func() { args = []string{} subnet = fmt.Sprintf("192.168.%d.0/24", 12+GinkgoParallelNode()) }) JustBeforeEach(func() { var err error client = startGarden(args...) container, err = client.Create(garden.ContainerSpec{ Network: subnet, }) 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: "******", }, garden.ProcessIO{Stdout: io.MultiWriter(GinkgoWriter, buffer), Stderr: GinkgoWriter},
}) JustBeforeEach(func() { Expect(client.Destroy(container.Handle())).To(Succeed()) }) Context("when running a process", func() { var ( process garden.Process initProcPid int ) BeforeEach(func() { var err error container, err = client.Create(garden.ContainerSpec{}) Expect(err).NotTo(HaveOccurred()) initProcPid = initProcessPID(container.Handle()) process, err = container.Run(garden.ProcessSpec{ Path: "/bin/sh", Args: []string{ "-c", "read x", }, }, ginkgoIO) Expect(err).NotTo(HaveOccurred()) }) It("should kill the containers init process", func() { var killExitCode = func() int {
"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 {
. "github.com/onsi/gomega" archiver "github.com/pivotal-golang/archiver/extractor/test_helper" ) var _ = Describe("Streaming", func() { var ( client *runner.RunningGarden container garden.Container ) BeforeEach(func() { var err error client = startGarden() container, err = client.Create(garden.ContainerSpec{}) Expect(err).NotTo(HaveOccurred()) }) AfterEach(func() { Expect(client.DestroyAndStop()).To(Succeed()) }) Describe("StreamIn", func() { var tarStream io.Reader BeforeEach(func() { tmpdir, err := ioutil.TempDir("", "some-temp-dir-parent") Expect(err).ToNot(HaveOccurred()) tgzPath := filepath.Join(tmpdir, "some.tgz")
) BeforeEach(func() { client = startGarden() }) AfterEach(func() { Expect(client.DestroyAndStop()).To(Succeed()) }) Context("after creating a container without a specified handle", func() { var initProcPid int BeforeEach(func() { var err error container, err = client.Create(garden.ContainerSpec{}) Expect(err).NotTo(HaveOccurred()) initProcPid = initProcessPID(container.Handle()) }) It("should create a depot subdirectory based on the container handle", func() { Expect(container.Handle()).NotTo(BeEmpty()) Expect(filepath.Join(client.DepotDir, container.Handle())).To(BeADirectory()) Expect(filepath.Join(client.DepotDir, container.Handle(), "config.json")).To(BeARegularFile()) }) It("should lookup the right container", func() { lookupContainer, lookupError := client.Lookup(container.Handle()) Expect(lookupError).NotTo(HaveOccurred())