github.com/netdata/go.d.plugin@v0.58.1/pkg/metrics/summary_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 TestNewSummary(t *testing.T) { 12 s := NewSummary().(*summary) 13 assert.EqualValues(t, 0, s.count) 14 assert.Equal(t, 0.0, s.sum) 15 s.Observe(3.14) 16 assert.Equal(t, 3.14, s.min) 17 assert.Equal(t, 3.14, s.max) 18 } 19 20 func TestSummary_WriteTo(t *testing.T) { 21 s := NewSummary() 22 23 m1 := map[string]int64{} 24 s.WriteTo(m1, "pi", 100, 1) 25 assert.Len(t, m1, 2) 26 assert.Contains(t, m1, "pi_count") 27 assert.Contains(t, m1, "pi_sum") 28 assert.EqualValues(t, 0, m1["pi_count"]) 29 assert.EqualValues(t, 0, m1["pi_sum"]) 30 31 s.Observe(3.14) 32 s.Observe(2.71) 33 s.Observe(-10) 34 35 m2 := map[string]int64{} 36 s.WriteTo(m1, "pi", 100, 1) 37 s.WriteTo(m2, "pi", 100, 1) 38 assert.Equal(t, m1, m2) 39 assert.Len(t, m1, 5) 40 assert.EqualValues(t, 3, m1["pi_count"]) 41 assert.EqualValues(t, -415, m1["pi_sum"]) 42 assert.EqualValues(t, -1000, m1["pi_min"]) 43 assert.EqualValues(t, 314, m1["pi_max"]) 44 assert.EqualValues(t, -138, m1["pi_avg"]) 45 46 s.Reset() 47 s.WriteTo(m1, "pi", 100, 1) 48 assert.Len(t, m1, 2) 49 assert.Contains(t, m1, "pi_count") 50 assert.Contains(t, m1, "pi_sum") 51 assert.EqualValues(t, 0, m1["pi_count"]) 52 assert.EqualValues(t, 0, m1["pi_sum"]) 53 } 54 55 func TestSummary_Reset(t *testing.T) { 56 s := NewSummary().(*summary) 57 s.Observe(1) 58 s.Reset() 59 assert.EqualValues(t, 0, s.count) 60 } 61 62 func BenchmarkSummary_Observe(b *testing.B) { 63 s := NewSummary() 64 for i := 0; i < b.N; i++ { 65 s.Observe(2.5) 66 } 67 } 68 69 func BenchmarkSummary_WriteTo(b *testing.B) { 70 s := NewSummary() 71 s.Observe(2.5) 72 s.Observe(3.5) 73 s.Observe(4.5) 74 m := map[string]int64{} 75 for i := 0; i < b.N; i++ { 76 s.WriteTo(m, "pi", 100, 1) 77 } 78 }