bufferSize = 10 forwarder = dopplerforwarder.New(clientPool, sharedSecret, bufferSize, logger) doneChan = make(chan struct{}) go func() { forwarder.Run() close(doneChan) }() envelope = &events.Envelope{ Origin: proto.String("fake-origin-1"), EventType: events.Envelope_LogMessage.Enum(), LogMessage: factories.NewLogMessage(events.LogMessage_OUT, "message", "appid", "sourceType"), } }) AfterEach(func() { forwarder.Stop() <-doneChan }) Context("client selection", func() { It("selects a random client", func() { forwarder.Write(envelope) Eventually(func() int { return clientPool.RandomClientCallCount() }).Should(Equal(1)) }) Context("when selecting a client errors", func() { It("an error is logged and returns", func() { clientPool.RandomClientReturns(nil, errors.New("boom")) forwarder.Write(envelope) Eventually(loggertesthelper.TestLoggerSink.LogContents).Should(ContainSubstring("can't forward message"))