From ee280ba16a49eff48852bb26e22d5509010fa13e Mon Sep 17 00:00:00 2001 From: Uday Patil Date: Wed, 10 Sep 2025 11:18:48 -0500 Subject: [PATCH 1/9] save txs to file --- config/settings.go | 5 +++ main.go | 30 +++++++++------ profiles/conflict.json | 30 +++++++++++++++ sender/writer.go | 86 ++++++++++++++++++++++++++++++++++++++++++ sender/writer_test.go | 55 +++++++++++++++++++++++++++ 5 files changed, 195 insertions(+), 11 deletions(-) create mode 100644 profiles/conflict.json create mode 100644 sender/writer.go create mode 100644 sender/writer_test.go diff --git a/config/settings.go b/config/settings.go index 9224072..80df3ae 100644 --- a/config/settings.go +++ b/config/settings.go @@ -24,6 +24,7 @@ type Settings struct { Prewarm bool `json:"prewarm,omitempty"` RampUp bool `json:"rampUp,omitempty"` ReportPath string `json:"reportPath,omitempty"` + TxsDir string `json:"txsDir,omitempty"` } // DefaultSettings returns the default configuration values @@ -41,6 +42,7 @@ func DefaultSettings() Settings { Prewarm: false, RampUp: false, ReportPath: "", + TxsDir: "", } } @@ -60,6 +62,7 @@ func InitializeViper(cmd *cobra.Command) error { "workers": "workers", "rampUp": "ramp-up", "reportPath": "report-path", + "txsDir": "txs-dir", } for viperKey, flagName := range flagBindings { @@ -82,6 +85,7 @@ func InitializeViper(cmd *cobra.Command) error { viper.SetDefault("workers", defaults.Workers) viper.SetDefault("rampUp", defaults.RampUp) viper.SetDefault("reportPath", defaults.ReportPath) + viper.SetDefault("txsDir", defaults.TxsDir) return nil } @@ -120,5 +124,6 @@ func ResolveSettings() Settings { Prewarm: viper.GetBool("prewarm"), RampUp: viper.GetBool("rampUp"), ReportPath: viper.GetString("reportPath"), + TxsDir: viper.GetString("txsDir"), } } diff --git a/main.go b/main.go index 67111bc..0ab793d 100644 --- a/main.go +++ b/main.go @@ -65,6 +65,7 @@ func init() { rootCmd.Flags().String("metricsListenAddr", "0.0.0.0:9090", "The ip:port on which to export prometheus metrics.") rootCmd.Flags().Bool("ramp-up", false, "Ramp up loadtest") rootCmd.Flags().String("report-path", "", "Path to save the report") + rootCmd.Flags().String("txs-dir", "", "Path to save the transactions") // Initialize Viper with proper error handling if err := config.InitializeViper(rootCmd); err != nil { @@ -169,12 +170,6 @@ func runLoadTest(ctx context.Context, cmd *cobra.Command, args []string) error { sharedLimiter = rate.NewLimiter(rate.Inf, 1) } - // Create the sender from the config struct - snd, err := sender.NewShardedSender(cfg, settings.BufferSize, settings.Workers, sharedLimiter) - if err != nil { - return fmt.Errorf("failed to create sender: %w", err) - } - // Create and start block collector if endpoints are available var blockCollector *stats.BlockCollector if len(cfg.Endpoints) > 0 && settings.TrackBlocks { @@ -207,6 +202,12 @@ func runLoadTest(ctx context.Context, cmd *cobra.Command, args []string) error { }) } + // Create the sender from the config struct + snd, err := sender.NewShardedSender(cfg, settings.BufferSize, settings.Workers, sharedLimiter) + if err != nil { + return fmt.Errorf("failed to create sender: %w", err) + } + // Enable dry-run mode in sender if specified if settings.DryRun { snd.SetDryRun(true) @@ -225,7 +226,13 @@ func runLoadTest(ctx context.Context, cmd *cobra.Command, args []string) error { snd.SetStatsCollector(collector, logger) // Create dispatcher - dispatcher := sender.NewDispatcher(gen, snd) + var dispatcher *sender.Dispatcher + if settings.TxsDir != "" { + writer := sender.NewTxsWriter(10_000_000, settings.TxsDir) + dispatcher = sender.NewDispatcher(gen, writer) + } else { + dispatcher = sender.NewDispatcher(gen, snd) + } // Set statistics collector for dispatcher dispatcher.SetStatsCollector(collector) @@ -239,10 +246,11 @@ func runLoadTest(ctx context.Context, cmd *cobra.Command, args []string) error { log.Printf("📝 Prewarm mode: Accounts will be prewarmed") } - // Start the sender (starts all workers) - s.SpawnBgNamed("sender", func() error { return snd.Run(ctx) }) - log.Printf("✅ Connected to %d endpoints", snd.GetNumShards()) - + if settings.TxsDir == "" { + // Start the sender (starts all workers) + s.SpawnBgNamed("sender", func() error { return snd.Run(ctx) }) + log.Printf("✅ Connected to %d endpoints", snd.GetNumShards()) + } // Perform prewarming if enabled (before starting logger to avoid logging prewarm transactions) if settings.Prewarm { if err := dispatcher.Prewarm(ctx); err != nil { diff --git a/profiles/conflict.json b/profiles/conflict.json new file mode 100644 index 0000000..0754cef --- /dev/null +++ b/profiles/conflict.json @@ -0,0 +1,30 @@ +{ + "chainId": 713714, + "seiChainId": "sei-chain", + "endpoints": [ + "http://127.0.0.1:8545" + ], + "accounts": { + "count": 5000, + "newAccountRate": 0.0 + }, + "scenarios": [ + { + "name": "ERC20Conflict", + "weight": 1 + } + ], + "settings": { + "workers": 1, + "tps": 0, + "statsInterval": "5s", + "bufferSize": 1000, + "dryRun": false, + "debug": false, + "trackReceipts": false, + "trackBlocks": false, + "trackUserLatency": false, + "prewarm": false, + "rampUp": false + } + } diff --git a/sender/writer.go b/sender/writer.go new file mode 100644 index 0000000..cebd41b --- /dev/null +++ b/sender/writer.go @@ -0,0 +1,86 @@ +package sender + +import ( + "context" + "encoding/json" + "fmt" + "log" + "os" + "path/filepath" + + "github.com/sei-protocol/sei-load/types" +) + +// implements `Send` + +type TxsWriter struct { + gasPerBlock uint64 + nextHeight uint64 + txsDir string + + bufferGas uint64 + txBuffer []*types.LoadTx +} + +func NewTxsWriter(gasPerBlock uint64, txsDir string) *TxsWriter { + // what height to start at? + return &TxsWriter{ + gasPerBlock: gasPerBlock, + nextHeight: 1, + txsDir: txsDir, + + bufferGas: 0, + txBuffer: make([]*types.LoadTx, 0), + } +} + +// Send writes the transaction to the writer +func (w *TxsWriter) Send(ctx context.Context, tx *types.LoadTx) error { + // if bwe would exceed gasPerBlock, flush + if w.bufferGas+tx.EthTx.Gas() > w.gasPerBlock { + if err := w.Flush(); err != nil { + return err + } + } + + // add to buffer + w.txBuffer = append(w.txBuffer, tx) + w.bufferGas += tx.EthTx.Gas() + return nil +} + +type TxWriteData struct { + TxPayloads [][]byte `json:"tx_payloads"` +} + +func (w *TxsWriter) Flush() error { + defer func() { + // clear buffer and reset bufferGas and increment nextHeight + w.txBuffer = make([]*types.LoadTx, 0) + w.bufferGas = 0 + w.nextHeight++ + }() + // write to dir `~/load_txs` + // make dir if it doesn't exist + os.MkdirAll(w.txsDir, 0755) + txsFile := filepath.Join(w.txsDir, fmt.Sprintf("%d_txs.json", w.nextHeight)) + txData := TxWriteData{ + TxPayloads: make([][]byte, 0), + } + for _, tx := range w.txBuffer { + txData.TxPayloads = append(txData.TxPayloads, tx.Payload) + } + + txDataJSON, err := json.Marshal(txData) + if err != nil { + return err + } + + if err := os.WriteFile(txsFile, txDataJSON, 0644); err != nil { + return err + } + + log.Printf("Flushed %d transactions to %s", len(w.txBuffer), txsFile) + + return nil +} diff --git a/sender/writer_test.go b/sender/writer_test.go new file mode 100644 index 0000000..fa27a54 --- /dev/null +++ b/sender/writer_test.go @@ -0,0 +1,55 @@ +package sender + +import ( + "context" + "testing" + + "github.com/sei-protocol/sei-load/config" + "github.com/sei-protocol/sei-load/generator" + "github.com/sei-protocol/sei-load/generator/scenarios" + "github.com/sei-protocol/sei-load/types" + "github.com/stretchr/testify/require" +) + +func TestTxsWriter_Flush(t *testing.T) { + // two evm transfer txs + writer := NewTxsWriter(42000, "/tmp") + + loadConfig := &config.LoadConfig{ + ChainID: 7777, + } + + sharedAccounts := types.NewAccountPool(&types.AccountConfig{ + Accounts: types.GenerateAccounts(10), + NewAccountRate: 0.0, + }) + + evmScenario := scenarios.CreateScenario(config.Scenario{ + Name: "EVMTransfer", + Weight: 1, + }) + evmScenario.Deploy(loadConfig, sharedAccounts.NextAccount()) + + generator := generator.NewScenarioGenerator(sharedAccounts, evmScenario) + + txs := generator.GenerateN(3) + + writer.Send(context.Background(), txs[0]) + require.Equal(t, uint64(1), writer.nextHeight) + require.Equal(t, uint64(21000), writer.bufferGas) + require.Len(t, writer.txBuffer, 1) + require.Equal(t, txs[0], writer.txBuffer[0]) + + writer.Send(context.Background(), txs[1]) + require.Equal(t, uint64(1), writer.nextHeight) + require.Equal(t, uint64(42000), writer.bufferGas) + require.Len(t, writer.txBuffer, 2) + require.Equal(t, txs[1], writer.txBuffer[1]) + + writer.Send(context.Background(), txs[2]) + // now should be flushed and have the new tx + require.Equal(t, uint64(2), writer.nextHeight) + require.Equal(t, uint64(21000), writer.bufferGas) + require.Len(t, writer.txBuffer, 1) + +} From 54940261c991579f4e9d5319164ae35573535dfe Mon Sep 17 00:00:00 2001 From: Uday Patil Date: Wed, 10 Sep 2025 11:20:35 -0500 Subject: [PATCH 2/9] format --- profiles/conflict.json | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/profiles/conflict.json b/profiles/conflict.json index 0754cef..6eca68a 100644 --- a/profiles/conflict.json +++ b/profiles/conflict.json @@ -2,29 +2,29 @@ "chainId": 713714, "seiChainId": "sei-chain", "endpoints": [ - "http://127.0.0.1:8545" + "http://127.0.0.1:8545" ], "accounts": { - "count": 5000, - "newAccountRate": 0.0 + "count": 5000, + "newAccountRate": 0.0 }, "scenarios": [ - { - "name": "ERC20Conflict", - "weight": 1 - } + { + "name": "ERC20Conflict", + "weight": 1 + } ], "settings": { - "workers": 1, - "tps": 0, - "statsInterval": "5s", - "bufferSize": 1000, - "dryRun": false, - "debug": false, - "trackReceipts": false, - "trackBlocks": false, - "trackUserLatency": false, - "prewarm": false, - "rampUp": false + "workers": 1, + "tps": 0, + "statsInterval": "5s", + "bufferSize": 1000, + "dryRun": false, + "debug": false, + "trackReceipts": false, + "trackBlocks": false, + "trackUserLatency": false, + "prewarm": false, + "rampUp": false } - } +} \ No newline at end of file From 3c26315861601274d33deb360866f3ba3c6ac068 Mon Sep 17 00:00:00 2001 From: Uday Patil Date: Wed, 10 Sep 2025 14:45:10 -0500 Subject: [PATCH 3/9] Add target gas param --- config/settings.go | 5 +++++ main.go | 15 ++++++++++++++- sender/writer.go | 23 ++++++++++++++++------- sender/writer_test.go | 2 +- 4 files changed, 36 insertions(+), 9 deletions(-) diff --git a/config/settings.go b/config/settings.go index 80df3ae..d15cced 100644 --- a/config/settings.go +++ b/config/settings.go @@ -25,6 +25,7 @@ type Settings struct { RampUp bool `json:"rampUp,omitempty"` ReportPath string `json:"reportPath,omitempty"` TxsDir string `json:"txsDir,omitempty"` + TargetGas uint64 `json:"targetGas,omitempty"` } // DefaultSettings returns the default configuration values @@ -43,6 +44,7 @@ func DefaultSettings() Settings { RampUp: false, ReportPath: "", TxsDir: "", + TargetGas: 10_000_000, } } @@ -63,6 +65,7 @@ func InitializeViper(cmd *cobra.Command) error { "rampUp": "ramp-up", "reportPath": "report-path", "txsDir": "txs-dir", + "targetGas": "target-gas", } for viperKey, flagName := range flagBindings { @@ -86,6 +89,7 @@ func InitializeViper(cmd *cobra.Command) error { viper.SetDefault("rampUp", defaults.RampUp) viper.SetDefault("reportPath", defaults.ReportPath) viper.SetDefault("txsDir", defaults.TxsDir) + viper.SetDefault("targetGas", defaults.TargetGas) return nil } @@ -125,5 +129,6 @@ func ResolveSettings() Settings { RampUp: viper.GetBool("rampUp"), ReportPath: viper.GetString("reportPath"), TxsDir: viper.GetString("txsDir"), + TargetGas: viper.GetUint64("targetGas"), } } diff --git a/main.go b/main.go index 0ab793d..4f81aa1 100644 --- a/main.go +++ b/main.go @@ -12,6 +12,7 @@ import ( "syscall" "time" + "github.com/ethereum/go-ethereum/ethclient" "github.com/prometheus/client_golang/prometheus/promhttp" "github.com/spf13/cobra" "go.opentelemetry.io/otel" @@ -66,6 +67,7 @@ func init() { rootCmd.Flags().Bool("ramp-up", false, "Ramp up loadtest") rootCmd.Flags().String("report-path", "", "Path to save the report") rootCmd.Flags().String("txs-dir", "", "Path to save the transactions") + rootCmd.Flags().Uint64("target-gas", 10_000_000, "Target gas per block") // Initialize Viper with proper error handling if err := config.InitializeViper(rootCmd); err != nil { @@ -228,7 +230,18 @@ func runLoadTest(ctx context.Context, cmd *cobra.Command, args []string) error { // Create dispatcher var dispatcher *sender.Dispatcher if settings.TxsDir != "" { - writer := sender.NewTxsWriter(10_000_000, settings.TxsDir) + // get latest height + ethclient, err := ethclient.Dial(cfg.Endpoints[0]) + if err != nil { + return fmt.Errorf("failed to create ethclient: %w", err) + } + latestHeight, err := ethclient.BlockNumber(ctx) + if err != nil { + return fmt.Errorf("failed to get latest height: %w", err) + } + writerHeight := latestHeight + 10 // some buffer + log.Printf("🔍 Latest height: %d, writer start height: %d", latestHeight, writerHeight) + writer := sender.NewTxsWriter(settings.TargetGas, settings.TxsDir, writerHeight, 100) dispatcher = sender.NewDispatcher(gen, writer) } else { dispatcher = sender.NewDispatcher(gen, snd) diff --git a/sender/writer.go b/sender/writer.go index cebd41b..df248a2 100644 --- a/sender/writer.go +++ b/sender/writer.go @@ -14,20 +14,24 @@ import ( // implements `Send` type TxsWriter struct { - gasPerBlock uint64 - nextHeight uint64 - txsDir string + gasPerBlock uint64 + nextHeight uint64 + txsDir string + blocksGenerated uint64 + numBlocks uint64 bufferGas uint64 txBuffer []*types.LoadTx } -func NewTxsWriter(gasPerBlock uint64, txsDir string) *TxsWriter { +func NewTxsWriter(gasPerBlock uint64, txsDir string, startHeight uint64, numBlocks uint64) *TxsWriter { // what height to start at? return &TxsWriter{ - gasPerBlock: gasPerBlock, - nextHeight: 1, - txsDir: txsDir, + gasPerBlock: gasPerBlock, + nextHeight: startHeight, + txsDir: txsDir, + blocksGenerated: 0, + numBlocks: numBlocks, bufferGas: 0, txBuffer: make([]*types.LoadTx, 0), @@ -59,6 +63,7 @@ func (w *TxsWriter) Flush() error { w.txBuffer = make([]*types.LoadTx, 0) w.bufferGas = 0 w.nextHeight++ + w.blocksGenerated++ }() // write to dir `~/load_txs` // make dir if it doesn't exist @@ -82,5 +87,9 @@ func (w *TxsWriter) Flush() error { log.Printf("Flushed %d transactions to %s", len(w.txBuffer), txsFile) + if w.blocksGenerated >= w.numBlocks { + return fmt.Errorf("reached max number of blocks: %d", w.numBlocks) + } + return nil } diff --git a/sender/writer_test.go b/sender/writer_test.go index fa27a54..732b95e 100644 --- a/sender/writer_test.go +++ b/sender/writer_test.go @@ -13,7 +13,7 @@ import ( func TestTxsWriter_Flush(t *testing.T) { // two evm transfer txs - writer := NewTxsWriter(42000, "/tmp") + writer := NewTxsWriter(42000, "/tmp", 1) loadConfig := &config.LoadConfig{ ChainID: 7777, From c00924c86425ca01a82213fe0119d70e6027207f Mon Sep 17 00:00:00 2001 From: Uday Patil Date: Mon, 6 Oct 2025 16:25:11 -0500 Subject: [PATCH 4/9] make num blocks to write a config --- config/settings.go | 5 +++++ main.go | 4 +++- sender/writer_test.go | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/config/settings.go b/config/settings.go index d15cced..c19cf1c 100644 --- a/config/settings.go +++ b/config/settings.go @@ -26,6 +26,7 @@ type Settings struct { ReportPath string `json:"reportPath,omitempty"` TxsDir string `json:"txsDir,omitempty"` TargetGas uint64 `json:"targetGas,omitempty"` + NumBlocksToWrite int `json:"numBlocksToWrite,omitempty"` } // DefaultSettings returns the default configuration values @@ -45,6 +46,7 @@ func DefaultSettings() Settings { ReportPath: "", TxsDir: "", TargetGas: 10_000_000, + NumBlocksToWrite: 100, } } @@ -66,6 +68,7 @@ func InitializeViper(cmd *cobra.Command) error { "reportPath": "report-path", "txsDir": "txs-dir", "targetGas": "target-gas", + "numBlocksToWrite": "num-blocks-to-write", } for viperKey, flagName := range flagBindings { @@ -90,6 +93,7 @@ func InitializeViper(cmd *cobra.Command) error { viper.SetDefault("reportPath", defaults.ReportPath) viper.SetDefault("txsDir", defaults.TxsDir) viper.SetDefault("targetGas", defaults.TargetGas) + viper.SetDefault("numBlocksToWrite", defaults.NumBlocksToWrite) return nil } @@ -130,5 +134,6 @@ func ResolveSettings() Settings { ReportPath: viper.GetString("reportPath"), TxsDir: viper.GetString("txsDir"), TargetGas: viper.GetUint64("targetGas"), + NumBlocksToWrite: viper.GetInt("numBlocksToWrite"), } } diff --git a/main.go b/main.go index 4f81aa1..cf61350 100644 --- a/main.go +++ b/main.go @@ -68,6 +68,7 @@ func init() { rootCmd.Flags().String("report-path", "", "Path to save the report") rootCmd.Flags().String("txs-dir", "", "Path to save the transactions") rootCmd.Flags().Uint64("target-gas", 10_000_000, "Target gas per block") + rootCmd.Flags().Int("num-blocks-to-write", 100, "Number of blocks to write") // Initialize Viper with proper error handling if err := config.InitializeViper(rootCmd); err != nil { @@ -239,9 +240,10 @@ func runLoadTest(ctx context.Context, cmd *cobra.Command, args []string) error { if err != nil { return fmt.Errorf("failed to get latest height: %w", err) } + numBlocksToWrite := settings.NumBlocksToWrite writerHeight := latestHeight + 10 // some buffer log.Printf("🔍 Latest height: %d, writer start height: %d", latestHeight, writerHeight) - writer := sender.NewTxsWriter(settings.TargetGas, settings.TxsDir, writerHeight, 100) + writer := sender.NewTxsWriter(settings.TargetGas, settings.TxsDir, writerHeight, uint64(numBlocksToWrite)) dispatcher = sender.NewDispatcher(gen, writer) } else { dispatcher = sender.NewDispatcher(gen, snd) diff --git a/sender/writer_test.go b/sender/writer_test.go index 732b95e..eff2a3e 100644 --- a/sender/writer_test.go +++ b/sender/writer_test.go @@ -13,7 +13,7 @@ import ( func TestTxsWriter_Flush(t *testing.T) { // two evm transfer txs - writer := NewTxsWriter(42000, "/tmp", 1) + writer := NewTxsWriter(42000, "/tmp", 1, 1) loadConfig := &config.LoadConfig{ ChainID: 7777, From 8ee3584e3e96b3e0be09a0b5450c3932f7ac2d89 Mon Sep 17 00:00:00 2001 From: Uday Patil Date: Mon, 6 Oct 2025 16:31:39 -0500 Subject: [PATCH 5/9] fix lint --- sender/writer.go | 5 ++++- sender/writer_test.go | 9 ++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/sender/writer.go b/sender/writer.go index df248a2..8be5542 100644 --- a/sender/writer.go +++ b/sender/writer.go @@ -67,7 +67,10 @@ func (w *TxsWriter) Flush() error { }() // write to dir `~/load_txs` // make dir if it doesn't exist - os.MkdirAll(w.txsDir, 0755) + err := os.MkdirAll(w.txsDir, 0755) + if err != nil { + return err + } txsFile := filepath.Join(w.txsDir, fmt.Sprintf("%d_txs.json", w.nextHeight)) txData := TxWriteData{ TxPayloads: make([][]byte, 0), diff --git a/sender/writer_test.go b/sender/writer_test.go index eff2a3e..e0247cc 100644 --- a/sender/writer_test.go +++ b/sender/writer_test.go @@ -34,19 +34,22 @@ func TestTxsWriter_Flush(t *testing.T) { txs := generator.GenerateN(3) - writer.Send(context.Background(), txs[0]) + err := writer.Send(context.Background(), txs[0]) + require.NoError(t, err) require.Equal(t, uint64(1), writer.nextHeight) require.Equal(t, uint64(21000), writer.bufferGas) require.Len(t, writer.txBuffer, 1) require.Equal(t, txs[0], writer.txBuffer[0]) - writer.Send(context.Background(), txs[1]) + err = writer.Send(context.Background(), txs[1]) + require.NoError(t, err) require.Equal(t, uint64(1), writer.nextHeight) require.Equal(t, uint64(42000), writer.bufferGas) require.Len(t, writer.txBuffer, 2) require.Equal(t, txs[1], writer.txBuffer[1]) - writer.Send(context.Background(), txs[2]) + err = writer.Send(context.Background(), txs[2]) + require.NoError(t, err) // now should be flushed and have the new tx require.Equal(t, uint64(2), writer.nextHeight) require.Equal(t, uint64(21000), writer.bufferGas) From f6012e615653679bab93ff281e3a9a1424f078d8 Mon Sep 17 00:00:00 2001 From: Uday Patil Date: Mon, 6 Oct 2025 17:00:22 -0500 Subject: [PATCH 6/9] fix settings tests --- config/settings_test.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/config/settings_test.go b/config/settings_test.go index 95f54ae..cd8ccb2 100644 --- a/config/settings_test.go +++ b/config/settings_test.go @@ -93,6 +93,9 @@ func TestArgumentPrecedence(t *testing.T) { cmd.Flags().Int("buffer-size", 0, "Buffer size") cmd.Flags().Bool("ramp-up", false, "Ramp up loadtest") cmd.Flags().String("report-path", "", "Report path") + cmd.Flags().String("txs-dir", "", "Txs dir") + cmd.Flags().Uint64("target-gas", 0, "Target gas") + cmd.Flags().Int("num-blocks-to-write", 0, "Number of blocks to write") // Parse CLI args if len(tt.cliArgs) > 0 { @@ -133,6 +136,9 @@ func TestDefaultSettings(t *testing.T) { Prewarm: false, RampUp: false, ReportPath: "", + TxsDir: "", + TargetGas: 10_000_000, + NumBlocksToWrite: 100, } if defaults != expected { From e2698baa5e72adcb44331cda34dd988b8dfa7ed5 Mon Sep 17 00:00:00 2001 From: Uday Patil Date: Mon, 6 Oct 2025 17:22:59 -0500 Subject: [PATCH 7/9] evm transfer tx filewrite config --- profiles/evm_transfer_write_file.json | 33 +++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 profiles/evm_transfer_write_file.json diff --git a/profiles/evm_transfer_write_file.json b/profiles/evm_transfer_write_file.json new file mode 100644 index 0000000..1570311 --- /dev/null +++ b/profiles/evm_transfer_write_file.json @@ -0,0 +1,33 @@ +{ + "chainId": 713714, + "seiChainId": "sei-chain", + "endpoints": [ + "http://127.0.0.1:8545" + ], + "accounts": { + "count": 5000, + "newAccountRate": 0.0 + }, + "scenarios": [ + { + "name": "EVMTransfer", + "weight": 1 + } + ], + "settings": { + "workers": 1, + "tps": 0, + "statsInterval": "5s", + "bufferSize": 1000, + "dryRun": false, + "debug": false, + "trackReceipts": false, + "trackBlocks": false, + "trackUserLatency": false, + "prewarm": false, + "rampUp": false, + "txsDir": "/home/ubuntu/load_txs", + "targetGas": 30000000, + "numBlocksToWrite": 1000 + } + } From c2cef13e3a29298d882fb61b6a09862c4196b906 Mon Sep 17 00:00:00 2001 From: Uday Patil Date: Mon, 6 Oct 2025 17:25:54 -0500 Subject: [PATCH 8/9] update config --- profiles/evm_transfer_write_file.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/profiles/evm_transfer_write_file.json b/profiles/evm_transfer_write_file.json index 1570311..0d4101c 100644 --- a/profiles/evm_transfer_write_file.json +++ b/profiles/evm_transfer_write_file.json @@ -26,7 +26,7 @@ "trackUserLatency": false, "prewarm": false, "rampUp": false, - "txsDir": "/home/ubuntu/load_txs", + "txsDir": "~/load_txs", "targetGas": 30000000, "numBlocksToWrite": 1000 } From 4111ac40e2554725b8ac332cb73e4eff8cb33428 Mon Sep 17 00:00:00 2001 From: Uday Patil Date: Mon, 6 Oct 2025 17:28:13 -0500 Subject: [PATCH 9/9] update --- profiles/evm_transfer_write_file.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/profiles/evm_transfer_write_file.json b/profiles/evm_transfer_write_file.json index 0d4101c..1fc9795 100644 --- a/profiles/evm_transfer_write_file.json +++ b/profiles/evm_transfer_write_file.json @@ -26,7 +26,7 @@ "trackUserLatency": false, "prewarm": false, "rampUp": false, - "txsDir": "~/load_txs", + "txsDir": "/root/load_txs", "targetGas": 30000000, "numBlocksToWrite": 1000 }