Skip to content

Commit 049ac5a

Browse files
authored
Merge pull request #5202 from stacks-network/chore/flaky-signer-tests
Chore: Fix some flaky signer tests
2 parents f8907be + 6388ed7 commit 049ac5a

File tree

1 file changed

+50
-53
lines changed
  • testnet/stacks-node/src/tests/signer

1 file changed

+50
-53
lines changed

testnet/stacks-node/src/tests/signer/v0.rs

Lines changed: 50 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,11 @@ impl SignerTest<SpawnedSigner> {
264264
info!("Signers initialized");
265265

266266
self.run_until_epoch_3_boundary();
267+
std::thread::sleep(Duration::from_secs(1));
268+
wait_for(60, || {
269+
Ok(get_chain_info_opt(&self.running_nodes.conf).is_some())
270+
})
271+
.expect("Timed out waiting for network to restart after 3.0 boundary reached");
267272

268273
// Wait until we see the first block of epoch 3.0.
269274
// Note, we don't use `nakamoto_blocks_mined` counter, because there
@@ -4128,25 +4133,24 @@ fn locally_rejected_blocks_overriden_by_global_acceptance() {
41284133
signer_test.boot_to_epoch_3();
41294134
info!("------------------------- Test Mine Nakamoto Block N -------------------------");
41304135
let mined_blocks = signer_test.running_nodes.nakamoto_blocks_mined.clone();
4131-
let blocks_before = mined_blocks.load(Ordering::SeqCst);
41324136
let info_before = signer_test
41334137
.stacks_client
41344138
.get_peer_info()
41354139
.expect("Failed to get peer info");
4136-
let start_time = Instant::now();
41374140
// submit a tx so that the miner will mine a stacks block
41384141
let mut sender_nonce = 0;
41394142
let transfer_tx =
41404143
make_stacks_transfer(&sender_sk, sender_nonce, send_fee, &recipient, send_amt);
41414144
let tx = submit_tx(&http_origin, &transfer_tx);
41424145
info!("Submitted tx {tx} in to mine block N");
4143-
while mined_blocks.load(Ordering::SeqCst) <= blocks_before {
4144-
assert!(
4145-
start_time.elapsed() < short_timeout,
4146-
"FAIL: Test timed out while waiting for block production",
4147-
);
4148-
thread::sleep(Duration::from_secs(1));
4149-
}
4146+
wait_for(short_timeout.as_secs(), || {
4147+
let info_after = signer_test
4148+
.stacks_client
4149+
.get_peer_info()
4150+
.expect("Failed to get peer info");
4151+
Ok(info_after.stacks_tip_height > info_before.stacks_tip_height)
4152+
})
4153+
.expect("Timed out waiting for block to be mined and processed");
41504154

41514155
sender_nonce += 1;
41524156
let info_after = signer_test
@@ -4196,13 +4200,14 @@ fn locally_rejected_blocks_overriden_by_global_acceptance() {
41964200
.stacks_client
41974201
.get_peer_info()
41984202
.expect("Failed to get peer info");
4199-
while mined_blocks.load(Ordering::SeqCst) <= blocks_before {
4200-
assert!(
4201-
start_time.elapsed() < short_timeout,
4202-
"FAIL: Test timed out while waiting for block production",
4203-
);
4204-
thread::sleep(Duration::from_secs(1));
4205-
}
4203+
wait_for(short_timeout.as_secs(), || {
4204+
let info_after = signer_test
4205+
.stacks_client
4206+
.get_peer_info()
4207+
.expect("Failed to get peer info");
4208+
Ok(info_after.stacks_tip_height > info_before.stacks_tip_height)
4209+
})
4210+
.expect("Timed out waiting for block to be mined and processed");
42064211
loop {
42074212
let stackerdb_events = test_observer::get_stackerdb_chunks();
42084213
let block_rejections = stackerdb_events
@@ -4274,13 +4279,14 @@ fn locally_rejected_blocks_overriden_by_global_acceptance() {
42744279
make_stacks_transfer(&sender_sk, sender_nonce, send_fee, &recipient, send_amt);
42754280
let tx = submit_tx(&http_origin, &transfer_tx);
42764281
info!("Submitted tx {tx} in to mine block N+2");
4277-
while mined_blocks.load(Ordering::SeqCst) <= blocks_before {
4278-
assert!(
4279-
start_time.elapsed() < short_timeout,
4280-
"FAIL: Test timed out while waiting for block production",
4281-
);
4282-
thread::sleep(Duration::from_secs(1));
4283-
}
4282+
wait_for(short_timeout.as_secs(), || {
4283+
let info_after = signer_test
4284+
.stacks_client
4285+
.get_peer_info()
4286+
.expect("Failed to get peer info");
4287+
Ok(info_after.stacks_tip_height > info_before.stacks_tip_height)
4288+
})
4289+
.expect("Timed out waiting for block to be mined and processed");
42844290
let blocks_after = mined_blocks.load(Ordering::SeqCst);
42854291
assert_eq!(blocks_after, blocks_before + 1);
42864292

@@ -4348,31 +4354,31 @@ fn reorg_locally_accepted_blocks_across_tenures_succeeds() {
43484354
info!("------------------------- Starting Tenure A -------------------------");
43494355
info!("------------------------- Test Mine Nakamoto Block N -------------------------");
43504356
let mined_blocks = signer_test.running_nodes.nakamoto_blocks_mined.clone();
4351-
let blocks_before = mined_blocks.load(Ordering::SeqCst);
43524357
let info_before = signer_test
43534358
.stacks_client
43544359
.get_peer_info()
43554360
.expect("Failed to get peer info");
4356-
let start_time = Instant::now();
43574361
// submit a tx so that the miner will mine a stacks block
43584362
let mut sender_nonce = 0;
43594363
let transfer_tx =
43604364
make_stacks_transfer(&sender_sk, sender_nonce, send_fee, &recipient, send_amt);
43614365
let tx = submit_tx(&http_origin, &transfer_tx);
43624366
info!("Submitted tx {tx} in to mine block N");
4363-
while mined_blocks.load(Ordering::SeqCst) <= blocks_before {
4364-
assert!(
4365-
start_time.elapsed() < short_timeout,
4366-
"FAIL: Test timed out while waiting for block production",
4367-
);
4368-
thread::sleep(Duration::from_secs(1));
4369-
}
4367+
wait_for(short_timeout.as_secs(), || {
4368+
let info_after = signer_test
4369+
.stacks_client
4370+
.get_peer_info()
4371+
.expect("Failed to get peer info");
4372+
Ok(info_after.stacks_tip_height > info_before.stacks_tip_height)
4373+
})
4374+
.expect("Timed out waiting for block to be mined and processed");
43704375

43714376
sender_nonce += 1;
43724377
let info_after = signer_test
43734378
.stacks_client
43744379
.get_peer_info()
43754380
.expect("Failed to get peer info");
4381+
43764382
assert_eq!(
43774383
info_before.stacks_tip_height + 1,
43784384
info_after.stacks_tip_height
@@ -4400,13 +4406,12 @@ fn reorg_locally_accepted_blocks_across_tenures_succeeds() {
44004406
make_stacks_transfer(&sender_sk, sender_nonce, send_fee, &recipient, send_amt);
44014407
let tx = submit_tx(&http_origin, &transfer_tx);
44024408
info!("Submitted tx {tx} in to attempt to mine block N+1");
4403-
let start_time = Instant::now();
44044409
let blocks_before = mined_blocks.load(Ordering::SeqCst);
44054410
let info_before = signer_test
44064411
.stacks_client
44074412
.get_peer_info()
44084413
.expect("Failed to get peer info");
4409-
loop {
4414+
wait_for(short_timeout.as_secs(), || {
44104415
let ignored_signers = test_observer::get_stackerdb_chunks()
44114416
.into_iter()
44124417
.flat_map(|chunk| chunk.modified_slots)
@@ -4423,15 +4428,9 @@ fn reorg_locally_accepted_blocks_across_tenures_succeeds() {
44234428
}
44244429
})
44254430
.collect::<Vec<_>>();
4426-
if ignored_signers.len() + ignoring_signers.len() == num_signers {
4427-
break;
4428-
}
4429-
assert!(
4430-
start_time.elapsed() < short_timeout,
4431-
"FAIL: Test timed out while waiting for block proposal acceptance",
4432-
);
4433-
sleep_ms(1000);
4434-
}
4431+
Ok(ignored_signers.len() + ignoring_signers.len() == num_signers)
4432+
})
4433+
.expect("FAIL: Timed out waiting for block proposal acceptance");
44354434
let blocks_after = mined_blocks.load(Ordering::SeqCst);
44364435
let info_after = signer_test
44374436
.stacks_client
@@ -4464,25 +4463,23 @@ fn reorg_locally_accepted_blocks_across_tenures_succeeds() {
44644463
.lock()
44654464
.unwrap()
44664465
.replace(Vec::new());
4467-
let mined_blocks = signer_test.running_nodes.nakamoto_blocks_mined.clone();
4468-
let blocks_before = mined_blocks.load(Ordering::SeqCst);
44694466
let info_before = signer_test
44704467
.stacks_client
44714468
.get_peer_info()
44724469
.expect("Failed to get peer info");
4473-
let start_time = Instant::now();
44744470
// submit a tx so that the miner will mine a stacks block
44754471
let transfer_tx =
44764472
make_stacks_transfer(&sender_sk, sender_nonce, send_fee, &recipient, send_amt);
44774473
let tx = submit_tx(&http_origin, &transfer_tx);
44784474
info!("Submitted tx {tx} in to mine block N");
4479-
while mined_blocks.load(Ordering::SeqCst) <= blocks_before {
4480-
assert!(
4481-
start_time.elapsed() < short_timeout,
4482-
"FAIL: Test timed out while waiting for block production",
4483-
);
4484-
thread::sleep(Duration::from_secs(1));
4485-
}
4475+
wait_for(short_timeout.as_secs(), || {
4476+
let info_after = signer_test
4477+
.stacks_client
4478+
.get_peer_info()
4479+
.expect("Failed to get peer info");
4480+
Ok(info_after.stacks_tip_height > info_before.stacks_tip_height)
4481+
})
4482+
.expect("Timed out waiting for block to be mined and processed");
44864483

44874484
let info_after = signer_test
44884485
.stacks_client

0 commit comments

Comments
 (0)