mirror of https://github.com/golang/go.git
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/4820 Reviewed-by: Rick Hudson <rlh@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
This commit is contained in:
parent
ad73dc349b
commit
b5b11bdbc6
|
|
@ -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")
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue