diff --git a/testing/integration-tests/src/full_client/client/mod.rs b/testing/integration-tests/src/full_client/client/mod.rs index 9835af28f3..fa909ec9c5 100644 --- a/testing/integration-tests/src/full_client/client/mod.rs +++ b/testing/integration-tests/src/full_client/client/mod.rs @@ -361,7 +361,7 @@ pub struct InclusionFee { /// - `targeted_fee_adjustment`: This is a multiplier that can tune the final fee based on the /// congestion of the network. /// - `weight_fee`: This amount is computed based on the weight of the transaction. Weight - /// accounts for the execution time of a transaction. + /// accounts for the execution time of a transaction. /// /// adjusted_weight_fee = targeted_fee_adjustment * weight_fee pub adjusted_weight_fee: u128, @@ -416,11 +416,11 @@ async fn partial_fee_estimate_correct() { async fn legacy_and_unstable_block_subscription_reconnect() { let ctx = test_context_reconnecting_rpc_client().await; let api = ctx.unstable_client().await; - let unstable_client_blocks = move |num: usize| { let api = api.clone(); async move { - api.blocks() + let mut missed_blocks = false; + (api.blocks() .subscribe_finalized() .await .unwrap() @@ -429,7 +429,12 @@ async fn legacy_and_unstable_block_subscription_reconnect() { .filter(|item| { let disconnected = match item { Ok(_) => false, - Err(e) => e.is_disconnected_will_reconnect(), + Err(e) => { + if matches!(e, Error::Rpc(subxt::error::RpcError::DisconnectedWillReconnect(e)) if e.contains("Missed at least one block when the connection was lost")) { + missed_blocks = true; + } + e.is_disconnected_will_reconnect() + } }; futures::future::ready(!disconnected) @@ -437,11 +442,11 @@ async fn legacy_and_unstable_block_subscription_reconnect() { .take(num) .map(|x| x.unwrap().hash().to_string()) .collect::>() - .await + .await, missed_blocks) } }; - let blocks = unstable_client_blocks(3).await; + let (blocks, _) = unstable_client_blocks(3).await; let blocks: HashSet = HashSet::from_iter(blocks.into_iter()); assert!(blocks.len() == 3); @@ -451,10 +456,11 @@ async fn legacy_and_unstable_block_subscription_reconnect() { // Make client aware that connection was dropped and force them to reconnect let _ = ctx.unstable_client().await.backend().genesis_hash().await; - let unstable_blocks = unstable_client_blocks(6).await; + let (unstable_blocks, blocks_missed) = unstable_client_blocks(6).await; - let unstable_blocks: HashSet = HashSet::from_iter(unstable_blocks.into_iter()); - let intersection = unstable_blocks.intersection(&blocks).count(); - - assert!(intersection == 3); + if !blocks_missed { + let unstable_blocks: HashSet = HashSet::from_iter(unstable_blocks.into_iter()); + let intersection = unstable_blocks.intersection(&blocks).count(); + assert!(intersection >= 3, "intersections size is {}", intersection); + } }