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 })