services.Add(1) goRoutineSpawned.Add(1) go func() { goRoutineSpawned.Done() defer services.Done() sinkManager.Start(newAppServiceChan, deletedAppServiceChan) }() TestMessageRouter = sinkserver.NewMessageRouter(sinkManager, logger) services.Add(1) 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() })
var _ = Describe("Message Router", func() { var fakeManager *fakeSinkManager var messageRouter *sinkserver.MessageRouter 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())) }) }) })