github.com/yinchengtsinghua/golang-Eos-dpos-Ethereum@v0.0.0-20190121132951-92cc4225ed8e/metrics/gauge_test.go (about)

     1  
     2  //此源码被清华学神尹成大魔王专业翻译分析并修改
     3  //尹成QQ77025077
     4  //尹成微信18510341407
     5  //尹成所在QQ群721929980
     6  //尹成邮箱 yinc13@mails.tsinghua.edu.cn
     7  //尹成毕业于清华大学,微软区块链领域全球最有价值专家
     8  //https://mvp.microsoft.com/zh-cn/PublicProfile/4033620
     9  package metrics
    10  
    11  import (
    12  	"fmt"
    13  	"testing"
    14  )
    15  
    16  func BenchmarkGuage(b *testing.B) {
    17  	g := NewGauge()
    18  	b.ResetTimer()
    19  	for i := 0; i < b.N; i++ {
    20  		g.Update(int64(i))
    21  	}
    22  }
    23  
    24  func TestGauge(t *testing.T) {
    25  	g := NewGauge()
    26  	g.Update(int64(47))
    27  	if v := g.Value(); 47 != v {
    28  		t.Errorf("g.Value(): 47 != %v\n", v)
    29  	}
    30  }
    31  
    32  func TestGaugeSnapshot(t *testing.T) {
    33  	g := NewGauge()
    34  	g.Update(int64(47))
    35  	snapshot := g.Snapshot()
    36  	g.Update(int64(0))
    37  	if v := snapshot.Value(); 47 != v {
    38  		t.Errorf("g.Value(): 47 != %v\n", v)
    39  	}
    40  }
    41  
    42  func TestGetOrRegisterGauge(t *testing.T) {
    43  	r := NewRegistry()
    44  	NewRegisteredGauge("foo", r).Update(47)
    45  	if g := GetOrRegisterGauge("foo", r); 47 != g.Value() {
    46  		t.Fatal(g)
    47  	}
    48  }
    49  
    50  func TestFunctionalGauge(t *testing.T) {
    51  	var counter int64
    52  	fg := NewFunctionalGauge(func() int64 {
    53  		counter++
    54  		return counter
    55  	})
    56  	fg.Value()
    57  	fg.Value()
    58  	if counter != 2 {
    59  		t.Error("counter != 2")
    60  	}
    61  }
    62  
    63  func TestGetOrRegisterFunctionalGauge(t *testing.T) {
    64  	r := NewRegistry()
    65  	NewRegisteredFunctionalGauge("foo", r, func() int64 { return 47 })
    66  	if g := GetOrRegisterGauge("foo", r); 47 != g.Value() {
    67  		t.Fatal(g)
    68  	}
    69  }
    70  
    71  func ExampleGetOrRegisterGauge() {
    72  	m := "server.bytes_sent"
    73  	g := GetOrRegisterGauge(m, nil)
    74  	g.Update(47)
    75  fmt.Println(g.Value()) //产量:47
    76  }