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  })