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

     1  package metrics
     2  
     3  import "testing"
     4  
     5  func BenchmarkCounter(b *testing.B) {
     6  	c := NewCounter()
     7  	b.ResetTimer()
     8  	for i := 0; i < b.N; i++ {
     9  		c.Inc(1)
    10  	}
    11  }
    12  
    13  func TestCounterClear(t *testing.T) {
    14  	c := NewCounter()
    15  	c.Inc(1)
    16  	c.Clear()
    17  	if count := c.Snapshot().Count(); count != 0 {
    18  		t.Errorf("c.Count(): 0 != %v\n", count)
    19  	}
    20  }
    21  
    22  func TestCounter(t *testing.T) {
    23  	c := NewCounter()
    24  	if count := c.Snapshot().Count(); count != 0 {
    25  		t.Errorf("wrong count: %v", count)
    26  	}
    27  	c.Dec(1)
    28  	if count := c.Snapshot().Count(); count != -1 {
    29  		t.Errorf("wrong count: %v", count)
    30  	}
    31  	c.Dec(2)
    32  	if count := c.Snapshot().Count(); count != -3 {
    33  		t.Errorf("wrong count: %v", count)
    34  	}
    35  	c.Inc(1)
    36  	if count := c.Snapshot().Count(); count != -2 {
    37  		t.Errorf("wrong count: %v", count)
    38  	}
    39  	c.Inc(2)
    40  	if count := c.Snapshot().Count(); count != 0 {
    41  		t.Errorf("wrong count: %v", count)
    42  	}
    43  }
    44  
    45  func TestCounterSnapshot(t *testing.T) {
    46  	c := NewCounter()
    47  	c.Inc(1)
    48  	snapshot := c.Snapshot()
    49  	c.Inc(1)
    50  	if count := snapshot.Count(); count != 1 {
    51  		t.Errorf("c.Count(): 1 != %v\n", count)
    52  	}
    53  }
    54  
    55  func TestGetOrRegisterCounter(t *testing.T) {
    56  	r := NewRegistry()
    57  	NewRegisteredCounter("foo", r).Inc(47)
    58  	if c := GetOrRegisterCounter("foo", r).Snapshot(); c.Count() != 47 {
    59  		t.Fatal(c)
    60  	}
    61  }