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  }