aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosh Bleecher Snyder <josharian@gmail.com>2016-12-28 14:09:56 -0800
committerJosh Bleecher Snyder <josharian@gmail.com>2016-12-28 14:09:56 -0800
commit18ced60c946005c527c4df6057ce2dc95df05a60 (patch)
tree5b0e75f887b17a32da522a0716b09b701d46d309
parentClean up timeout tests. (diff)
downloaddedo-18ced60c946005c527c4df6057ce2dc95df05a60.tar.gz
dedo-18ced60c946005c527c4df6057ce2dc95df05a60.tar.xz
Ensure that keys generated by testing/quick are unique
Quick seed 21691 used to generate duplicate keys, which caused some Puts of values to overwrite other values, causing spurious test failures. Fixes #629.
-rw-r--r--quick_test.go10
1 files changed, 9 insertions, 1 deletions
diff --git a/quick_test.go b/quick_test.go
index 4da5817..9e27792 100644
--- a/quick_test.go
+++ b/quick_test.go
@@ -50,9 +50,17 @@ func (t testdata) Less(i, j int) bool { return bytes.Compare(t[i].Key, t[j].Key)
func (t testdata) Generate(rand *rand.Rand, size int) reflect.Value {
n := rand.Intn(qmaxitems-1) + 1
items := make(testdata, n)
+ used := make(map[string]bool)
for i := 0; i < n; i++ {
item := &items[i]
- item.Key = randByteSlice(rand, 1, qmaxksize)
+ // Ensure that keys are unique by looping until we find one that we have not already used.
+ for {
+ item.Key = randByteSlice(rand, 1, qmaxksize)
+ if !used[string(item.Key)] {
+ used[string(item.Key)] = true
+ break
+ }
+ }
item.Value = randByteSlice(rand, 0, qmaxvsize)
}
return reflect.ValueOf(items)