github.com/ethereum/go-ethereum@v1.16.1/metrics/counter_float_64_test.go (about)

     1  package metrics
     2  
     3  import (
     4  	"sync"
     5  	"testing"
     6  )
     7  
     8  func BenchmarkCounterFloat64(b *testing.B) {
     9  	c := NewCounterFloat64()
    10  	b.ResetTimer()
    11  	for i := 0; i < b.N; i++ {
    12  		c.Inc(1.0)
    13  	}
    14  }
    15  
    16  func BenchmarkCounterFloat64Parallel(b *testing.B) {
    17  	c := NewCounterFloat64()
    18  	b.ResetTimer()
    19  	var wg sync.WaitGroup
    20  	for i := 0; i < 10; i++ {
    21  		wg.Add(1)
    22  		go func() {
    23  			for i := 0; i < b.N; i++ {
    24  				c.Inc(1.0)
    25  			}
    26  			wg.Done()
    27  		}()
    28  	}
    29  	wg.Wait()
    30  	if have, want := c.Snapshot().Count(), 10.0*float64(b.N); have != want {
    31  		b.Fatalf("have %f want %f", have, want)
    32  	}
    33  }
    34  
    35  func TestCounterFloat64(t *testing.T) {
    36  	c := NewCounterFloat64()
    37  	if count := c.Snapshot().Count(); count != 0 {
    38  		t.Errorf("wrong count: %v", count)
    39  	}
    40  	c.Dec(1.0)
    41  	if count := c.Snapshot().Count(); count != -1.0 {
    42  		t.Errorf("wrong count: %v", count)
    43  	}
    44  	snapshot := c.Snapshot()
    45  	c.Dec(2.0)
    46  	if count := c.Snapshot().Count(); count != -3.0 {
    47  		t.Errorf("wrong count: %v", count)
    48  	}
    49  	c.Inc(1.0)
    50  	if count := c.Snapshot().Count(); count != -2.0 {
    51  		t.Errorf("wrong count: %v", count)
    52  	}
    53  	c.Inc(2.0)
    54  	if count := c.Snapshot().Count(); count != 0.0 {
    55  		t.Errorf("wrong count: %v", count)
    56  	}
    57  	if count := snapshot.Count(); count != -1.0 {
    58  		t.Errorf("snapshot count wrong: %v", count)
    59  	}
    60  	c.Inc(1.0)
    61  	c.Clear()
    62  	if count := c.Snapshot().Count(); count != 0.0 {
    63  		t.Errorf("wrong count: %v", count)
    64  	}
    65  }
    66  
    67  func TestGetOrRegisterCounterFloat64(t *testing.T) {
    68  	r := NewRegistry()
    69  	NewRegisteredCounterFloat64("foo", r).Inc(47.0)
    70  	if c := GetOrRegisterCounterFloat64("foo", r).Snapshot(); c.Count() != 47.0 {
    71  		t.Fatal(c)
    72  	}
    73  }