func (messageRouter *messageRouter) registerSink(s sinks.Sink, activeSinks *groupedsinks.GroupedSinks) bool { messageRouter.Lock() defer messageRouter.Unlock() ok := activeSinks.Register(s) switch s.(type) { case *sinks.DumpSink: messageRouter.activeDumpSinksCounter++ case *sinks.SyslogSink: messageRouter.activeSyslogSinksCounter++ case *sinks.WebsocketSink: messageRouter.activeWebsocketSinksCounter++ go messageRouter.dumpToSink(s, activeSinks) } messageRouter.logger.Infof("MessageRouter: Sink with channel %v requested. Opened it.", s.Channel()) return ok }
var inputChan, errorChan chan *logmessage.Message BeforeEach(func() { fakeTimeProvider = faketimeprovider.New(time.Now()) groupedSinks = groupedsinks.NewGroupedSinks() inputChan = make(chan *logmessage.Message) errorChan = make(chan *logmessage.Message) }) Describe("BroadCast", func() { It("should send message to all registered sinks that match the appId", func(done Done) { appId := "123" appSink := syslog.NewSyslogSink("123", "url", loggertesthelper.Logger(), DummySyslogWriter{}, errorChan) otherInputChan := make(chan *logmessage.Message) groupedSinks.Register(otherInputChan, appSink) appId = "789" appSink = syslog.NewSyslogSink(appId, "url", loggertesthelper.Logger(), DummySyslogWriter{}, errorChan) groupedSinks.Register(inputChan, appSink) msg := NewMessage("test message", appId) go groupedSinks.BroadCast(appId, msg) Expect(<-inputChan).To(Equal(msg)) Expect(otherInputChan).To(HaveLen(0)) close(done) }) It("should not block when sending to an appId that has no sinks", func(done Done) {