github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/metric/error_sink_collector_test.go (about) 1 package metric_test 2 3 import ( 4 "code.cloudfoundry.org/lager" 5 "github.com/pf-qiu/concourse/v6/atc/metric" 6 "github.com/pf-qiu/concourse/v6/atc/metric/metricfakes" 7 8 . "github.com/onsi/ginkgo" 9 . "github.com/onsi/gomega" 10 ) 11 12 var _ = Describe("ErrorSinkCollector", func() { 13 var ( 14 errorSinkCollector metric.ErrorSinkCollector 15 emitter *metricfakes.FakeEmitter 16 monitor *metric.Monitor 17 ) 18 19 BeforeEach(func() { 20 emitter = &metricfakes.FakeEmitter{} 21 monitor = metric.NewMonitor() 22 errorSinkCollector = metric.NewErrorSinkCollector(testLogger, monitor) 23 24 emitterFactory := &metricfakes.FakeEmitterFactory{} 25 emitterFactory.IsConfiguredReturns(true) 26 emitterFactory.NewEmitterReturns(emitter, nil) 27 monitor.RegisterEmitter(emitterFactory) 28 monitor.Initialize(testLogger, "test", map[string]string{}, 1000) 29 }) 30 31 Context("Log", func() { 32 var log lager.LogFormat 33 34 JustBeforeEach(func() { 35 errorSinkCollector.Log(log) 36 }) 37 38 Context("with message of level ERROR", func() { 39 BeforeEach(func() { 40 log = lager.LogFormat{ 41 Message: "err-msg", 42 LogLevel: lager.ERROR, 43 } 44 }) 45 46 It("emits with the message in the tags", func() { 47 Eventually(emitter.EmitCallCount).Should(BeNumerically("==", 1)) 48 _, event := emitter.EmitArgsForCall(0) 49 Expect(event.Attributes).To(HaveKeyWithValue("message", "err-msg")) 50 }) 51 52 Context("with error being from failed emission", func() { 53 BeforeEach(func() { 54 log = lager.LogFormat{ 55 Message: "message", 56 LogLevel: lager.ERROR, 57 Error: metric.ErrFailedToEmit, 58 } 59 }) 60 61 It("doesn't emit", func() { 62 Consistently(emitter.EmitCallCount).Should(BeNumerically("==", 0)) 63 }) 64 }) 65 }) 66 67 Context("with message of non-ERROR level", func() { 68 BeforeEach(func() { 69 log = lager.LogFormat{ 70 Message: "message", 71 LogLevel: lager.INFO, 72 } 73 }) 74 75 It("doesn't emit", func() { 76 Consistently(emitter.EmitCallCount).Should(BeNumerically("==", 0)) 77 }) 78 }) 79 }) 80 })