package metrics import ( "runtime" "testing" "time" "github.com/ledgerwatch/erigon-lib/common" ) func TestRuntimeMemStatsBlocking(t *testing.T) { if g := runtime.GOMAXPROCS(0); g < 2 { t.Skipf("skipping TestRuntimeMemStatsBlocking with GOMAXPROCS=%d\n", g) } ch := make(chan int) go testRuntimeMemStatsBlocking(ch) var memStats runtime.MemStats t0 := time.Now() common.ReadMemStats(&memStats) t1 := time.Now() t.Log("i++ during runtime.ReadMemStats:", <-ch) go testRuntimeMemStatsBlocking(ch) d := t1.Sub(t0) t.Log(d) time.Sleep(d) t.Log("i++ during time.Sleep:", <-ch) } func testRuntimeMemStatsBlocking(ch chan int) { i := 0 for { select { case ch <- i: return default: i++ } } }