github.com/cloudfoundry-attic/garden-linux@v0.333.2-candidate/process_tracker/writer/fan_out_test.go (about) 1 package writer_test 2 3 import ( 4 "github.com/cloudfoundry-incubator/garden-linux/process_tracker/writer" 5 6 "errors" 7 8 . "github.com/onsi/ginkgo" 9 . "github.com/onsi/gomega" 10 ) 11 12 var _ = Describe("FanOut", func() { 13 var fanOut writer.FanOut 14 var fWriter *fakeWriter 15 var testBytes []byte 16 17 BeforeEach(func() { 18 fanOut = writer.NewFanOut() 19 fWriter = &fakeWriter{ 20 nWriteReturn: 10, 21 } 22 testBytes = []byte{12} 23 }) 24 25 It("writes data to a sink", func() { 26 fanOut.AddSink(fWriter) 27 n, err := fanOut.Write(testBytes) 28 29 Expect(err).ToNot(HaveOccurred()) 30 Expect(n).To(Equal(1)) 31 32 Expect(fWriter.writeArgument()).To(Equal(testBytes)) 33 Expect(fWriter.writeCalls()).To(Equal(1)) 34 }) 35 36 It("ignores errors when writing to the sink", func() { 37 fWriter.errWriteReturn = errors.New("write error") 38 fanOut.AddSink(fWriter) 39 n, err := fanOut.Write(testBytes) 40 41 Expect(err).ToNot(HaveOccurred()) 42 Expect(n).To(Equal(1)) 43 }) 44 45 It("writes data to two sinks", func() { 46 fWriter2 := &fakeWriter{ 47 nWriteReturn: 10, 48 } 49 fanOut.AddSink(fWriter2) 50 fanOut.AddSink(fWriter) 51 n, err := fanOut.Write(testBytes) 52 53 Expect(err).ToNot(HaveOccurred()) 54 Expect(n).To(Equal(1)) 55 56 Expect(fWriter.writeArgument()).To(Equal(testBytes)) 57 Expect(fWriter.writeCalls()).To(Equal(1)) 58 59 Expect(fWriter2.writeArgument()).To(Equal(testBytes)) 60 Expect(fWriter2.writeCalls()).To(Equal(1)) 61 }) 62 63 It("copes when there are no sinks", func() { 64 n, err := fanOut.Write(testBytes) 65 66 Expect(err).ToNot(HaveOccurred()) 67 Expect(n).To(Equal(1)) 68 }) 69 })