Commit b5b11bdb authored by Brad Fitzpatrick's avatar Brad Fitzpatrick

test: deflake init1.go test, tighten its bounds

Per the comment at top, this test is about whether the GC runs during
init, but it was testing more than that, and testing how much the GC
collected in a certain amount of time.

Instead, loosen this test to just see whether it ran at all and not
how well it did.

Fixes #9848

Change-Id: I31da7dd769140d7b49aa6c149a543fae6076aa5e
Reviewed-on: https://go-review.googlesource.com/4820Reviewed-by: 's avatarRick Hudson <rlh@golang.org>
Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
parent ad73dc34
......@@ -17,22 +17,30 @@ func init() {
go send(c)
<-c
const chunk = 1 << 20
memstats := new(runtime.MemStats)
runtime.ReadMemStats(memstats)
sys := memstats.Sys
b := make([]byte, chunk)
const N = 1000
const MB = 1 << 20
b := make([]byte, MB)
for i := range b {
b[i] = byte(i%10 + '0')
}
s := string(b)
for i := 0; i < 1000; i++ {
memstats := new(runtime.MemStats)
runtime.ReadMemStats(memstats)
sys, numGC := memstats.Sys, memstats.NumGC
// Generate 1,000 MB of garbage, only retaining 1 MB total.
for i := 0; i < N; i++ {
x = []byte(s)
}
// Verify that the garbage collector ran by seeing if we
// allocated fewer than N*MB bytes from the system.
runtime.ReadMemStats(memstats)
sys1 := memstats.Sys
if sys1-sys > chunk*500 {
println("allocated 1000 chunks of", chunk, "and used ", sys1-sys, "memory")
sys1, numGC1 := memstats.Sys, memstats.NumGC
if sys1-sys >= N*MB || numGC1 == numGC {
println("allocated 1000 chunks of", MB, "and used ", sys1-sys, "memory")
println("numGC went", numGC, "to", numGC)
panic("init1")
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment