trafficControllerURL = "" testServer = nil fakeHandler = nil tlsSettings = nil appGuid = "" authToken = "" messagesToSend = make(chan []byte, 256) }) JustBeforeEach(func() { cnsmr = consumer.New(trafficControllerURL, tlsSettings, nil) }) AfterEach(func() { cnsmr.Close() if testServer != nil { testServer.Close() } }) Describe("SetOnConnectCallback", func() { BeforeEach(func() { testServer = httptest.NewServer(handlers.NewWebsocketHandler(messagesToSend, 100*time.Millisecond, loggertesthelper.Logger())) trafficControllerURL = "ws://" + testServer.Listener.Addr().String() close(messagesToSend) }) It("sets a callback and calls it when connecting", func() { called := make(chan bool) cb := func() { called <- true }
var _ = Describe("Timeout", func() { AfterSuite(func() { if testServer != nil { testServer.Close() } }) BeforeEach(func() { internal.Timeout = testTimeout fakeHandler = make(nullHandler, 1) testServer = httptest.NewServer(fakeHandler) }) AfterEach(func() { cnsmr.Close() }) Describe("TailingLogsWithoutReconnect", func() { It("times out due to handshake timeout", func() { defer close(fakeHandler) cnsmr = consumer.New(strings.Replace(testServer.URL, "http", "ws", 1), nil, nil) _, errCh := cnsmr.TailingLogsWithoutReconnect(appGuid, authToken) var err error Eventually(errCh, 2*testTimeout).Should(Receive(&err)) Expect(err.Error()).To(ContainSubstring("i/o timeout")) }) }) Describe("Stream", func() {
}) AfterEach(func() { Expect(os.Remove(accessLogFile)).To(Succeed()) }) Context("with modern endpoints", func() { var noaaConsumer *consumer.Consumer JustBeforeEach(func() { tcURL := fmt.Sprintf("ws://%s:%d", localIPAddress, TRAFFIC_CONTROLLER_DROPSONDE_PORT) noaaConsumer = consumer.New(tcURL, &tls.Config{}, nil) }) AfterEach(func() { noaaConsumer.Close() }) It("logs stream access", func() { noaaConsumer.Stream(APP_ID, AUTH_TOKEN) expected := fmt.Sprintf("CEF:0|cloud_foundry|loggregator_trafficcontroller|1.0|GET /apps/%s/stream|GET /apps/%[1]s/stream|0|", APP_ID) Eventually(testContents).Should(ContainSubstring(expected)) }) It("logs recent access", func() { noaaConsumer.RecentLogs(APP_ID, AUTH_TOKEN) expected := fmt.Sprintf("CEF:0|cloud_foundry|loggregator_trafficcontroller|1.0|GET /apps/%s/recentlogs|GET /apps/%[1]s/recentlogs|0|", APP_ID) Eventually(testContents).Should(ContainSubstring(expected)) })
errs <-chan error ) JustBeforeEach(func() { go emitControlMessages() waitForControl(msgs) }) BeforeEach(func() { reader, _ = helpers.SetUpConsumer() msgs, errs = reader.Firehose(generateSubID(), "") go readFromErrors(errs) }) AfterEach(func() { reader.Close() }) It("sends all the envelopes to the subscription", func() { envelopes := readEnvelopes(2*time.Second, msgs) Expect(verifyEnvelopes(count, envelopes)).To(BeTrue()) }) }) Context("multiple connections", func() { var ( reader *consumer.Consumer msgs1 <-chan *events.Envelope msgs2 <-chan *events.Envelope errs1 <-chan error errs2 <-chan error
Expect(request.URL.Path).To(Equal("/apps/1234/stream")) currentTime := time.Now().UnixNano() dropsondeMessage := makeDropsondeMessage("Hello through NOAA", APP_ID, currentTime) fakeDoppler.SendLogMessage(dropsondeMessage) var receivedEnvelope *events.Envelope Eventually(messages).Should(Receive(&receivedEnvelope)) Consistently(errors).ShouldNot(Receive()) receivedMessage := receivedEnvelope.GetLogMessage() Expect(receivedMessage.GetMessage()).To(BeEquivalentTo("Hello through NOAA")) Expect(receivedMessage.GetAppId()).To(Equal(APP_ID)) Expect(receivedMessage.GetTimestamp()).To(Equal(currentTime)) client.Close() }) It("closes the upstream websocket connection when done", func() { var request *http.Request Eventually(fakeDoppler.TrafficControllerConnected, 10).Should(Receive(&request)) Eventually(fakeDoppler.ConnectionPresent).Should(BeTrue()) client.Close() Eventually(fakeDoppler.ConnectionPresent).Should(BeFalse()) }) }) Context("Firehose", func() { var (