func wireContainerizer(log lager.Logger, depotPath, iodaemonPath, nstarPath, tarPath, defaultRootFSPath string) *rundmc.Containerizer { depot := depot.New(depotPath) startChecker := rundmc.StartChecker{Expect: "Pid 1 Running", Timeout: 3 * time.Second} stateChecker := rundmc.StateChecker{StateFileDir: OciStateDir} commandRunner := linux_command_runner.New() runcrunner := runrunc.New( process_tracker.New(path.Join(os.TempDir(), fmt.Sprintf("garden-%s", *tag), "processes"), iodaemonPath, commandRunner), commandRunner, wireUidGenerator(), goci.RuncBinary("runc"), &goci.BndlLoader{}, runrunc.LookupFunc(runrunc.LookupUser), ) baseBundle := goci.Bundle(). WithNamespaces(PrivilegedContainerNamespaces...). WithResources(&specs.Resources{}). WithMounts( goci.Mount{Name: "proc", Type: "proc", Source: "proc", Destination: "/proc"}, goci.Mount{Name: "tmp", Type: "tmpfs", Source: "tmpfs", Destination: "/tmp"}, ).WithRootFS(defaultRootFSPath). WithProcess(goci.Process("/bin/sh", "-c", `echo "Pid 1 Running"; read x`)). WithDevices(specs.Device{Path: "/dev/null", Type: 'c', Major: 1, Minor: 3, UID: 0, GID: 0, Permissions: "rwm", FileMode: 0666}) nstar := rundmc.NewNstarRunner(nstarPath, tarPath, linux_command_runner.New()) return rundmc.New(depot, &rundmc.BundleTemplate{Bndl: baseBundle}, runcrunner, startChecker, stateChecker, nstar) }
. "github.com/onsi/gomega" "github.com/onsi/gomega/gbytes" "github.com/pivotal-golang/lager/lagertest" ) var _ = Describe("Nstar", func() { var ( fakeCommandRunner *fake_command_runner.FakeCommandRunner nstar rundmc.NstarRunner ) BeforeEach(func() { fakeCommandRunner = fake_command_runner.New() nstar = rundmc.NewNstarRunner( "path-to-nstar", "path-to-tar", fakeCommandRunner, ) }) Describe("StreamIn", func() { var someStream io.Reader BeforeEach(func() { someStream = gbytes.NewBuffer() }) Context("when it executes succesfully", func() { BeforeEach(func() { Expect(nstar.StreamIn(lagertest.NewTestLogger("test"), 12, "some-path", "some-user", someStream)).To(Succeed()) })