BeforeEach(func() { errorChan = make(chan error, 10) finishedChan = make(chan struct{}) incomingChan = make(chan *events.Envelope) }) AfterEach(func() { close(messagesToSend) <-finishedChan }) perform := func() { connection = noaa.NewConsumer(endpoint, tlsSettings, consumerProxyFunc) go func() { errorChan <- connection.StreamWithoutReconnect(appGuid, authToken, incomingChan) close(finishedChan) }() } It("connects using valid URL to running consumerProxyFunc server", func() { messagesToSend <- marshalMessage(createMessage("hello", 0)) perform() message := <-incomingChan Expect(message.GetLogMessage().GetMessage()).To(Equal([]byte("hello"))) }) It("connects using valid URL to a stopped consumerProxyFunc server", func() { testProxyServer.Close()
Eventually(errorChan).Should(BeClosed()) Consistently(fakeHandler.wasCalled, 2).Should(BeFalse()) Eventually(doneChan, 5).Should(BeClosed()) }) }) Describe("StreamWithoutReconnect", func() { var incomingChan chan *events.Envelope var streamErrorChan chan error var finishedChan chan struct{} perform := func() { streamErrorChan = make(chan error, 10) cnsmr = noaa.NewConsumer(trafficControllerUrl, tlsSettings, consumerProxyFunc) go func() { streamErrorChan <- cnsmr.StreamWithoutReconnect(appGuid, authToken, incomingChan) close(finishedChan) }() } BeforeEach(func() { incomingChan = make(chan *events.Envelope) finishedChan = make(chan struct{}) startFakeTrafficController() }) AfterEach(func() { cnsmr.Close() <-finishedChan })