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" lm := factories.NewLogMessage(events.LogMessage_OUT, expectedFirstMessageString, "myOtherApp", "APP") env1, _ := emitter.Wrap(lm, "ORIGIN") expectedSecondMessageString := "Some data 2" lm = factories.NewLogMessage(events.LogMessage_OUT, expectedSecondMessageString, "myOtherApp", "APP") env2, _ := emitter.Wrap(lm, "ORIGIN") dataReadChannel <- env1
BeforeEach(func() { fakeManager = &fakeSinkManager{receivedMessages: make([]*events.Envelope, 0), receivedDrains: make([][]string, 0)} messageRouter = sinkserver.NewMessageRouter(fakeManager, loggertesthelper.Logger()) }) Describe("Start", func() { Context("with an incoming message", func() { var incomingLogChan chan *events.Envelope BeforeEach(func() { incomingLogChan = make(chan *events.Envelope) go messageRouter.Start(incomingLogChan) }) AfterEach(func() { messageRouter.Stop() }) It("sends the message to the sink manager if it is an app message", func() { message, _ := emitter.Wrap(factories.NewLogMessage(events.LogMessage_OUT, "testMessage", "app", "App"), "origin") incomingLogChan <- message Eventually(fakeManager.received).Should(HaveLen(1)) Expect(fakeManager.received()[0].GetLogMessage()).To(Equal(message.GetLogMessage())) }) }) }) Describe("Stop", func() { It("returns", func() { incomingLogChan := make(chan *events.Envelope) done := make(chan struct{})