github.com/aporeto-inc/trireme-lib@v10.358.0+incompatible/controller/pkg/counters/counters_test.go (about)

     1  package counters
     2  
     3  import (
     4  	"errors"
     5  	"testing"
     6  
     7  	. "github.com/smartystreets/goconvey/convey"
     8  )
     9  
    10  func Test_NewCounters(t *testing.T) {
    11  
    12  	Convey("When I create new error counters", t, func() {
    13  		ec := NewCounters()
    14  		So(ec, ShouldNotBeNil)
    15  		So(len(ec.counters), ShouldEqual, errMax+1)
    16  	})
    17  }
    18  
    19  func Test_CounterError(t *testing.T) {
    20  
    21  	Convey("When I create new error counters", t, func() {
    22  		ec := NewCounters()
    23  		So(ec, ShouldNotBeNil)
    24  		So(len(ec.counters), ShouldEqual, errMax+1)
    25  
    26  		Convey("When I increment counter", func() {
    27  			err := ec.CounterError(ErrInvalidProtocol, errors.New("unknown protocol"))
    28  			ec.IncrementCounter(ErrInvalidProtocol)
    29  			So(err, ShouldResemble, errors.New("unknown protocol"))
    30  			So(ec.counters[ErrInvalidProtocol], ShouldEqual, 2)
    31  		})
    32  	})
    33  }
    34  
    35  func Test_GetErrorCounter(t *testing.T) {
    36  
    37  	Convey("When I create new error counters", t, func() {
    38  		ec := NewCounters()
    39  		So(ec, ShouldNotBeNil)
    40  		So(len(ec.counters), ShouldEqual, errMax+1)
    41  
    42  		Convey("When I increment counter and get error", func() {
    43  			err := ec.CounterError(ErrInvalidProtocol, errors.New("unknown protocol"))
    44  			ec.IncrementCounter(ErrInvalidProtocol)
    45  			ec.IncrementCounter(ErrInvalidProtocol)
    46  
    47  			So(err, ShouldResemble, errors.New("unknown protocol"))
    48  			So(ec.counters[ErrInvalidProtocol], ShouldEqual, 3)
    49  
    50  			c := ec.GetErrorCounters()
    51  
    52  			So(len(c), ShouldEqual, errMax)
    53  			So(c[ErrInvalidProtocol], ShouldEqual, 3)
    54  			So(ec.counters[ErrInvalidProtocol], ShouldEqual, 0)
    55  		})
    56  	})
    57  }