var _ = Describe("WebsocketServer", func() { var server *websocketserver.WebsocketServer var sinkManager = sinkmanager.New(1024, false, blacklist.New(nil), loggertesthelper.Logger(), 100, "dropsonde-origin", 1*time.Second, 1*time.Second) var appId = "my-app" var wsReceivedChan chan []byte var connectionDropped <-chan struct{} var apiEndpoint = "127.0.0.1:9091" BeforeEach(func() { logger := loggertesthelper.Logger() cfcomponent.Logger = logger wsReceivedChan = make(chan []byte) server = websocketserver.New(apiEndpoint, sinkManager, 100*time.Millisecond, 100, "dropsonde-origin", logger) go server.Start() serverUrl := fmt.Sprintf("ws://%s/apps/%s/stream", apiEndpoint, appId) websocket.DefaultDialer = &websocket.Dialer{HandshakeTimeout: 10 * time.Millisecond} Eventually(func() error { _, _, err := websocket.DefaultDialer.Dial(serverUrl, http.Header{}); return err }, 1).ShouldNot(HaveOccurred()) }) AfterEach(func() { server.Stop() time.Sleep(time.Millisecond * 10) }) Describe("failed connections", func() { It("fails without an appId", func() { _, connectionDropped = AddWSSink(wsReceivedChan, fmt.Sprintf("ws://%s/apps//stream", apiEndpoint)) Expect(connectionDropped).To(BeClosed()) })
goRoutineSpawned.Add(1) go func() { goRoutineSpawned.Done() defer services.Done() TestMessageRouter.Start(dataReadChannel) }() apiEndpoint := "localhost:" + serverPort TestWebsocketServer = websocketserver.New(apiEndpoint, sinkManager, 10*time.Second, 100, "dropsonde-origin", logger) services.Add(1) goRoutineSpawned.Add(1) go func() { goRoutineSpawned.Done() defer services.Done() TestWebsocketServer.Start() }() goRoutineSpawned.Wait() }) AfterEach(func() { sinkManager.Stop() TestMessageRouter.Stop() TestWebsocketServer.Stop() services.Wait() }) It("dumps all messages for an app user", func() { expectedFirstMessageString := "Some data 1"