github.com/Finschia/finschia-sdk@v0.48.1/store/cachekv/bench_helper_test.go (about) 1 package cachekv_test 2 3 import "crypto/rand" 4 5 func randSlice(sliceSize int) []byte { 6 bz := make([]byte, sliceSize) 7 _, _ = rand.Read(bz) 8 return bz 9 } 10 11 func incrementByteSlice(bz []byte) { 12 for index := len(bz) - 1; index >= 0; index-- { 13 if bz[index] < 255 { 14 bz[index]++ 15 break 16 } else { 17 bz[index] = 0 18 } 19 } 20 } 21 22 // Generate many keys starting at startKey, and are in sequential order 23 func generateSequentialKeys(startKey []byte, numKeys int) [][]byte { 24 toReturn := make([][]byte, 0, numKeys) 25 cur := make([]byte, len(startKey)) 26 copy(cur, startKey) 27 for i := 0; i < numKeys; i++ { 28 newKey := make([]byte, len(startKey)) 29 copy(newKey, cur) 30 toReturn = append(toReturn, newKey) 31 incrementByteSlice(cur) 32 } 33 return toReturn 34 } 35 36 // Generate many random, unsorted keys 37 func generateRandomKeys(keySize int, numKeys int) [][]byte { 38 toReturn := make([][]byte, 0, numKeys) 39 for i := 0; i < numKeys; i++ { 40 newKey := randSlice(keySize) 41 toReturn = append(toReturn, newKey) 42 } 43 return toReturn 44 }