tempo_sidecar/cmd/
synthetic_load.rs1use crate::synthetic_load::SyntheticLoadGenerator;
2use alloy::primitives::{Address, address};
3use clap::Parser;
4use reqwest::Url;
5use tracing_subscriber::EnvFilter;
6
7#[derive(Parser, Debug)]
8pub struct SyntheticLoadArgs {
9 #[arg(
10 short,
11 long,
12 default_value = "test test test test test test test test test test test junk"
13 )]
14 mnemonic: String,
15
16 #[arg(short, long, required = true)]
17 rpc_url: Url,
18
19 #[arg(long, default_value_t = 10)]
20 wallet_count: usize,
21
22 #[arg(long, default_value_t = 10)]
23 average_tps: usize,
24
25 #[arg(long, default_values_t = vec![address!("0x20C0000000000000000000000000000000000000")])]
26 fee_token_addresses: Vec<Address>,
27
28 #[arg(long)]
29 seed: Option<u64>,
30}
31
32impl SyntheticLoadArgs {
33 pub async fn run(&self) -> eyre::Result<()> {
34 tracing_subscriber::FmtSubscriber::builder()
35 .with_env_filter(EnvFilter::from_default_env())
36 .init();
37
38 let generator = SyntheticLoadGenerator::new(
39 self.mnemonic.clone(),
40 self.rpc_url.clone(),
41 self.wallet_count,
42 self.average_tps,
43 self.fee_token_addresses.clone(),
44 self.seed,
45 );
46
47 generator.worker().await?;
48
49 Ok(())
50 }
51}