Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(ci): update fake_peer_set test to avoid spurious failures #5758

Merged
merged 2 commits into from
Dec 1, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 16 additions & 10 deletions zebrad/src/components/inbound/tests/fake_peer_set.rs
Original file line number Diff line number Diff line change
Expand Up @@ -78,13 +78,11 @@ async fn mempool_requests_for_transactions() {
.await;
match response {
Ok(Response::TransactionIds(response)) => assert_eq!(response, added_transaction_ids),
Ok(Response::Nil) => if !added_transaction_ids.is_empty() {
info!(
"response {response:?} to `MempoolTransactionIds` request \
should match added_transaction_ids {added_transaction_ids:?}, \
ignoring test failure because this test is unreliable due to timing issues",
);
}
Ok(Response::Nil) => assert!(
added_transaction_ids.is_empty(),
"`MempoolTransactionIds` request should match added_transaction_ids {:?}, got Ok(Nil)",
added_transaction_ids
),
_ => unreachable!(
"`MempoolTransactionIds` requests should always respond `Ok(Vec<UnminedTxId> | Nil)`, got {:?}",
response
Expand Down Expand Up @@ -857,7 +855,8 @@ async fn setup(
.unwrap();
committed_blocks.push(block_one);

// Don't wait for the chain tip update here, we wait for AdvertiseBlock below.
// Don't wait for the chain tip update here, we wait for expect_request(AdvertiseBlock) below,
// which is called by the gossip_best_tip_block_hashes task once the chain tip changes.

let (mut mempool_service, transaction_receiver) = Mempool::new(
&MempoolConfig::default(),
Expand All @@ -869,8 +868,8 @@ async fn setup(
chain_tip_change.clone(),
);

// Enable the mempool
mempool_service.enable(&mut recent_syncs).await;
// Pretend we're close to tip
SyncStatus::sync_close_to_tip(&mut recent_syncs);

let sync_gossip_task_handle = tokio::spawn(sync::gossip_best_tip_block_hashes(
sync_status.clone(),
Expand All @@ -894,6 +893,13 @@ async fn setup(
.respond(Response::Nil);
}

// Enable the mempool
// Note: this needs to be done after the mock peer set service has received the AdvertiseBlock
// request to ensure that the call to `last_tip_change` returns the chain tip block for block_one
// and not the genesis block, or else the transactions from the genesis block will be added to
// the mempool storage's rejection list and tests will fail.
mempool_service.enable(&mut recent_syncs).await;

// Add transactions to the mempool, skipping verification and broadcast
let mut added_transactions = Vec::new();
if add_transactions {
Expand Down