diff --git a/test/e2e/runner/load.go b/test/e2e/runner/load.go index 1989886b0..b4478bf6d 100644 --- a/test/e2e/runner/load.go +++ b/test/e2e/runner/load.go @@ -92,10 +92,12 @@ func loadGenerate(ctx context.Context, txCh chan<- types.Tx, testnet *e2e.Testne // is canceled. func createTxBatch(ctx context.Context, txCh chan<- types.Tx, testnet *e2e.Testnet, id []byte) { wg := &sync.WaitGroup{} + genCh := make(chan struct{}) for i := 0; i < workerPoolSize; i++ { wg.Add(1) go func() { - for i := 0; i < testnet.LoadTxBatchSize; i++ { + defer wg.Done() + for range genCh { tx, err := payload.NewBytes(&payload.Payload{ Id: id, Size: uint64(testnet.LoadTxSizeBytes), @@ -112,9 +114,16 @@ func createTxBatch(ctx context.Context, txCh chan<- types.Tx, testnet *e2e.Testn return } } - wg.Done() }() } + for i := 0; i < testnet.LoadTxBatchSize; i++ { + select { + case genCh <- struct{}{}: + case <-ctx.Done(): + break + } + } + close(genCh) wg.Wait() }