mirror of
https://github.com/golang/go
synced 2024-11-17 15:14:42 -07:00
bytes: deflake TestGrow by using testing.AllocsPerRun
Fixes #36695
Change-Id: I4392246015252018b49f321a5a839cc68cc611d7
GitHub-Last-Rev: c2fb1f7ddb
GitHub-Pull-Request: golang/go#36732
Reviewed-on: https://go-review.googlesource.com/c/go/+/216237
Reviewed-by: Bryan C. Mills <bcmills@google.com>
Run-TryBot: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
025a4faf5f
commit
75619d199f
@ -8,7 +8,6 @@ import (
|
|||||||
. "bytes"
|
. "bytes"
|
||||||
"io"
|
"io"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"runtime"
|
|
||||||
"testing"
|
"testing"
|
||||||
"unicode/utf8"
|
"unicode/utf8"
|
||||||
)
|
)
|
||||||
@ -495,20 +494,20 @@ func TestGrow(t *testing.T) {
|
|||||||
x := []byte{'x'}
|
x := []byte{'x'}
|
||||||
y := []byte{'y'}
|
y := []byte{'y'}
|
||||||
tmp := make([]byte, 72)
|
tmp := make([]byte, 72)
|
||||||
for _, startLen := range []int{0, 100, 1000, 10000, 100000} {
|
for _, growLen := range []int{0, 100, 1000, 10000, 100000} {
|
||||||
xBytes := Repeat(x, startLen)
|
for _, startLen := range []int{0, 100, 1000, 10000, 100000} {
|
||||||
for _, growLen := range []int{0, 100, 1000, 10000, 100000} {
|
xBytes := Repeat(x, startLen)
|
||||||
|
|
||||||
buf := NewBuffer(xBytes)
|
buf := NewBuffer(xBytes)
|
||||||
// If we read, this affects buf.off, which is good to test.
|
// If we read, this affects buf.off, which is good to test.
|
||||||
readBytes, _ := buf.Read(tmp)
|
readBytes, _ := buf.Read(tmp)
|
||||||
buf.Grow(growLen)
|
|
||||||
yBytes := Repeat(y, growLen)
|
yBytes := Repeat(y, growLen)
|
||||||
|
allocs := testing.AllocsPerRun(100, func() {
|
||||||
|
buf.Grow(growLen)
|
||||||
|
buf.Write(yBytes)
|
||||||
|
})
|
||||||
// Check no allocation occurs in write, as long as we're single-threaded.
|
// Check no allocation occurs in write, as long as we're single-threaded.
|
||||||
var m1, m2 runtime.MemStats
|
if allocs != 0 {
|
||||||
runtime.ReadMemStats(&m1)
|
|
||||||
buf.Write(yBytes)
|
|
||||||
runtime.ReadMemStats(&m2)
|
|
||||||
if runtime.GOMAXPROCS(-1) == 1 && m1.Mallocs != m2.Mallocs {
|
|
||||||
t.Errorf("allocation occurred during write")
|
t.Errorf("allocation occurred during write")
|
||||||
}
|
}
|
||||||
// Check that buffer has correct data.
|
// Check that buffer has correct data.
|
||||||
|
Loading…
Reference in New Issue
Block a user