github.com/netdata/go.d.plugin@v0.58.1/pkg/metrics/counter_test.go (about)

     1  // SPDX-License-Identifier: GPL-3.0-or-later
     2  
     3  package metrics
     4  
     5  import (
     6  	"testing"
     7  
     8  	"github.com/stretchr/testify/assert"
     9  )
    10  
    11  func TestCounter_WriteTo(t *testing.T) {
    12  	c := Counter{}
    13  	c.Inc()
    14  	c.Inc()
    15  	c.Inc()
    16  	c.Add(0.14)
    17  	m := map[string]int64{}
    18  	c.WriteTo(m, "pi", 100, 1)
    19  	assert.Len(t, m, 1)
    20  	assert.EqualValues(t, 314, m["pi"])
    21  }
    22  
    23  func TestCounterVec_WriteTo(t *testing.T) {
    24  	c := NewCounterVec()
    25  	c.Get("foo").Inc()
    26  	c.Get("foo").Inc()
    27  	c.Get("bar").Inc()
    28  	c.Get("bar").Add(0.14)
    29  
    30  	m := map[string]int64{}
    31  	c.WriteTo(m, "pi", 100, 1)
    32  	assert.Len(t, m, 2)
    33  	assert.EqualValues(t, 200, m["pi_foo"])
    34  	assert.EqualValues(t, 114, m["pi_bar"])
    35  }
    36  
    37  func TestCounter_Inc(t *testing.T) {
    38  	c := Counter{}
    39  	c.Inc()
    40  	assert.Equal(t, 1.0, c.Value())
    41  	c.Inc()
    42  	assert.Equal(t, 2.0, c.Value())
    43  }
    44  
    45  func TestCounter_Add(t *testing.T) {
    46  	c := Counter{}
    47  	c.Add(3.14)
    48  	assert.InDelta(t, 3.14, c.Value(), 0.0001)
    49  	c.Add(2)
    50  	assert.InDelta(t, 5.14, c.Value(), 0.0001)
    51  	assert.Panics(t, func() {
    52  		c.Add(-1)
    53  	})
    54  }
    55  
    56  func BenchmarkCounter_Add(b *testing.B) {
    57  	benchmarks := []struct {
    58  		name  string
    59  		value float64
    60  	}{
    61  		{"int", 1},
    62  		{"float", 3.14},
    63  	}
    64  	for _, bm := range benchmarks {
    65  		b.Run(bm.name, func(b *testing.B) {
    66  			var c Counter
    67  			for i := 0; i < b.N; i++ {
    68  				c.Add(bm.value)
    69  			}
    70  		})
    71  	}
    72  }
    73  
    74  func BenchmarkCounter_Inc(b *testing.B) {
    75  	var c Counter
    76  	for i := 0; i < b.N; i++ {
    77  		c.Inc()
    78  	}
    79  }
    80  
    81  func BenchmarkCounterVec_Inc(b *testing.B) {
    82  	c := NewCounterVec()
    83  	for i := 0; i < b.N; i++ {
    84  		c.Get("foo").Inc()
    85  	}
    86  }
    87  
    88  func BenchmarkCounter_Value(b *testing.B) {
    89  	var c Counter
    90  	c.Inc()
    91  	c.Add(3.14)
    92  	for i := 0; i < b.N; i++ {
    93  		c.Value()
    94  	}
    95  }
    96  
    97  func BenchmarkCounter_WriteTo(b *testing.B) {
    98  	var c Counter
    99  	c.Inc()
   100  	c.Add(3.14)
   101  	m := map[string]int64{}
   102  	for i := 0; i < b.N; i++ {
   103  		c.WriteTo(m, "pi", 100, 1)
   104  	}
   105  }