mirror of
https://github.com/golang/go
synced 2024-11-05 18:36:08 +00:00
test: deflake locklinear again
Fixes #19276. Change-Id: I64f8f80331d09956b6698c0b004ed7f7d70857fc Reviewed-on: https://go-review.googlesource.com/39591 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
This commit is contained in:
parent
10991fd5af
commit
92cf05daf3
1 changed files with 11 additions and 3 deletions
|
@ -38,17 +38,25 @@ func checkLinear(typ string, tries int, f func(n int)) {
|
|||
n := tries
|
||||
fails := 0
|
||||
var buf bytes.Buffer
|
||||
inversions := 0
|
||||
for {
|
||||
t1 := timeF(n)
|
||||
t2 := timeF(2 * n)
|
||||
if debug {
|
||||
println(n, t1.String(), 2*n, t2.String())
|
||||
}
|
||||
fmt.Fprintf(&buf, "%d %v %d %v\n", n, t1, 2*n, t2)
|
||||
// should be 2x (linear); allow up to 2.5x
|
||||
if t1*3/2 < t2 && t2 < t1*5/2 {
|
||||
fmt.Fprintf(&buf, "%d %v %d %v (%.1fX)\n", n, t1, 2*n, t2, float64(t2)/float64(t1))
|
||||
// should be 2x (linear); allow up to 3x
|
||||
if t1*3/2 < t2 && t2 < t1*3 {
|
||||
return
|
||||
}
|
||||
if t2 < t1 {
|
||||
if inversions++; inversions >= 5 {
|
||||
// The system must be overloaded (some builders). Give up.
|
||||
return
|
||||
}
|
||||
continue // try again; don't increment fails
|
||||
}
|
||||
// Once the test runs long enough for n ops,
|
||||
// try to get the right ratio at least once.
|
||||
// If many in a row all fail, give up.
|
||||
|
|
Loading…
Reference in a new issue