func (messageRouter *messageRouter) dumpToSink(sink sinks.Sink, activeSinks *groupedsinks.GroupedSinks) { dumpChan := make(chan *logmessage.Message, 20) if sink := activeSinks.DumpFor(sink.AppId()); sink != nil { sink.Dump(dumpChan) } else { close(dumpChan) } for message := range dumpChan { sink.Channel() <- message } }
func (messageRouter *messageRouter) manageDumps(activeSinks *groupedsinks.GroupedSinks, appId string) { if activeSinks.DumpFor(appId) == nil { s := sinks.NewDumpSink(appId, messageRouter.dumpBufferSize, messageRouter.logger) ok := messageRouter.registerSink(s, activeSinks) if ok { go s.Run() } } }
}) }) Describe("DumpFor", func() { It("should return only dumps", func() { target := "789" sink1 := syslog.NewSyslogSink(target, "url1", loggertesthelper.Logger(), DummySyslogWriter{}, errorChan) sink2 := syslog.NewSyslogSink(target, "url2", loggertesthelper.Logger(), DummySyslogWriter{}, errorChan) sink3 := dump.NewDumpSink(target, 5, loggertesthelper.Logger(), time.Second, fakeTimeProvider) groupedSinks.Register(inputChan, sink1) groupedSinks.Register(inputChan, sink2) groupedSinks.Register(inputChan, sink3) Expect(groupedSinks.DumpFor(target)).To(Equal(sink3)) }) It("should return only dumps that match the appId", func() { target := "789" otherTarget := "790" sink1 := dump.NewDumpSink(target, 5, loggertesthelper.Logger(), time.Second, fakeTimeProvider) sink2 := dump.NewDumpSink(otherTarget, 5, loggertesthelper.Logger(), time.Second, fakeTimeProvider) groupedSinks.Register(inputChan, sink1) groupedSinks.Register(inputChan, sink2) Expect(groupedSinks.DumpFor(target)).To(Equal(sink1)) })