Skip to content

Commit 6d60dad

Browse files
authored
Merge pull request #5299 from stacks-network/chore/fix-multiple-miners-2
Fix boot to epoch 3 calls to retrieve the stacker set and fix multple miners test
2 parents f9e735b + e7a8fff commit 6d60dad

File tree

2 files changed

+25
-24
lines changed

2 files changed

+25
-24
lines changed

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

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -255,18 +255,17 @@ pub fn check_nakamoto_empty_block_heuristics() {
255255
}
256256
}
257257

258-
pub fn get_stacker_set(http_origin: &str, cycle: u64) -> GetStackersResponse {
258+
pub fn get_stacker_set(http_origin: &str, cycle: u64) -> Result<GetStackersResponse, String> {
259259
let client = reqwest::blocking::Client::new();
260260
let path = format!("{http_origin}/v3/stacker_set/{cycle}");
261261
let res = client
262262
.get(&path)
263263
.send()
264264
.unwrap()
265265
.json::<serde_json::Value>()
266-
.unwrap();
266+
.map_err(|e| format!("{e}"))?;
267267
info!("Stacker set response: {res}");
268-
let res = serde_json::from_value(res).unwrap();
269-
res
268+
serde_json::from_value(res).map_err(|e| format!("{e}"))
270269
}
271270

272271
pub fn get_stackerdb_slot_version(
@@ -886,19 +885,21 @@ pub fn boot_to_epoch_3(
886885
signers.signer_keys = signer_sks.to_vec();
887886
}
888887

889-
let prepare_phase_start = btc_regtest_controller
888+
// the reward set is generally calculated in the first block of the prepare phase hence the + 1
889+
let reward_set_calculation = btc_regtest_controller
890890
.get_burnchain()
891891
.pox_constants
892892
.prepare_phase_start(
893893
btc_regtest_controller.get_burnchain().first_block_height,
894894
reward_cycle,
895-
);
895+
)
896+
+ 1;
896897

897898
// Run until the prepare phase
898899
run_until_burnchain_height(
899900
btc_regtest_controller,
900901
&blocks_processed,
901-
prepare_phase_start,
902+
reward_set_calculation,
902903
&naka_conf,
903904
);
904905

@@ -909,7 +910,11 @@ pub fn boot_to_epoch_3(
909910
let aggregate_public_key = clarity::vm::Value::buff_from(aggregate_key)
910911
.expect("Failed to serialize aggregate public key");
911912
let signer_sks_unique: HashMap<_, _> = signer_sks.iter().map(|x| (x.to_hex(), x)).collect();
912-
let signer_set = get_stacker_set(&http_origin, reward_cycle + 1);
913+
wait_for(30, || {
914+
Ok(get_stacker_set(&http_origin, reward_cycle + 1).is_ok())
915+
})
916+
.expect("Timed out waiting for stacker set");
917+
let signer_set = get_stacker_set(&http_origin, reward_cycle + 1).unwrap();
913918
// Vote on the aggregate public key
914919
for signer_sk in signer_sks_unique.values() {
915920
let signer_index =
@@ -1040,19 +1045,21 @@ pub fn boot_to_pre_epoch_3_boundary(
10401045
signers.signer_keys = signer_sks.to_vec();
10411046
}
10421047

1043-
let prepare_phase_start = btc_regtest_controller
1048+
// the reward set is generally calculated in the first block of the prepare phase hence the + 1
1049+
let reward_set_calculation = btc_regtest_controller
10441050
.get_burnchain()
10451051
.pox_constants
10461052
.prepare_phase_start(
10471053
btc_regtest_controller.get_burnchain().first_block_height,
10481054
reward_cycle,
1049-
);
1055+
)
1056+
+ 1;
10501057

10511058
// Run until the prepare phase
10521059
run_until_burnchain_height(
10531060
btc_regtest_controller,
10541061
&blocks_processed,
1055-
prepare_phase_start,
1062+
reward_set_calculation,
10561063
&naka_conf,
10571064
);
10581065

@@ -1063,7 +1070,11 @@ pub fn boot_to_pre_epoch_3_boundary(
10631070
let aggregate_public_key = clarity::vm::Value::buff_from(aggregate_key)
10641071
.expect("Failed to serialize aggregate public key");
10651072
let signer_sks_unique: HashMap<_, _> = signer_sks.iter().map(|x| (x.to_hex(), x)).collect();
1066-
let signer_set = get_stacker_set(&http_origin, reward_cycle + 1);
1073+
wait_for(30, || {
1074+
Ok(get_stacker_set(&http_origin, reward_cycle + 1).is_ok())
1075+
})
1076+
.expect("Timed out waiting for stacker set");
1077+
let signer_set = get_stacker_set(&http_origin, reward_cycle + 1).unwrap();
10671078
// Vote on the aggregate public key
10681079
for signer_sk in signer_sks_unique.values() {
10691080
let signer_index =
@@ -2566,7 +2577,7 @@ fn correct_burn_outs() {
25662577
info!("first_epoch_3_cycle: {:?}", first_epoch_3_cycle);
25672578

25682579
let http_origin = format!("http://{}", &naka_conf.node.rpc_bind);
2569-
let stacker_response = get_stacker_set(&http_origin, first_epoch_3_cycle);
2580+
let stacker_response = get_stacker_set(&http_origin, first_epoch_3_cycle).unwrap();
25702581
assert!(stacker_response.stacker_set.signers.is_some());
25712582
assert_eq!(
25722583
stacker_response.stacker_set.signers.as_ref().unwrap().len(),
@@ -8179,6 +8190,7 @@ fn mock_mining() {
81798190

81808191
let (mut naka_conf, _miner_account) = naka_neon_integration_conf(None);
81818192
naka_conf.miner.wait_on_interim_blocks = Duration::from_secs(1);
8193+
naka_conf.node.pox_sync_sample_secs = 5;
81828194
let sender_sk = Secp256k1PrivateKey::new();
81838195
let sender_signer_sk = Secp256k1PrivateKey::new();
81848196
let sender_signer_addr = tests::to_addr(&sender_signer_sk);

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

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ use stacks::net::api::getaccount::AccountEntryResponse;
5353
use stacks::net::api::getcontractsrc::ContractSrcResponse;
5454
use stacks::net::api::getinfo::RPCPeerInfoData;
5555
use stacks::net::api::getpoxinfo::RPCPoxInfoData;
56-
use stacks::net::api::getstackers::GetStackersResponse;
5756
use stacks::net::api::gettransaction_unconfirmed::UnconfirmedTransactionResponse;
5857
use stacks::net::api::postblock::StacksBlockAcceptedData;
5958
use stacks::net::api::postfeerate::RPCFeeEstimateResponse;
@@ -1437,16 +1436,6 @@ pub fn get_contract_src(
14371436
}
14381437
}
14391438

1440-
pub fn get_stacker_set(http_origin: &str, reward_cycle: u64) -> GetStackersResponse {
1441-
let client = reqwest::blocking::Client::new();
1442-
let path = format!("{}/v3/stacker_set/{}", http_origin, reward_cycle);
1443-
let res = client.get(&path).send().unwrap();
1444-
1445-
info!("Got stacker_set response {:?}", &res);
1446-
let res = res.json::<GetStackersResponse>().unwrap();
1447-
res
1448-
}
1449-
14501439
#[test]
14511440
#[ignore]
14521441
fn deep_contract() {

0 commit comments

Comments
 (0)