integration test for capability version mismatch (#14304)

This commit is contained in:
int88
2025-02-08 03:32:48 +08:00
committed by GitHub
parent 54c4646971
commit e4e5cb04d8

View File

@ -3,7 +3,7 @@
use futures::StreamExt; use futures::StreamExt;
use reth_eth_wire::EthVersion; use reth_eth_wire::EthVersion;
use reth_network::{ use reth_network::{
test_utils::{PeerConfig, Testnet}, test_utils::{NetworkEventStream, PeerConfig, Testnet},
NetworkEvent, NetworkEventListenerProvider, NetworkEvent, NetworkEventListenerProvider,
}; };
use reth_network_api::{ use reth_network_api::{
@ -86,3 +86,40 @@ async fn test_session_established_with_different_capability() {
handle.terminate().await; handle.terminate().await;
} }
#[tokio::test(flavor = "multi_thread")]
async fn test_capability_version_mismatch() {
reth_tracing::init_test_tracing();
let mut net = Testnet::create(0).await;
let p0 = PeerConfig::with_protocols(NoopProvider::default(), Some(EthVersion::Eth66.into()));
net.add_peer_with_config(p0).await.unwrap();
let p1 = PeerConfig::with_protocols(NoopProvider::default(), Some(EthVersion::Eth67.into()));
net.add_peer_with_config(p1).await.unwrap();
net.for_each(|peer| assert_eq!(0, peer.num_peers()));
let mut handles = net.handles();
let handle0 = handles.next().unwrap();
let handle1 = handles.next().unwrap();
drop(handles);
let handle = net.spawn();
let events = handle0.event_listener();
let mut event_stream = NetworkEventStream::new(events);
handle0.add_peer(*handle1.peer_id(), handle1.local_addr());
let added_peer_id = event_stream.peer_added().await.unwrap();
assert_eq!(added_peer_id, *handle1.peer_id());
// peer with mismatched capability version should fail to connect and be removed.
let removed_peer_id = event_stream.peer_removed().await.unwrap();
assert_eq!(removed_peer_id, *handle1.peer_id());
handle.terminate().await;
}