master
go 105 lines 1.77 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package oldmetrix
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 }