github.com/linapex/ethereum-dpos-chinese@v0.0.0-20190316121959-b78b3a4a1ece/metrics/gauge_test.go (about)

     1  
     2  //<developer>
     3  //    <name>linapex 曹一峰</name>
     4  //    <email>linapex@163.com</email>
     5  //    <wx>superexc</wx>
     6  //    <qqgroup>128148617</qqgroup>
     7  //    <url>https://jsq.ink</url>
     8  //    <role>pku engineer</role>
     9  //    <date>2019-03-16 12:09:41</date>
    10  //</624342648789929984>
    11  
    12  package metrics
    13  
    14  import (
    15  	"fmt"
    16  	"testing"
    17  )
    18  
    19  func BenchmarkGuage(b *testing.B) {
    20  	g := NewGauge()
    21  	b.ResetTimer()
    22  	for i := 0; i < b.N; i++ {
    23  		g.Update(int64(i))
    24  	}
    25  }
    26  
    27  func TestGauge(t *testing.T) {
    28  	g := NewGauge()
    29  	g.Update(int64(47))
    30  	if v := g.Value(); 47 != v {
    31  		t.Errorf("g.Value(): 47 != %v\n", v)
    32  	}
    33  }
    34  
    35  func TestGaugeSnapshot(t *testing.T) {
    36  	g := NewGauge()
    37  	g.Update(int64(47))
    38  	snapshot := g.Snapshot()
    39  	g.Update(int64(0))
    40  	if v := snapshot.Value(); 47 != v {
    41  		t.Errorf("g.Value(): 47 != %v\n", v)
    42  	}
    43  }
    44  
    45  func TestGetOrRegisterGauge(t *testing.T) {
    46  	r := NewRegistry()
    47  	NewRegisteredGauge("foo", r).Update(47)
    48  	if g := GetOrRegisterGauge("foo", r); 47 != g.Value() {
    49  		t.Fatal(g)
    50  	}
    51  }
    52  
    53  func TestFunctionalGauge(t *testing.T) {
    54  	var counter int64
    55  	fg := NewFunctionalGauge(func() int64 {
    56  		counter++
    57  		return counter
    58  	})
    59  	fg.Value()
    60  	fg.Value()
    61  	if counter != 2 {
    62  		t.Error("counter != 2")
    63  	}
    64  }
    65  
    66  func TestGetOrRegisterFunctionalGauge(t *testing.T) {
    67  	r := NewRegistry()
    68  	NewRegisteredFunctionalGauge("foo", r, func() int64 { return 47 })
    69  	if g := GetOrRegisterGauge("foo", r); 47 != g.Value() {
    70  		t.Fatal(g)
    71  	}
    72  }
    73  
    74  func ExampleGetOrRegisterGauge() {
    75  	m := "server.bytes_sent"
    76  	g := GetOrRegisterGauge(m, nil)
    77  	g.Update(47)
    78  fmt.Println(g.Value()) //产量:47
    79  }
    80