diff options
author | Keith Randall <khr@golang.org> | 2014-09-09 14:22:58 -0700 |
---|---|---|
committer | Keith Randall <khr@golang.org> | 2014-09-09 14:22:58 -0700 |
commit | 251daf8650218ee2fce297280016e696d859f780 (patch) | |
tree | b6fe87b922094e4a57429cd6d0dc39b3fe5dacac /src/runtime/map_test.go | |
parent | f9829e92e196cdae33e256dd82c690c7beba76ed (diff) | |
download | go-251daf8650218ee2fce297280016e696d859f780.tar.gz go-251daf8650218ee2fce297280016e696d859f780.zip |
runtime: map iterators: always use intrabucket randomess
Fixes #8688
LGTM=rsc
R=golang-codereviews, bradfitz, rsc, khr
CC=golang-codereviews
https://golang.org/cl/135660043
Diffstat (limited to 'src/runtime/map_test.go')
-rw-r--r-- | src/runtime/map_test.go | 43 |
1 files changed, 23 insertions, 20 deletions
diff --git a/src/runtime/map_test.go b/src/runtime/map_test.go index 2e87a94a03..e2f1481ad5 100644 --- a/src/runtime/map_test.go +++ b/src/runtime/map_test.go @@ -412,30 +412,33 @@ func TestMapNanGrowIterator(t *testing.T) { func TestMapIterOrder(t *testing.T) { for _, n := range [...]int{3, 7, 9, 15} { - // Make m be {0: true, 1: true, ..., n-1: true}. - m := make(map[int]bool) - for i := 0; i < n; i++ { - m[i] = true - } - // Check that iterating over the map produces at least two different orderings. - ord := func() []int { - var s []int - for key := range m { - s = append(s, key) + for i := 0; i < 1000; i++ { + // Make m be {0: true, 1: true, ..., n-1: true}. + m := make(map[int]bool) + for i := 0; i < n; i++ { + m[i] = true } - return s - } - first := ord() - ok := false - for try := 0; try < 100; try++ { - if !reflect.DeepEqual(first, ord()) { - ok = true + // Check that iterating over the map produces at least two different orderings. + ord := func() []int { + var s []int + for key := range m { + s = append(s, key) + } + return s + } + first := ord() + ok := false + for try := 0; try < 100; try++ { + if !reflect.DeepEqual(first, ord()) { + ok = true + break + } + } + if !ok { + t.Errorf("Map with n=%d elements had consistent iteration order: %v", n, first) break } } - if !ok { - t.Errorf("Map with n=%d elements had consistent iteration order: %v", n, first) - } } } |