]> Cypherpunks repositories - gostls13.git/commitdiff
test/locklinear: deflake again
authorRuss Cox <rsc@golang.org>
Thu, 2 Mar 2017 14:24:42 +0000 (09:24 -0500)
committerRuss Cox <rsc@golang.org>
Mon, 6 Mar 2017 15:05:42 +0000 (15:05 +0000)
On overloaded machines once we get to big N, the machine slowness dominates.
But we only retry once we get to a big N.
Instead, retry for small N too, and die on the first big N that fails.

Change-Id: I3ab9cfb88832ad86e2ba1389a926045091268aeb
Reviewed-on: https://go-review.googlesource.com/37543
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
test/locklinear.go

index 3585b40d677ff2e7131e9f56d0b6c058fcff8f9d..f1e912a2a3e381baec8099012f86b4038423611a 100644 (file)
@@ -49,18 +49,19 @@ func checkLinear(typ string, tries int, f func(n int)) {
                if t1*3/2 < t2 && t2 < t1*5/2 {
                        return
                }
-               // If 2n ops run in under a second and the ratio
-               // doesn't work out, make n bigger, trying to reduce
-               // the effect that a constant amount of overhead has
-               // on the computed ratio.
-               if t2 < 1*time.Second {
-                       n *= 2
-                       continue
-               }
                // 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.
-               if fails++; fails >= 10 {
+               if fails++; fails >= 5 {
+                       // If 2n ops run in under a second and the ratio
+                       // doesn't work out, make n bigger, trying to reduce
+                       // the effect that a constant amount of overhead has
+                       // on the computed ratio.
+                       if t2 < time.Second*4/10 {
+                               fails = 0
+                               n *= 2
+                               continue
+                       }
                        panic(fmt.Sprintf("%s: too slow: %d ops: %v; %d ops: %v\n\n%s",
                                typ, n, t1, 2*n, t2, buf.String()))
                }