Skip to content

Commit 98f187c

Browse files
committed
feat: update continue_tenure_extend to ensure naka blocks after TenureExtend
1 parent c4b4635 commit 98f187c

File tree

1 file changed

+33
-6
lines changed

1 file changed

+33
-6
lines changed

testnet/stacks-node/src/tests/nakamoto_integrations.rs

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ use stacks_signer::chainstate::{ProposalEvalConfig, SortitionsView};
9191
use stacks_signer::signerdb::{BlockInfo, BlockState, ExtraBlockInfo, SignerDb};
9292

9393
use super::bitcoin_regtest::BitcoinCoreController;
94-
use crate::config::{EventKeyType, EventObserverConfig, InitialBalance};
94+
use crate::config::{EventKeyType, InitialBalance};
9595
use crate::nakamoto_node::miner::{
9696
TEST_BLOCK_ANNOUNCE_STALL, TEST_BROADCAST_STALL, TEST_MINE_STALL, TEST_SKIP_P2P_BROADCAST,
9797
};
@@ -6506,10 +6506,10 @@ fn continue_tenure_extend() {
65066506
// setup sender + recipient for a test stx transfer
65076507
let sender_addr = tests::to_addr(&sender_sk);
65086508
let send_amt = 1000;
6509-
let send_fee = 100;
6509+
let send_fee = 200;
65106510
naka_conf.add_initial_balance(
65116511
PrincipalData::from(sender_addr.clone()).to_string(),
6512-
send_amt * 2 + send_fee,
6512+
(send_amt + send_fee) * 20,
65136513
);
65146514
let sender_signer_sk = Secp256k1PrivateKey::new();
65156515
let sender_signer_addr = tests::to_addr(&sender_signer_sk);
@@ -6519,6 +6519,7 @@ fn continue_tenure_extend() {
65196519
);
65206520
let recipient = PrincipalData::from(StacksAddress::burn_address(false));
65216521
let stacker_sk = setup_stacker(&mut naka_conf);
6522+
let mut transfer_nonce = 0;
65226523

65236524
test_observer::spawn();
65246525
test_observer::register_any(&mut naka_conf);
@@ -6637,7 +6638,8 @@ fn continue_tenure_extend() {
66376638
.unwrap();
66386639

66396640
// Submit a TX
6640-
let transfer_tx = make_stacks_transfer(&sender_sk, 0, send_fee, &recipient, send_amt);
6641+
let transfer_tx =
6642+
make_stacks_transfer(&sender_sk, transfer_nonce, send_fee, &recipient, send_amt);
66416643
let transfer_tx_hex = format!("0x{}", to_hex(&transfer_tx));
66426644

66436645
let tip = NakamotoChainState::get_canonical_block_header(chainstate.db(), &sortdb)
@@ -6694,6 +6696,20 @@ fn continue_tenure_extend() {
66946696
})
66956697
.unwrap();
66966698

6699+
// Mine 3 nakamoto tenures
6700+
for i in 0..3 {
6701+
info!("Triggering Nakamoto blocks after extend ({})", i + 1);
6702+
transfer_nonce += 1;
6703+
let transfer_tx =
6704+
make_stacks_transfer(&sender_sk, transfer_nonce, send_fee, &recipient, send_amt);
6705+
submit_tx(&http_origin, &transfer_tx);
6706+
wait_for(10, || {
6707+
let sender_nonce = get_account(&http_origin, &to_addr(&sender_sk)).nonce;
6708+
Ok(sender_nonce >= transfer_nonce)
6709+
})
6710+
.expect("Timed out waiting for transfer TX to confirm");
6711+
}
6712+
66976713
info!("Resuming commit ops to mine regular tenures.");
66986714
test_skip_commit_op.0.lock().unwrap().replace(false);
66996715

@@ -6731,7 +6747,9 @@ fn continue_tenure_extend() {
67316747
let mut tenure_extends = vec![];
67326748
let mut tenure_block_founds = vec![];
67336749
let mut transfer_tx_included = false;
6750+
let mut last_block_had_extend = false;
67346751
for block in test_observer::get_blocks() {
6752+
let mut has_extend = false;
67356753
for tx in block["transactions"].as_array().unwrap() {
67366754
let raw_tx = tx["raw_tx"].as_str().unwrap();
67376755
if raw_tx == &transfer_tx_hex {
@@ -6745,12 +6763,21 @@ fn continue_tenure_extend() {
67456763
let parsed = StacksTransaction::consensus_deserialize(&mut &tx_bytes[..]).unwrap();
67466764
match &parsed.payload {
67476765
TransactionPayload::TenureChange(payload) => match payload.cause {
6748-
TenureChangeCause::Extended => tenure_extends.push(parsed),
6749-
TenureChangeCause::BlockFound => tenure_block_founds.push(parsed),
6766+
TenureChangeCause::Extended => {
6767+
has_extend = true;
6768+
tenure_extends.push(parsed);
6769+
}
6770+
TenureChangeCause::BlockFound => {
6771+
if last_block_had_extend {
6772+
panic!("Expected a Nakamoto block to happen after tenure extend block");
6773+
}
6774+
tenure_block_founds.push(parsed);
6775+
}
67506776
},
67516777
_ => {}
67526778
};
67536779
}
6780+
last_block_had_extend = has_extend;
67546781
}
67556782
assert!(
67566783
!tenure_extends.is_empty(),

0 commit comments

Comments
 (0)