Skip to content
This repository has been archived by the owner on Nov 5, 2023. It is now read-only.

Commit

Permalink
feat(rpc-testing-utils) : enhanced tansaction replay (paradigmxyz#5275)
Browse files Browse the repository at this point in the history
Co-authored-by: Matthias Seitz <[email protected]>
  • Loading branch information
DoTheBestToGetTheBest and mattsse authored Nov 4, 2023
1 parent 2412cc4 commit e11b371
Showing 1 changed file with 26 additions and 2 deletions.
28 changes: 26 additions & 2 deletions crates/rpc/rpc-testing-util/tests/it/trace.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
use futures::StreamExt;
use jsonrpsee::http_client::HttpClientBuilder;
use reth_rpc_api_testing_util::{trace::TraceApiExt, utils::parse_env_url};
use std::time::Instant;

use reth_rpc_types::trace::parity::TraceType;
use std::{collections::HashSet, time::Instant};
/// This is intended to be run locally against a running node.
///
/// This is a noop of env var `RETH_RPC_TEST_NODE_URL` is not set.
Expand All @@ -21,3 +22,26 @@ async fn trace_many_blocks() {
}
println!("Traced all blocks in {:?}", now.elapsed());
}

/// Tests the replaying of transactions on a local Ethereum node.

#[tokio::test(flavor = "multi_thread")]
#[ignore]
async fn replay_transactions() {
let url = parse_env_url("RETH_RPC_TEST_NODE_URL").unwrap();
let client = HttpClientBuilder::default().build(url).unwrap();

let tx_hashes = vec![
"0x4e08fe36db723a338e852f89f613e606b0c9a17e649b18b01251f86236a2cef3".parse().unwrap(),
"0xea2817f1aeeb587b82f4ab87a6dbd3560fc35ed28de1be280cb40b2a24ab48bb".parse().unwrap(),
];

let trace_types = HashSet::from([TraceType::StateDiff, TraceType::VmTrace]);

let mut stream = client.replay_transactions(tx_hashes, trace_types);
let now = Instant::now();
while let Some(replay_txs) = stream.next().await {
println!("Transaction: {:?}", replay_txs);
println!("Replayed transactions in {:?}", now.elapsed());
}
}

0 comments on commit e11b371

Please sign in to comment.