func (s *GardenServer) Start() error { s.started = true err := s.removeExistingSocket() if err != nil { return err } err = s.backend.Start() if err != nil { return err } listener, err := net.Listen(s.listenNetwork, s.listenAddr) if err != nil { return err } s.listener = listener if s.listenNetwork == "unix" { os.Chmod(s.listenAddr, 0777) } containers, err := s.backend.Containers(nil) if err != nil { return err } s.bomberman = bomberman.New(s.backend, s.reapContainer) for _, container := range containers { s.bomberman.Strap(container) } go s.server.Serve(listener) return nil }
func (s *WardenServer) Start() error { err := s.removeExistingSocket() if err != nil { return err } err = s.backend.Start() if err != nil { return err } listener, err := net.Listen(s.listenNetwork, s.listenAddr) if err != nil { return err } s.listener = listener if s.listenNetwork == "unix" { os.Chmod(s.listenAddr, 0777) } containers, err := s.backend.Containers(nil) if err != nil { return err } s.bomberman = bomberman.New(s.backend, s.reapContainer) for _, container := range containers { s.bomberman.Strap(container) } go s.trackStopping() go s.handleConnections(listener) return nil }
"time" "github.com/cloudfoundry-incubator/garden" "github.com/cloudfoundry-incubator/garden/fakes" "github.com/cloudfoundry-incubator/garden/server/bomberman" ) var _ = Describe("Bomberman", func() { It("straps a bomb to the given container with the container's grace time as the countdown", func() { detonated := make(chan garden.Container) backend := new(fakes.FakeBackend) backend.GraceTimeReturns(100 * time.Millisecond) bomberman := bomberman.New(backend, func(container garden.Container) { detonated <- container }) container := new(fakes.FakeContainer) container.HandleReturns("doomed") bomberman.Strap(container) select { case <-detonated: case <-time.After(backend.GraceTime(container) + 50*time.Millisecond): Fail("did not detonate!") } }) Context("when the container has a grace time of 0", func() {
. "github.com/onsi/ginkgo" . "github.com/onsi/gomega" "time" "github.com/cloudfoundry-incubator/garden/server/bomberman" "github.com/cloudfoundry-incubator/garden/warden" "github.com/cloudfoundry-incubator/garden/warden/fake_backend" ) var _ = Describe("Bomberman", func() { It("straps a bomb to the given container with the container's grace time as the countdown", func() { detonated := make(chan warden.Container) bomberman := bomberman.New(fake_backend.New(), func(container warden.Container) { detonated <- container }) container := fake_backend.NewFakeContainer( warden.ContainerSpec{ GraceTime: 100 * time.Millisecond, Handle: "doomed", }, ) bomberman.Strap(container) select { case <-detonated: case <-time.After(container.GraceTime() + 50*time.Millisecond): Fail("did not detonate!")