45 lines
1001 B
Go
45 lines
1001 B
Go
package cachekv_test
|
|
|
|
import "crypto/rand"
|
|
|
|
func randSlice(sliceSize int) []byte {
|
|
bz := make([]byte, sliceSize)
|
|
_, _ = rand.Read(bz)
|
|
return bz
|
|
}
|
|
|
|
func incrementByteSlice(bz []byte) {
|
|
for index := len(bz) - 1; index >= 0; index-- {
|
|
if bz[index] < 255 {
|
|
bz[index]++
|
|
break
|
|
} else {
|
|
bz[index] = 0
|
|
}
|
|
}
|
|
}
|
|
|
|
// Generate many keys starting at startKey, and are in sequential order
|
|
func generateSequentialKeys(startKey []byte, numKeys int) [][]byte {
|
|
toReturn := make([][]byte, 0, numKeys)
|
|
cur := make([]byte, len(startKey))
|
|
copy(cur, startKey)
|
|
for i := 0; i < numKeys; i++ {
|
|
newKey := make([]byte, len(startKey))
|
|
copy(newKey, cur)
|
|
toReturn = append(toReturn, newKey)
|
|
incrementByteSlice(cur)
|
|
}
|
|
return toReturn
|
|
}
|
|
|
|
// Generate many random, unsorted keys
|
|
func generateRandomKeys(keySize int, numKeys int) [][]byte {
|
|
toReturn := make([][]byte, 0, numKeys)
|
|
for i := 0; i < numKeys; i++ {
|
|
newKey := randSlice(keySize)
|
|
toReturn = append(toReturn, newKey)
|
|
}
|
|
return toReturn
|
|
}
|