tempo_sidecar/cmd/
synthetic_load.rs

1use 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}