summaryrefslogtreecommitdiffstats
path: root/src/go/collectors/go.d.plugin/pkg/metrics/summary_test.go
blob: b98218369ffa41ae962edb726768834b4fc1389f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
// SPDX-License-Identifier: GPL-3.0-or-later

package metrics

import (
	"testing"

	"github.com/stretchr/testify/assert"
)

func TestNewSummary(t *testing.T) {
	s := NewSummary().(*summary)
	assert.EqualValues(t, 0, s.count)
	assert.Equal(t, 0.0, s.sum)
	s.Observe(3.14)
	assert.Equal(t, 3.14, s.min)
	assert.Equal(t, 3.14, s.max)
}

func TestSummary_WriteTo(t *testing.T) {
	s := NewSummary()

	m1 := map[string]int64{}
	s.WriteTo(m1, "pi", 100, 1)
	assert.Len(t, m1, 2)
	assert.Contains(t, m1, "pi_count")
	assert.Contains(t, m1, "pi_sum")
	assert.EqualValues(t, 0, m1["pi_count"])
	assert.EqualValues(t, 0, m1["pi_sum"])

	s.Observe(3.14)
	s.Observe(2.71)
	s.Observe(-10)

	m2 := map[string]int64{}
	s.WriteTo(m1, "pi", 100, 1)
	s.WriteTo(m2, "pi", 100, 1)
	assert.Equal(t, m1, m2)
	assert.Len(t, m1, 5)
	assert.EqualValues(t, 3, m1["pi_count"])
	assert.EqualValues(t, -415, m1["pi_sum"])
	assert.EqualValues(t, -1000, m1["pi_min"])
	assert.EqualValues(t, 314, m1["pi_max"])
	assert.EqualValues(t, -138, m1["pi_avg"])

	s.Reset()
	s.WriteTo(m1, "pi", 100, 1)
	assert.Len(t, m1, 2)
	assert.Contains(t, m1, "pi_count")
	assert.Contains(t, m1, "pi_sum")
	assert.EqualValues(t, 0, m1["pi_count"])
	assert.EqualValues(t, 0, m1["pi_sum"])
}

func TestSummary_Reset(t *testing.T) {
	s := NewSummary().(*summary)
	s.Observe(1)
	s.Reset()
	assert.EqualValues(t, 0, s.count)
}

func BenchmarkSummary_Observe(b *testing.B) {
	s := NewSummary()
	for i := 0; i < b.N; i++ {
		s.Observe(2.5)
	}
}

func BenchmarkSummary_WriteTo(b *testing.B) {
	s := NewSummary()
	s.Observe(2.5)
	s.Observe(3.5)
	s.Observe(4.5)
	m := map[string]int64{}
	for i := 0; i < b.N; i++ {
		s.WriteTo(m, "pi", 100, 1)
	}
}