diff options
author | Anton Evangelatov <anton.evangelatov@gmail.com> | 2018-02-23 17:56:08 +0800 |
---|---|---|
committer | Péter Szilágyi <peterke@gmail.com> | 2018-02-23 17:56:08 +0800 |
commit | ae9f97221a96a86e4343a5c3cc4b1db44627a2f3 (patch) | |
tree | 0154be72d0f2e1f032d129b9433d1bf3939cd8f0 /metrics/debug_test.go | |
parent | 7f74bdf8dded0e1ac3c01e043c2ed89d78f308cf (diff) | |
download | dexon-ae9f97221a96a86e4343a5c3cc4b1db44627a2f3.tar.gz dexon-ae9f97221a96a86e4343a5c3cc4b1db44627a2f3.tar.zst dexon-ae9f97221a96a86e4343a5c3cc4b1db44627a2f3.zip |
metrics: pull library and introduce ResettingTimer and InfluxDB reporter (#15910)
* go-metrics: fork library and introduce ResettingTimer and InfluxDB reporter.
* vendor: change nonsense/go-metrics to ethersphere/go-metrics
* go-metrics: add tests. move ResettingTimer logic from reporter to type.
* all, metrics: pull in metrics package in go-ethereum
* metrics/test: make sure metrics are enabled for tests
* metrics: apply gosimple rules
* metrics/exp, internal/debug: init expvar endpoint when starting pprof server
* internal/debug: tiny comment formatting fix
Diffstat (limited to 'metrics/debug_test.go')
-rw-r--r-- | metrics/debug_test.go | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/metrics/debug_test.go b/metrics/debug_test.go new file mode 100644 index 000000000..07eb86784 --- /dev/null +++ b/metrics/debug_test.go @@ -0,0 +1,48 @@ +package metrics + +import ( + "runtime" + "runtime/debug" + "testing" + "time" +) + +func BenchmarkDebugGCStats(b *testing.B) { + r := NewRegistry() + RegisterDebugGCStats(r) + b.ResetTimer() + for i := 0; i < b.N; i++ { + CaptureDebugGCStatsOnce(r) + } +} + +func TestDebugGCStatsBlocking(t *testing.T) { + if g := runtime.GOMAXPROCS(0); g < 2 { + t.Skipf("skipping TestDebugGCMemStatsBlocking with GOMAXPROCS=%d\n", g) + return + } + ch := make(chan int) + go testDebugGCStatsBlocking(ch) + var gcStats debug.GCStats + t0 := time.Now() + debug.ReadGCStats(&gcStats) + t1 := time.Now() + t.Log("i++ during debug.ReadGCStats:", <-ch) + go testDebugGCStatsBlocking(ch) + d := t1.Sub(t0) + t.Log(d) + time.Sleep(d) + t.Log("i++ during time.Sleep:", <-ch) +} + +func testDebugGCStatsBlocking(ch chan int) { + i := 0 + for { + select { + case ch <- i: + return + default: + i++ + } + } +} |