From fdf3dfde1d5f092dc79c50d5615b3cf72a5ecb3a Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 28 Sep 2021 03:43:55 -0500 Subject: [PATCH] fix flaky chain-selection tests (#3948) --- node/core/chain-selection/src/tests.rs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/node/core/chain-selection/src/tests.rs b/node/core/chain-selection/src/tests.rs index c7d204df83b4..396e11520733 100644 --- a/node/core/chain-selection/src/tests.rs +++ b/node/core/chain-selection/src/tests.rs @@ -164,6 +164,13 @@ impl Backend for TestBackend { where I: IntoIterator, { + let ops: Vec<_> = ops.into_iter().collect(); + + // Early return if empty because empty writes shouldn't + // trigger wakeups (they happen on an interval) + if ops.is_empty() { + return Ok(()) + } let mut inner = self.inner.lock(); for op in ops { @@ -521,13 +528,13 @@ async fn finalize_block( block_number: BlockNumber, block_hash: Hash, ) { - let (_, write_tx) = backend.await_next_write(); + let (_, write_rx) = backend.await_next_write(); virtual_overseer .send(OverseerSignal::BlockFinalized(block_hash, block_number).into()) .await; - write_tx.await.unwrap(); + write_rx.await.unwrap(); } fn extract_info_from_chain( @@ -1701,9 +1708,11 @@ fn approve_nonexistent_has_no_effect() { .await; let nonexistent = Hash::repeat_byte(1); - approve_block(&mut virtual_overseer, &backend, nonexistent).await; + virtual_overseer + .send(FromOverseer::Communication { msg: ChainSelectionMessage::Approved(nonexistent) }) + .await; - // a3 is approved, but not a1 or a2. + // None are approved. assert_matches!( backend.load_block_entry(&a3_hash).unwrap().unwrap().viability.approval, Approval::Unapproved