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  }