debugging commit
This commit is contained in:
@ -302,7 +302,7 @@ mod tests {
|
|||||||
entries: Vec<Entry>,
|
entries: Vec<Entry>,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn setup_dummy_broadcast_stage() -> DummyBroadcastStage {
|
fn setup_dummy_broadcast_stage(leader_rotation_interval: u64) -> DummyBroadcastStage {
|
||||||
// Setup dummy leader info
|
// Setup dummy leader info
|
||||||
let leader_keypair = Keypair::new();
|
let leader_keypair = Keypair::new();
|
||||||
let my_id = leader_keypair.pubkey();
|
let my_id = leader_keypair.pubkey();
|
||||||
@ -316,6 +316,7 @@ mod tests {
|
|||||||
// Fill the crdt with the buddy's info
|
// Fill the crdt with the buddy's info
|
||||||
let mut crdt = Crdt::new(leader_info.info.clone()).expect("Crdt::new");
|
let mut crdt = Crdt::new(leader_info.info.clone()).expect("Crdt::new");
|
||||||
crdt.insert(&broadcast_buddy.info);
|
crdt.insert(&broadcast_buddy.info);
|
||||||
|
crdt.set_leader_rotation_interval(leader_rotation_interval);
|
||||||
let crdt = Arc::new(RwLock::new(crdt));
|
let crdt = Arc::new(RwLock::new(crdt));
|
||||||
let blob_recycler = BlobRecycler::default();
|
let blob_recycler = BlobRecycler::default();
|
||||||
|
|
||||||
@ -367,11 +368,10 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_broadcast_stage_leader_rotation_exit() {
|
fn test_broadcast_stage_leader_rotation_exit() {
|
||||||
let broadcast_info = setup_dummy_broadcast_stage();
|
|
||||||
let leader_rotation_interval = 10;
|
let leader_rotation_interval = 10;
|
||||||
|
let broadcast_info = setup_dummy_broadcast_stage(leader_rotation_interval);
|
||||||
{
|
{
|
||||||
let mut wcrdt = broadcast_info.crdt.write().unwrap();
|
let mut wcrdt = broadcast_info.crdt.write().unwrap();
|
||||||
wcrdt.set_leader_rotation_interval(leader_rotation_interval);
|
|
||||||
// Set the leader for the next rotation to be myself
|
// Set the leader for the next rotation to be myself
|
||||||
wcrdt.set_scheduled_leader(leader_rotation_interval, broadcast_info.my_id);
|
wcrdt.set_scheduled_leader(leader_rotation_interval, broadcast_info.my_id);
|
||||||
}
|
}
|
||||||
|
@ -201,11 +201,12 @@ impl WriteStage {
|
|||||||
let leader_rotation_interval;
|
let leader_rotation_interval;
|
||||||
{
|
{
|
||||||
let rcrdt = crdt.read().unwrap();
|
let rcrdt = crdt.read().unwrap();
|
||||||
id = crdt.read().unwrap().id;
|
id = rcrdt.id;
|
||||||
leader_rotation_interval = rcrdt.get_leader_rotation_interval();
|
leader_rotation_interval = rcrdt.get_leader_rotation_interval();
|
||||||
}
|
}
|
||||||
let mut entry_height = entry_height;
|
let mut entry_height = entry_height;
|
||||||
loop {
|
loop {
|
||||||
|
info!("write_stage entry height: {}", entry_height);
|
||||||
// Note that entry height is not zero indexed, it starts at 1, so the
|
// Note that entry height is not zero indexed, it starts at 1, so the
|
||||||
// old leader is in power up to and including entry height
|
// old leader is in power up to and including entry height
|
||||||
// n * leader_rotation_interval for some "n". Once we've forwarded
|
// n * leader_rotation_interval for some "n". Once we've forwarded
|
||||||
@ -325,13 +326,15 @@ mod tests {
|
|||||||
bank.process_ledger(entries).expect("process_ledger")
|
bank.process_ledger(entries).expect("process_ledger")
|
||||||
}
|
}
|
||||||
|
|
||||||
fn setup_dummy_write_stage() -> DummyWriteStage {
|
fn setup_dummy_write_stage(leader_rotation_interval: u64) -> DummyWriteStage {
|
||||||
// Setup leader info
|
// Setup leader info
|
||||||
let leader_keypair = Arc::new(Keypair::new());
|
let leader_keypair = Arc::new(Keypair::new());
|
||||||
let my_id = leader_keypair.pubkey();
|
let my_id = leader_keypair.pubkey();
|
||||||
let leader_info = Node::new_localhost_with_pubkey(leader_keypair.pubkey());
|
let leader_info = Node::new_localhost_with_pubkey(leader_keypair.pubkey());
|
||||||
|
|
||||||
let crdt = Arc::new(RwLock::new(Crdt::new(leader_info.info).expect("Crdt::new")));
|
let mut crdt = Crdt::new(leader_info.info).expect("Crdt::new");
|
||||||
|
crdt.set_leader_rotation_interval(leader_rotation_interval);
|
||||||
|
let crdt = Arc::new(RwLock::new(crdt));
|
||||||
let bank = Bank::new_default(true);
|
let bank = Bank::new_default(true);
|
||||||
let bank = Arc::new(bank);
|
let bank = Arc::new(bank);
|
||||||
let blob_recycler = BlobRecycler::default();
|
let blob_recycler = BlobRecycler::default();
|
||||||
@ -369,13 +372,11 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_write_stage_leader_rotation_exit() {
|
fn test_write_stage_leader_rotation_exit() {
|
||||||
let write_stage_info = setup_dummy_write_stage();
|
|
||||||
let leader_rotation_interval = 10;
|
let leader_rotation_interval = 10;
|
||||||
|
let write_stage_info = setup_dummy_write_stage(leader_rotation_interval);
|
||||||
|
|
||||||
{
|
{
|
||||||
let mut wcrdt = write_stage_info.crdt.write().unwrap();
|
let mut wcrdt = write_stage_info.crdt.write().unwrap();
|
||||||
|
|
||||||
wcrdt.set_leader_rotation_interval(leader_rotation_interval);
|
|
||||||
wcrdt.set_scheduled_leader(leader_rotation_interval, write_stage_info.my_id);
|
wcrdt.set_scheduled_leader(leader_rotation_interval, write_stage_info.my_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -420,7 +421,7 @@ mod tests {
|
|||||||
WriteStageReturnType::LeaderRotation
|
WriteStageReturnType::LeaderRotation
|
||||||
);
|
);
|
||||||
|
|
||||||
// Make sure the ledger contains exactly leader_rotation_interval entries
|
// Make sure the ledger contains exactly 2 * leader_rotation_interval entries
|
||||||
let (entry_height, _) =
|
let (entry_height, _) =
|
||||||
process_ledger(&write_stage_info.leader_ledger_path, &write_stage_info.bank);
|
process_ledger(&write_stage_info.leader_ledger_path, &write_stage_info.bank);
|
||||||
remove_dir_all(write_stage_info.leader_ledger_path).unwrap();
|
remove_dir_all(write_stage_info.leader_ledger_path).unwrap();
|
||||||
|
@ -767,8 +767,6 @@ fn test_leader_to_validator_transition() {
|
|||||||
);
|
);
|
||||||
|
|
||||||
let genesis_height = entries.len() as u64;
|
let genesis_height = entries.len() as u64;
|
||||||
let mut ledger_paths = Vec::new();
|
|
||||||
ledger_paths.push(leader_ledger_path.clone());
|
|
||||||
|
|
||||||
// Start the leader node
|
// Start the leader node
|
||||||
let leader_keypair = Keypair::new();
|
let leader_keypair = Keypair::new();
|
||||||
@ -848,6 +846,7 @@ fn test_leader_to_validator_transition() {
|
|||||||
// Shut down
|
// Shut down
|
||||||
ncp.close().unwrap();
|
ncp.close().unwrap();
|
||||||
leader.close().unwrap();
|
leader.close().unwrap();
|
||||||
|
remove_dir_all(leader_ledger_path).unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
fn mk_client(leader: &NodeInfo) -> ThinClient {
|
fn mk_client(leader: &NodeInfo) -> ThinClient {
|
||||||
|
Reference in New Issue
Block a user