From 9bc1b255ea4096f08199c9312ae65a1de27cfdfa Mon Sep 17 00:00:00 2001 From: Alexey Pashinov Date: Mon, 17 Feb 2025 22:09:43 +0100 Subject: [PATCH] fix(core): fix heavy archives tests --- core/tests/archives.rs | 9 ++------- core/tests/block_strider.rs | 11 ++++++++--- core/tests/network/mod.rs | 31 +++++++++++++++++++++---------- core/tests/overlay_server.rs | 10 +++++----- 4 files changed, 36 insertions(+), 25 deletions(-) diff --git a/core/tests/archives.rs b/core/tests/archives.rs index da1f808d2..4416a2a39 100644 --- a/core/tests/archives.rs +++ b/core/tests/archives.rs @@ -16,7 +16,6 @@ use tycho_core::block_strider::{ StateSubscriber, StateSubscriberContext, }; use tycho_core::blockchain_rpc::{BlockchainRpcClient, DataRequirement}; -use tycho_core::overlay_client::PublicOverlayClient; use tycho_network::PeerId; use tycho_storage::{ArchiveId, ArchivesGcConfig, NewBlockMeta, Storage, StorageConfig}; use tycho_util::compression::{zstd_decompress, ZstdDecompressStream}; @@ -322,7 +321,7 @@ async fn archives() -> Result<()> { #[tokio::test] #[ignore] async fn heavy_archives() -> Result<()> { - tycho_util::test::init_logger("heavy_archives", "debug"); + tycho_util::test::init_logger("heavy_archives", "info"); // Prepare directory let project_root = project_root()?.join(".scratch"); @@ -426,11 +425,7 @@ async fn heavy_archives() -> Result<()> { let node = nodes.first().unwrap(); let client = BlockchainRpcClient::builder() - .with_public_overlay_client(PublicOverlayClient::new( - node.network().clone(), - node.public_overlay().clone(), - Default::default(), - )) + .with_public_overlay_client(node.overlay_client().clone()) .build(); // Get archive diff --git a/core/tests/block_strider.rs b/core/tests/block_strider.rs index cbf34e2f2..3882b64e8 100644 --- a/core/tests/block_strider.rs +++ b/core/tests/block_strider.rs @@ -77,7 +77,12 @@ async fn overlay_block_strider() -> anyhow::Result<()> { let left_id = left.network().peer_id(); let right_id = right.network().peer_id(); - if left.public_overlay().read_entries().contains(right_id) { + if left + .overlay_client() + .overlay() + .read_entries() + .contains(right_id) + { peer_states.entry(left_id).or_default().knows_about += 1; peer_states.entry(right_id).or_default().known_by += 1; } @@ -104,7 +109,7 @@ async fn overlay_block_strider() -> anyhow::Result<()> { tracing::info!("resolving entries..."); for node in &nodes { let resolved = FuturesUnordered::new(); - for entry in node.public_overlay().read_entries().iter() { + for entry in node.overlay_client().overlay().read_entries().iter() { let handle = entry.resolver_handle.clone(); resolved.push(async move { handle.wait_resolved().await }); } @@ -123,7 +128,7 @@ async fn overlay_block_strider() -> anyhow::Result<()> { let client = BlockchainRpcClient::builder() .with_public_overlay_client(PublicOverlayClient::new( node.network().clone(), - node.public_overlay().clone(), + node.overlay_client().overlay().clone(), PublicOverlayClientConfig::default(), )) .build(); diff --git a/core/tests/network/mod.rs b/core/tests/network/mod.rs index de7a2b626..b8570ed2c 100644 --- a/core/tests/network/mod.rs +++ b/core/tests/network/mod.rs @@ -7,6 +7,7 @@ use everscale_crypto::ed25519; use futures_util::stream::FuturesUnordered; use futures_util::StreamExt; use tycho_core::blockchain_rpc::BlockchainRpcService; +use tycho_core::overlay_client::PublicOverlayClient; use tycho_network::{ DhtClient, DhtConfig, DhtService, Network, OverlayConfig, OverlayId, OverlayService, PeerId, PeerResolver, PublicOverlay, Router, @@ -82,8 +83,8 @@ fn make_fast_overlay_config() -> OverlayConfig { pub struct Node { network: Network, - public_overlay: PublicOverlay, dht_client: DhtClient, + overlay_client: PublicOverlayClient, } impl Node { @@ -91,8 +92,8 @@ impl Node { &self.network } - pub fn public_overlay(&self) -> &PublicOverlay { - &self.public_overlay + pub fn overlay_client(&self) -> &PublicOverlayClient { + &self.overlay_client } fn with_random_key(storage: Storage) -> Self { @@ -112,12 +113,15 @@ impl Node { ); overlay_service.add_public_overlay(&public_overlay); + let overlay_client = + PublicOverlayClient::new(network.clone(), public_overlay, Default::default()); + let dht_client = dht_service.make_client(&network); Self { network, - public_overlay, dht_client, + overlay_client, } } } @@ -141,7 +145,7 @@ pub fn make_network(storage: Storage, node_count: usize) -> Vec { #[allow(dead_code)] pub trait TestNode { fn network(&self) -> &Network; - fn public_overlay(&self) -> &PublicOverlay; + fn overlay_client(&self) -> &PublicOverlayClient; fn force_update_validators(&self, peers: Vec); } @@ -150,11 +154,13 @@ impl TestNode for Node { self.network() } - fn public_overlay(&self) -> &PublicOverlay { - self.public_overlay() + fn overlay_client(&self) -> &PublicOverlayClient { + &self.overlay_client } - fn force_update_validators(&self, _: Vec) {} + fn force_update_validators(&self, peers: Vec) { + self.overlay_client.update_validator_set(&peers); + } } #[allow(dead_code)] @@ -174,7 +180,12 @@ pub async fn discover(nodes: &[N]) -> anyhow::Result<()> { let left_id = left.network().peer_id(); let right_id = right.network().peer_id(); - if left.public_overlay().read_entries().contains(right_id) { + if left + .overlay_client() + .overlay() + .read_entries() + .contains(right_id) + { peer_states.entry(left_id).or_default().knows_about += 1; peer_states.entry(right_id).or_default().known_by += 1; } @@ -201,7 +212,7 @@ pub async fn discover(nodes: &[N]) -> anyhow::Result<()> { tracing::info!("resolving entries..."); for node in nodes { let resolved = FuturesUnordered::new(); - for entry in node.public_overlay().read_entries().iter() { + for entry in node.overlay_client().overlay().read_entries().iter() { let handle = entry.resolver_handle.clone(); resolved.push(async move { handle.wait_resolved().await }); } diff --git a/core/tests/overlay_server.rs b/core/tests/overlay_server.rs index 1fe09c38b..546bc6d2c 100644 --- a/core/tests/overlay_server.rs +++ b/core/tests/overlay_server.rs @@ -92,8 +92,8 @@ async fn overlay_server_msg_broadcast() -> Result<()> { &self.base.network } - fn public_overlay(&self) -> &PublicOverlay { - self.blockchain_client.overlay() + fn overlay_client(&self) -> &PublicOverlayClient { + self.blockchain_client.overlay_client() } fn force_update_validators(&self, peers: Vec) { @@ -164,7 +164,7 @@ async fn overlay_server_with_empty_storage() -> Result<()> { let client = BlockchainRpcClient::builder() .with_public_overlay_client(PublicOverlayClient::new( node.network().clone(), - node.public_overlay().clone(), + node.overlay_client().overlay().clone(), Default::default(), )) .build(); @@ -226,7 +226,7 @@ async fn overlay_server_blocks() -> Result<()> { let client = BlockchainRpcClient::builder() .with_public_overlay_client(PublicOverlayClient::new( node.network().clone(), - node.public_overlay().clone(), + node.overlay_client().overlay().clone(), Default::default(), )) .build(); @@ -325,7 +325,7 @@ async fn overlay_server_persistent_state() -> Result<()> { let client = BlockchainRpcClient::builder() .with_public_overlay_client(PublicOverlayClient::new( node.network().clone(), - node.public_overlay().clone(), + node.overlay_client().overlay().clone(), Default::default(), )) .build();