func (sinkManager *SinkManager) ensureRecentLogsSinkFor(appId string) { if sinkManager.sinks.DumpFor(appId) != nil { return } sink := dump.NewDumpSink( appId, sinkManager.recentLogCount, sinkManager.logger, sinkManager.sinkTimeout, ) sinkManager.RegisterSink(sink) }
close(done) }) It("is idempotent", func() { sinkManager.Stop() Expect(sinkManager.Stop).NotTo(Panic()) }) }) Describe("UnregisterSink", func() { Context("with a DumpSink", func() { var dumpSink *dump.DumpSink BeforeEach(func() { dumpSink = dump.NewDumpSink("appId", 1, loggertesthelper.Logger(), time.Hour) sinkManager.RegisterSink(dumpSink) }) It("clears the recent logs buffer", func() { expectedMessageString := "Some Data" expectedMessage, _ := emitter.Wrap(factories.NewLogMessage(events.LogMessage_OUT, expectedMessageString, "myApp", "App"), "origin") sinkManager.SendTo("appId", expectedMessage) Eventually(func() []*events.Envelope { return sinkManager.RecentLogsFor("appId") }).Should(HaveLen(1)) sinkManager.UnregisterSink(dumpSink) Eventually(func() []*events.Envelope {
close(done) }) It("is idempotent", func() { sinkManager.Stop() Expect(sinkManager.Stop).NotTo(Panic()) }) }) Describe("UnregisterSink", func() { Context("with a DumpSink", func() { var dumpSink *dump.DumpSink BeforeEach(func() { dumpSink = dump.NewDumpSink("appId", 1, loggertesthelper.Logger(), time.Hour, make(chan int64)) sinkManager.RegisterSink(dumpSink) }) It("clears the recent logs buffer", func() { expectedMessageString := "Some Data" expectedMessage, _ := emitter.Wrap(factories.NewLogMessage(events.LogMessage_OUT, expectedMessageString, "myApp", "App"), "origin") sinkManager.SendTo("appId", expectedMessage) Eventually(func() []*events.Envelope { return sinkManager.RecentLogsFor("appId") }).Should(HaveLen(1)) sinkManager.UnregisterSink(dumpSink) Eventually(func() []*events.Envelope {
"github.com/cloudfoundry/dropsonde/emitter" "github.com/cloudfoundry/dropsonde/factories" "github.com/cloudfoundry/loggregatorlib/loggertesthelper" "github.com/cloudfoundry/sonde-go/events" "github.com/stretchr/testify/assert" "time" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("Dump Sink", func() { It("works with one message", func() { testDump := dump.NewDumpSink("myApp", 1, loggertesthelper.Logger(), time.Second) dumpRunnerDone := make(chan struct{}) inputChan := make(chan *events.Envelope) go func() { testDump.Run(inputChan) close(dumpRunnerDone) }() logMessage, _ := emitter.Wrap(factories.NewLogMessage(events.LogMessage_OUT, "hi", "appId", "App"), "origin") inputChan <- logMessage close(inputChan) <-dumpRunnerDone