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