From d648a3b7527b92ad5aa0c32806d7233587fabc49 Mon Sep 17 00:00:00 2001 From: nicopado Date: Mon, 16 May 2022 10:43:50 +0200 Subject: [PATCH 1/6] restored test --- .../src/networking/stake_pool/retire.rs | 52 ++++++++++++++----- 1 file changed, 39 insertions(+), 13 deletions(-) diff --git a/testing/jormungandr-integration-tests/src/networking/stake_pool/retire.rs b/testing/jormungandr-integration-tests/src/networking/stake_pool/retire.rs index f86788ce87..0d42ba2f99 100644 --- a/testing/jormungandr-integration-tests/src/networking/stake_pool/retire.rs +++ b/testing/jormungandr-integration-tests/src/networking/stake_pool/retire.rs @@ -7,21 +7,29 @@ use hersir::builder::Topology; use jormungandr_automation::testing::time; use jormungandr_lib::interfaces::BlockDate; use thor::FragmentSender; + const LEADER_1: &str = "Leader_1"; const LEADER_2: &str = "Leader_2"; const LEADER_3: &str = "Leader_3"; const LEADER_4: &str = "Leader_4"; +const INITIAL_FUNDS:u64 = 2_000_000_000; const ALICE: &str = "ALICE"; -const BOB: &str = "BOB"; +const BOB: &str = "BOB"; const CLARICE: &str = "CLARICE"; const DAVID: &str = "DAVID"; -// FIX: there's a bug in our current handling of stake pool retirement -// re-enable this test once we fix that +const SLOTS_PER_EPOCH: u32 = 10; +const SLOT_DURATION:u8 = 1; + #[test] -#[ignore] pub fn retire_stake_pool_explorer() { + println!("***************************************************************************************** START"); + + let first_date = BlockDate::new(0, SLOTS_PER_EPOCH / 2); + let second_date = BlockDate::new(2, SLOTS_PER_EPOCH / 2); + let third_date = BlockDate::new(4, SLOTS_PER_EPOCH / 2); + let mut controller = NetworkBuilder::default() .topology( Topology::default() @@ -32,32 +40,32 @@ pub fn retire_stake_pool_explorer() { ) .blockchain_config( BlockchainBuilder::default() - .slots_per_epoch(60) - .slot_duration(2) + .slots_per_epoch(SLOTS_PER_EPOCH) + .slot_duration(SLOT_DURATION) .leaders(vec![LEADER_1, LEADER_2, LEADER_3, LEADER_4]) .build(), ) .wallet_template( WalletTemplateBuilder::new(ALICE) - .with(2_000_000_000) + .with(INITIAL_FUNDS) .delegated_to(LEADER_1) .build(), ) .wallet_template( WalletTemplateBuilder::new(BOB) - .with(2_000_000_000) + .with(INITIAL_FUNDS) .delegated_to(LEADER_2) .build(), ) .wallet_template( WalletTemplateBuilder::new(CLARICE) - .with(2_000_000_000) + .with(INITIAL_FUNDS) .delegated_to(LEADER_3) .build(), ) .wallet_template( WalletTemplateBuilder::new(DAVID) - .with(2_000_000_000) + .with(INITIAL_FUNDS) .delegated_to(LEADER_4) .build(), ) @@ -77,12 +85,16 @@ pub fn retire_stake_pool_explorer() { .spawn(SpawnParams::new(LEADER_4).in_memory()) .unwrap(); - time::wait_for_date(BlockDate::new(0, 30), leader_1.rest()); + time::wait_for_date(first_date, leader_1.rest()); + + println!("***************************************************************************************** FLAG 1"); let explorer_process = leader_1.explorer(); let explorer = explorer_process.client(); let stake_pool_3 = controller.stake_pool(LEADER_3).unwrap().clone(); + println!("***************************************************************************************** FLAG 2"); + let stake_pool_state_before = explorer .stake_pool(stake_pool_3.info().to_id().to_string(), 0) .unwrap(); @@ -96,30 +108,44 @@ pub fn retire_stake_pool_explorer() { "retirement field in explorer should be empty", ); + println!("***************************************************************************************** FLAG 3"); + let mut david = controller.wallet(DAVID).unwrap(); let mut spo_3 = stake_pool_3.owner().clone(); let fragment_sender = FragmentSender::from(&controller.settings().block0); + println!("***************************************************************************************** FLAG 4"); + fragment_sender .send_transaction(&mut david, &spo_3, &leader_1, 100.into()) .unwrap(); + time::wait_for_date(second_date, leader_1.rest()); + + println!("***************************************************************************************** FLAG 5"); + fragment_sender .send_pool_retire(&mut spo_3, &stake_pool_3, &leader_1) .unwrap(); - time::wait_for_date(BlockDate::new(1, 30), leader_1.rest()); + + println!("***************************************************************************************** FLAG 6"); + + time::wait_for_date(third_date, leader_1.rest()); let created_block_count = leader_3.logger.get_created_blocks_hashes().len(); let start_time_no_block = std::time::SystemTime::now(); + println!("***************************************************************************************** FLAG 7"); + // proof 1: explorer shows as retired let stake_pool_state_after = explorer .stake_pool(stake_pool_3.id().to_string(), 0) .unwrap(); + assert!( - stake_pool_state_after + !stake_pool_state_after .data .unwrap() .stake_pool From 9ff6678debea78738b850a136494fc6dd2226f65 Mon Sep 17 00:00:00 2001 From: nicopado Date: Mon, 16 May 2022 10:49:58 +0200 Subject: [PATCH 2/6] cargo fmt --- .../src/networking/stake_pool/retire.rs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/testing/jormungandr-integration-tests/src/networking/stake_pool/retire.rs b/testing/jormungandr-integration-tests/src/networking/stake_pool/retire.rs index 0d42ba2f99..c2ec6ba6fa 100644 --- a/testing/jormungandr-integration-tests/src/networking/stake_pool/retire.rs +++ b/testing/jormungandr-integration-tests/src/networking/stake_pool/retire.rs @@ -13,14 +13,14 @@ const LEADER_2: &str = "Leader_2"; const LEADER_3: &str = "Leader_3"; const LEADER_4: &str = "Leader_4"; -const INITIAL_FUNDS:u64 = 2_000_000_000; +const INITIAL_FUNDS: u64 = 2_000_000_000; const ALICE: &str = "ALICE"; -const BOB: &str = "BOB"; +const BOB: &str = "BOB"; const CLARICE: &str = "CLARICE"; const DAVID: &str = "DAVID"; const SLOTS_PER_EPOCH: u32 = 10; -const SLOT_DURATION:u8 = 1; +const SLOT_DURATION: u8 = 1; #[test] pub fn retire_stake_pool_explorer() { @@ -129,7 +129,6 @@ pub fn retire_stake_pool_explorer() { .send_pool_retire(&mut spo_3, &stake_pool_3, &leader_1) .unwrap(); - println!("***************************************************************************************** FLAG 6"); time::wait_for_date(third_date, leader_1.rest()); From e0fe23d818bcfc645137b8a1ec3255002e18c8cc Mon Sep 17 00:00:00 2001 From: nicopado Date: Mon, 16 May 2022 11:17:29 +0200 Subject: [PATCH 3/6] clippy suggestion --- .../src/networking/stake_pool/retire.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/testing/jormungandr-integration-tests/src/networking/stake_pool/retire.rs b/testing/jormungandr-integration-tests/src/networking/stake_pool/retire.rs index c2ec6ba6fa..51943f43fe 100644 --- a/testing/jormungandr-integration-tests/src/networking/stake_pool/retire.rs +++ b/testing/jormungandr-integration-tests/src/networking/stake_pool/retire.rs @@ -144,12 +144,12 @@ pub fn retire_stake_pool_explorer() { .unwrap(); assert!( - !stake_pool_state_after + stake_pool_state_after .data .unwrap() .stake_pool .retirement - .is_none(), + .is_some(), "retirement field in explorer should not be empty", ); From 6ac7361cdbc8941fa7b6294f32e9dbdd1174495b Mon Sep 17 00:00:00 2001 From: nicopado Date: Tue, 17 May 2022 11:24:38 +0200 Subject: [PATCH 4/6] removed debugs --- .../src/networking/stake_pool/retire.rs | 26 +++++-------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/testing/jormungandr-integration-tests/src/networking/stake_pool/retire.rs b/testing/jormungandr-integration-tests/src/networking/stake_pool/retire.rs index 51943f43fe..b7daca1536 100644 --- a/testing/jormungandr-integration-tests/src/networking/stake_pool/retire.rs +++ b/testing/jormungandr-integration-tests/src/networking/stake_pool/retire.rs @@ -20,16 +20,18 @@ const CLARICE: &str = "CLARICE"; const DAVID: &str = "DAVID"; const SLOTS_PER_EPOCH: u32 = 10; -const SLOT_DURATION: u8 = 1; +const SLOT_DURATION: u8 = 2; #[test] pub fn retire_stake_pool_explorer() { - println!("***************************************************************************************** START"); - + // Each step needs to be performed with one block between each other to avoid flakiness let first_date = BlockDate::new(0, SLOTS_PER_EPOCH / 2); let second_date = BlockDate::new(2, SLOTS_PER_EPOCH / 2); let third_date = BlockDate::new(4, SLOTS_PER_EPOCH / 2); - + + // Assertion just need to be somewhere in the future + let assert_date = BlockDate::new(5, 0); + let mut controller = NetworkBuilder::default() .topology( Topology::default() @@ -87,14 +89,10 @@ pub fn retire_stake_pool_explorer() { time::wait_for_date(first_date, leader_1.rest()); - println!("***************************************************************************************** FLAG 1"); - let explorer_process = leader_1.explorer(); let explorer = explorer_process.client(); let stake_pool_3 = controller.stake_pool(LEADER_3).unwrap().clone(); - println!("***************************************************************************************** FLAG 2"); - let stake_pool_state_before = explorer .stake_pool(stake_pool_3.info().to_id().to_string(), 0) .unwrap(); @@ -108,36 +106,26 @@ pub fn retire_stake_pool_explorer() { "retirement field in explorer should be empty", ); - println!("***************************************************************************************** FLAG 3"); - let mut david = controller.wallet(DAVID).unwrap(); let mut spo_3 = stake_pool_3.owner().clone(); let fragment_sender = FragmentSender::from(&controller.settings().block0); - println!("***************************************************************************************** FLAG 4"); - fragment_sender .send_transaction(&mut david, &spo_3, &leader_1, 100.into()) .unwrap(); time::wait_for_date(second_date, leader_1.rest()); - println!("***************************************************************************************** FLAG 5"); - fragment_sender .send_pool_retire(&mut spo_3, &stake_pool_3, &leader_1) .unwrap(); - println!("***************************************************************************************** FLAG 6"); - time::wait_for_date(third_date, leader_1.rest()); let created_block_count = leader_3.logger.get_created_blocks_hashes().len(); let start_time_no_block = std::time::SystemTime::now(); - println!("***************************************************************************************** FLAG 7"); - // proof 1: explorer shows as retired let stake_pool_state_after = explorer .stake_pool(stake_pool_3.id().to_string(), 0) @@ -161,7 +149,7 @@ pub fn retire_stake_pool_explorer() { ); //proof 3: no more minted blocks hashes in logs - std::thread::sleep(std::time::Duration::from_secs(10)); + time::wait_for_date(assert_date, leader_1.rest()); assert!( leader_3 .logger From 5a836ec8bd8f6f478f3896b7b2e6a448a8e4b52a Mon Sep 17 00:00:00 2001 From: nicopado Date: Tue, 17 May 2022 11:30:17 +0200 Subject: [PATCH 5/6] fmt --- .../src/networking/stake_pool/retire.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/testing/jormungandr-integration-tests/src/networking/stake_pool/retire.rs b/testing/jormungandr-integration-tests/src/networking/stake_pool/retire.rs index b7daca1536..45b78a4d87 100644 --- a/testing/jormungandr-integration-tests/src/networking/stake_pool/retire.rs +++ b/testing/jormungandr-integration-tests/src/networking/stake_pool/retire.rs @@ -28,10 +28,10 @@ pub fn retire_stake_pool_explorer() { let first_date = BlockDate::new(0, SLOTS_PER_EPOCH / 2); let second_date = BlockDate::new(2, SLOTS_PER_EPOCH / 2); let third_date = BlockDate::new(4, SLOTS_PER_EPOCH / 2); - + // Assertion just need to be somewhere in the future let assert_date = BlockDate::new(5, 0); - + let mut controller = NetworkBuilder::default() .topology( Topology::default() From 57110d0abc0b322058d93672a91d0a7f05488305 Mon Sep 17 00:00:00 2001 From: nicopado Date: Wed, 18 May 2022 11:41:00 +0200 Subject: [PATCH 6/6] left a single leader in blockchain configuration --- .../src/networking/stake_pool/retire.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testing/jormungandr-integration-tests/src/networking/stake_pool/retire.rs b/testing/jormungandr-integration-tests/src/networking/stake_pool/retire.rs index 45b78a4d87..c5fb9fe9be 100644 --- a/testing/jormungandr-integration-tests/src/networking/stake_pool/retire.rs +++ b/testing/jormungandr-integration-tests/src/networking/stake_pool/retire.rs @@ -44,7 +44,7 @@ pub fn retire_stake_pool_explorer() { BlockchainBuilder::default() .slots_per_epoch(SLOTS_PER_EPOCH) .slot_duration(SLOT_DURATION) - .leaders(vec![LEADER_1, LEADER_2, LEADER_3, LEADER_4]) + .leaders(vec![LEADER_1]) .build(), ) .wallet_template(