runtime_test.go 741 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package metrics
  2. import (
  3. "runtime"
  4. "testing"
  5. "time"
  6. )
  7. func BenchmarkRuntimeMemStats(b *testing.B) {
  8. r := NewRegistry()
  9. RegisterRuntimeMemStats(r)
  10. b.ResetTimer()
  11. for i := 0; i < b.N; i++ {
  12. CaptureRuntimeMemStatsOnce(r)
  13. }
  14. }
  15. func TestRuntimeMemStatsBlocking(t *testing.T) {
  16. ch := make(chan int)
  17. go testRuntimeMemStatsBlocking(ch)
  18. //runtime.Gosched()
  19. var memStats runtime.MemStats
  20. t0 := time.Now()
  21. runtime.ReadMemStats(&memStats)
  22. t1 := time.Now()
  23. t.Log("i++ during runtime.ReadMemStats:", <-ch)
  24. go testRuntimeMemStatsBlocking(ch)
  25. time.Sleep(t1.Sub(t0))
  26. t.Log("i++ during time.Sleep:", <-ch)
  27. }
  28. func testRuntimeMemStatsBlocking(ch chan int) {
  29. i := 0
  30. for {
  31. select {
  32. case ch <- i:
  33. return
  34. default:
  35. i++
  36. }
  37. }
  38. }