Browse Source

e2e: use more simple strings for generated transactions (#7513)

pull/7516/head
Sam Kleinman 3 years ago
committed by GitHub
parent
commit
8564c5079f
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 14 additions and 13 deletions
  1. +8
    -3
      libs/rand/random.go
  2. +1
    -1
      test/e2e/generator/generate.go
  3. +1
    -1
      test/e2e/pkg/manifest.go
  4. +1
    -1
      test/e2e/pkg/testnet.go
  5. +3
    -7
      test/e2e/runner/load.go

+ 8
- 3
libs/rand/random.go View File

@ -10,15 +10,20 @@ const (
// Str constructs a random alphanumeric string of given length
// from math/rand's global default Source.
func Str(length int) string {
func Str(length int) string { return buildString(length, mrand.Int63) }
// StrFromSource produces a random string of a specified length from
// the specified random source.
func StrFromSource(r *mrand.Rand, length int) string { return buildString(length, r.Int63) }
func buildString(length int, picker func() int64) string {
if length <= 0 {
return ""
}
chars := make([]byte, 0, length)
for {
// nolint:gosec // G404: Use of weak random number generator
val := mrand.Int63()
val := picker()
for i := 0; i < 10; i++ {
v := int(val & 0x3f) // rightmost 6 bits
if v >= 62 { // only 62 characters in strChars


+ 1
- 1
test/e2e/generator/generate.go View File

@ -113,7 +113,7 @@ func generateTestnet(r *rand.Rand, opt map[string]interface{}) (e2e.Manifest, er
KeyType: keyType.Choose(r).(string),
Evidence: evidence.Choose(r).(int),
QueueType: opt["queueType"].(string),
TxSize: int64(txSize.Choose(r).(int)),
TxSize: txSize.Choose(r).(int),
}
var numSeeds, numValidators, numFulls, numLightClients int


+ 1
- 1
test/e2e/pkg/manifest.go View File

@ -64,7 +64,7 @@ type Manifest struct {
QueueType string `toml:"queue_type"`
// Number of bytes per tx. Default is 1kb (1024)
TxSize int64
TxSize int
// ABCIProtocol specifies the protocol used to communicate with the ABCI
// application: "unix", "tcp", "grpc", or "builtin". Defaults to builtin.


+ 1
- 1
test/e2e/pkg/testnet.go View File

@ -70,7 +70,7 @@ type Testnet struct {
KeyType string
Evidence int
LogLevel string
TxSize int64
TxSize int
ABCIProtocol string
}


+ 3
- 7
test/e2e/runner/load.go View File

@ -7,6 +7,7 @@ import (
"math/rand"
"time"
tmrand "github.com/tendermint/tendermint/libs/rand"
rpchttp "github.com/tendermint/tendermint/rpc/client/http"
e2e "github.com/tendermint/tendermint/test/e2e/pkg"
"github.com/tendermint/tendermint/types"
@ -85,7 +86,7 @@ func Load(ctx context.Context, r *rand.Rand, testnet *e2e.Testnet) error {
// generation is primarily the result of backpressure from the
// broadcast transaction, though there is still some timer-based
// limiting.
func loadGenerate(ctx context.Context, r *rand.Rand, chTx chan<- types.Tx, txSize int64, networkSize int) {
func loadGenerate(ctx context.Context, r *rand.Rand, chTx chan<- types.Tx, txSize int, networkSize int) {
timer := time.NewTimer(0)
defer timer.Stop()
defer close(chTx)
@ -101,12 +102,7 @@ func loadGenerate(ctx context.Context, r *rand.Rand, chTx chan<- types.Tx, txSiz
// space, while reduce the size of the data in the app.
id := r.Int63n(100)
bz := make([]byte, txSize)
_, err := r.Read(bz)
if err != nil {
panic(fmt.Errorf("failed to read random bytes: %w", err))
}
tx := types.Tx(fmt.Sprintf("load-%X=%x", id, bz))
tx := types.Tx(fmt.Sprintf("load-%X=%s", id, tmrand.StrFromSource(r, txSize)))
select {
case <-ctx.Done():


Loading…
Cancel
Save