github.com/schwarzm/garden-linux@v0.0.0-20150507151835-33bca2147c47/integration/lifecycle/process_test.go (about)

     1  package lifecycle_test
     2  
     3  import (
     4  	"github.com/cloudfoundry-incubator/garden"
     5  	. "github.com/onsi/ginkgo"
     6  	. "github.com/onsi/gomega"
     7  	"github.com/onsi/gomega/gbytes"
     8  )
     9  
    10  var _ = Describe("Process", func() {
    11  
    12  	var container garden.Container
    13  
    14  	BeforeEach(func() {
    15  		client = startGarden()
    16  		var err error
    17  		container, err = client.Create(garden.ContainerSpec{})
    18  		Expect(err).ToNot(HaveOccurred())
    19  	})
    20  
    21  	Describe("signalling", func() {
    22  
    23  		It("a process can be sent SIGTERM immediately after having been started", func() {
    24  			stdout := gbytes.NewBuffer()
    25  
    26  			process, err := container.Run(garden.ProcessSpec{
    27  				Path: "sh",
    28  				Args: []string{
    29  					"-c",
    30  					`
    31                  trap 'exit 42' SIGTERM
    32  
    33                  sleep 2
    34                  exit 12
    35                  `,
    36  				},
    37  			}, garden.ProcessIO{
    38  				Stdout: stdout,
    39  			})
    40  			Expect(err).ToNot(HaveOccurred())
    41  
    42  			err = process.Signal(garden.SignalTerminate)
    43  			Expect(err).ToNot(HaveOccurred())
    44  			Expect(process.Wait()).To(Equal(42))
    45  		})
    46  
    47  	})
    48  
    49  })