func (p *provider) ProvideContainer(spec linux_backend.LinuxContainerSpec) linux_backend.Container { cgroupReader := &cgroups_manager.LinuxCgroupReader{ Path: p.sysconfig.CgroupNodeFilePath, } cgroupsManager := cgroups_manager.New(p.sysconfig.CgroupPath, spec.ID, cgroupReader) oomWatcher := linux_container.NewOomNotifier( p.runner, spec.ContainerPath, cgroupsManager, ) return linux_container.NewLinuxContainer( spec, p.portPool, p.runner, cgroupsManager, p.quotaManager, bandwidth_manager.New(spec.ContainerPath, spec.ID, p.runner), process_tracker.New(spec.ContainerPath, p.runner), p.ProvideFilter(spec.ID), p.ipTablesMgr, devices.Link{Name: p.sysconfig.NetworkInterfacePrefix + spec.ID + "-0"}, oomWatcher, p.log.Session("container", lager.Data{"handle": spec.Handle}), ) }
cgroupsPath = path.Join("path", "to", "cgroups") cgroupsManager = fake_cgroups_manager.New(cgroupsPath, "123456") containerPath = path.Join("path", "to", "container") oomChan = make(chan struct{}) oNoom = func() { close(oomChan) } }) JustBeforeEach(func() { oomNotifier = linux_container.NewOomNotifier( runner, containerPath, cgroupsManager, ) }) Describe("Watch", func() { It("calls the oom binary", func() { Expect(oomNotifier.Watch(oNoom)).To(Succeed()) Expect(runner).To(HaveStartedExecuting( fake_command_runner.CommandSpec{ Path: path.Join(containerPath, "bin", "oom"), Args: []string{path.Join(cgroupsPath, "memory", "instance-123456")}, }, ))