github.com/cloudfoundry-attic/garden-linux@v0.333.2-candidate/process_tracker/link_signaller_test.go (about)

     1  package process_tracker_test
     2  
     3  import (
     4  	"encoding/json"
     5  	"errors"
     6  	"syscall"
     7  
     8  	"github.com/cloudfoundry-incubator/garden-linux/iodaemon/link"
     9  	"github.com/cloudfoundry-incubator/garden-linux/process_tracker"
    10  	"github.com/cloudfoundry-incubator/garden-linux/process_tracker/fake_msg_sender"
    11  	. "github.com/onsi/ginkgo"
    12  	. "github.com/onsi/gomega"
    13  )
    14  
    15  var _ = Describe("Link Signaller", func() {
    16  	var msgSender *fake_msg_sender.FakeMsgSender
    17  	var request *process_tracker.SignalRequest
    18  	var signaller *process_tracker.LinkSignaller
    19  	var signalSent syscall.Signal
    20  
    21  	BeforeEach(func() {
    22  		signalSent = syscall.SIGTERM
    23  	})
    24  
    25  	JustBeforeEach(func() {
    26  		msgSender = new(fake_msg_sender.FakeMsgSender)
    27  		request = &process_tracker.SignalRequest{
    28  			Pid:    "12345",
    29  			Link:   msgSender,
    30  			Signal: signalSent,
    31  		}
    32  
    33  		signaller = &process_tracker.LinkSignaller{}
    34  	})
    35  
    36  	It("signals process successfully", func() {
    37  		Expect(signaller.Signal(request)).To(Succeed())
    38  		Expect(msgSender.SendMsgCallCount()).To(Equal(1))
    39  
    40  		data, err := json.Marshal(&link.SignalMsg{Signal: signalSent})
    41  		Expect(err).ToNot(HaveOccurred())
    42  		Expect(msgSender.SendMsgArgsForCall(0)).To(Equal(data))
    43  	})
    44  
    45  	Context("when the link fails to send the signal", func() {
    46  		var err error
    47  		JustBeforeEach(func() {
    48  			err = errors.New("what!!")
    49  			msgSender.SendMsgReturns(err)
    50  		})
    51  
    52  		It("returns the error", func() {
    53  			Expect(signaller.Signal(request)).To(MatchError(err))
    54  		})
    55  	})
    56  })