mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-30 07:17:56 +00:00
Remove pre-simple-payout code from staking (#6253)
* Remove some dead code * fix * Kill warnings
This commit is contained in:
@@ -4461,330 +4461,6 @@ fn bond_during_era_correctly_populates_claimed_rewards() {
|
||||
});
|
||||
}
|
||||
|
||||
/* These migration tests below can be removed once migration code is removed */
|
||||
|
||||
#[test]
|
||||
fn rewards_should_work_before_migration() {
|
||||
// should check that before migration:
|
||||
// * rewards get recorded per session
|
||||
// * rewards get paid per Era
|
||||
// * Check that nominators are also rewarded
|
||||
ExtBuilder::default().nominate(true).build_and_execute(|| {
|
||||
MigrateEra::put(10);
|
||||
let init_balance_10 = Balances::total_balance(&10);
|
||||
let init_balance_11 = Balances::total_balance(&11);
|
||||
let init_balance_20 = Balances::total_balance(&20);
|
||||
let init_balance_21 = Balances::total_balance(&21);
|
||||
let init_balance_100 = Balances::total_balance(&100);
|
||||
let init_balance_101 = Balances::total_balance(&101);
|
||||
|
||||
// Check state
|
||||
Payee::<Test>::insert(11, RewardDestination::Controller);
|
||||
Payee::<Test>::insert(21, RewardDestination::Controller);
|
||||
Payee::<Test>::insert(101, RewardDestination::Controller);
|
||||
|
||||
<Module<Test>>::reward_by_ids(vec![(11, 50)]);
|
||||
<Module<Test>>::reward_by_ids(vec![(11, 50)]);
|
||||
// This is the second validator of the current elected set.
|
||||
<Module<Test>>::reward_by_ids(vec![(21, 50)]);
|
||||
|
||||
// Compute total payout now for whole duration as other parameter won't change
|
||||
let total_payout_0 = current_total_payout_for_duration(3 * 1000);
|
||||
assert!(total_payout_0 > 10); // Test is meaningful if reward something
|
||||
|
||||
start_session(1);
|
||||
|
||||
assert_eq!(Balances::total_balance(&10), init_balance_10);
|
||||
assert_eq!(Balances::total_balance(&11), init_balance_11);
|
||||
assert_eq!(Balances::total_balance(&20), init_balance_20);
|
||||
assert_eq!(Balances::total_balance(&21), init_balance_21);
|
||||
assert_eq!(Balances::total_balance(&100), init_balance_100);
|
||||
assert_eq!(Balances::total_balance(&101), init_balance_101);
|
||||
assert_eq_uvec!(Session::validators(), vec![11, 21]);
|
||||
assert_eq!(Staking::eras_reward_points(Staking::active_era().unwrap().index), EraRewardPoints {
|
||||
total: 50*3,
|
||||
individual: vec![(11, 100), (21, 50)].into_iter().collect(),
|
||||
});
|
||||
let part_for_10 = Perbill::from_rational_approximation::<u32>(1000, 1125);
|
||||
let part_for_20 = Perbill::from_rational_approximation::<u32>(1000, 1375);
|
||||
let part_for_100_from_10 = Perbill::from_rational_approximation::<u32>(125, 1125);
|
||||
let part_for_100_from_20 = Perbill::from_rational_approximation::<u32>(375, 1375);
|
||||
|
||||
start_session(2);
|
||||
start_session(3);
|
||||
|
||||
assert_eq!(Staking::active_era().unwrap().index, 1);
|
||||
mock::make_all_reward_payment_before_migration(0);
|
||||
|
||||
assert_eq_error_rate!(Balances::total_balance(&10), init_balance_10 + part_for_10 * total_payout_0*2/3, 2);
|
||||
assert_eq_error_rate!(Balances::total_balance(&11), init_balance_11, 2);
|
||||
assert_eq_error_rate!(Balances::total_balance(&20), init_balance_20 + part_for_20 * total_payout_0*1/3, 2);
|
||||
assert_eq_error_rate!(Balances::total_balance(&21), init_balance_21, 2);
|
||||
assert_eq_error_rate!(
|
||||
Balances::total_balance(&100),
|
||||
init_balance_100
|
||||
+ part_for_100_from_10 * total_payout_0 * 2/3
|
||||
+ part_for_100_from_20 * total_payout_0 * 1/3,
|
||||
2
|
||||
);
|
||||
assert_eq_error_rate!(Balances::total_balance(&101), init_balance_101, 2);
|
||||
|
||||
assert_eq_uvec!(Session::validators(), vec![11, 21]);
|
||||
<Module<Test>>::reward_by_ids(vec![(11, 1)]);
|
||||
|
||||
// Compute total payout now for whole duration as other parameter won't change
|
||||
let total_payout_1 = current_total_payout_for_duration(3 * 1000);
|
||||
assert!(total_payout_1 > 10); // Test is meaningful if reward something
|
||||
|
||||
mock::start_era(2);
|
||||
mock::make_all_reward_payment_before_migration(1);
|
||||
|
||||
assert_eq_error_rate!(Balances::total_balance(&10), init_balance_10 + part_for_10 * (total_payout_0 * 2/3 + total_payout_1), 2);
|
||||
assert_eq_error_rate!(Balances::total_balance(&11), init_balance_11, 2);
|
||||
assert_eq_error_rate!(Balances::total_balance(&20), init_balance_20 + part_for_20 * total_payout_0 * 1/3, 2);
|
||||
assert_eq_error_rate!(Balances::total_balance(&21), init_balance_21, 2);
|
||||
assert_eq_error_rate!(
|
||||
Balances::total_balance(&100),
|
||||
init_balance_100
|
||||
+ part_for_100_from_10 * (total_payout_0 * 2/3 + total_payout_1)
|
||||
+ part_for_100_from_20 * total_payout_0 * 1/3,
|
||||
2
|
||||
);
|
||||
assert_eq_error_rate!(Balances::total_balance(&101), init_balance_101, 2);
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn migrate_era_should_work() {
|
||||
// should check that before and after migration:
|
||||
// * rewards get recorded per session
|
||||
// * rewards get paid per Era
|
||||
// * Check that nominators are also rewarded
|
||||
ExtBuilder::default().nominate(true).build_and_execute(|| {
|
||||
MigrateEra::put(1);
|
||||
let init_balance_10 = Balances::total_balance(&10);
|
||||
let init_balance_11 = Balances::total_balance(&11);
|
||||
let init_balance_20 = Balances::total_balance(&20);
|
||||
let init_balance_21 = Balances::total_balance(&21);
|
||||
let init_balance_100 = Balances::total_balance(&100);
|
||||
let init_balance_101 = Balances::total_balance(&101);
|
||||
|
||||
// Check state
|
||||
Payee::<Test>::insert(11, RewardDestination::Controller);
|
||||
Payee::<Test>::insert(21, RewardDestination::Controller);
|
||||
Payee::<Test>::insert(101, RewardDestination::Controller);
|
||||
|
||||
<Module<Test>>::reward_by_ids(vec![(11, 50)]);
|
||||
<Module<Test>>::reward_by_ids(vec![(11, 50)]);
|
||||
// This is the second validator of the current elected set.
|
||||
<Module<Test>>::reward_by_ids(vec![(21, 50)]);
|
||||
|
||||
// Compute total payout now for whole duration as other parameter won't change
|
||||
let total_payout_0 = current_total_payout_for_duration(3 * 1000);
|
||||
assert!(total_payout_0 > 10); // Test is meaningful if reward something
|
||||
|
||||
start_session(1);
|
||||
|
||||
assert_eq!(Balances::total_balance(&10), init_balance_10);
|
||||
assert_eq!(Balances::total_balance(&11), init_balance_11);
|
||||
assert_eq!(Balances::total_balance(&20), init_balance_20);
|
||||
assert_eq!(Balances::total_balance(&21), init_balance_21);
|
||||
assert_eq!(Balances::total_balance(&100), init_balance_100);
|
||||
assert_eq!(Balances::total_balance(&101), init_balance_101);
|
||||
assert_eq_uvec!(Session::validators(), vec![11, 21]);
|
||||
assert_eq!(Staking::eras_reward_points(Staking::active_era().unwrap().index), EraRewardPoints {
|
||||
total: 50*3,
|
||||
individual: vec![(11, 100), (21, 50)].into_iter().collect(),
|
||||
});
|
||||
let part_for_10 = Perbill::from_rational_approximation::<u32>(1000, 1125);
|
||||
let part_for_20 = Perbill::from_rational_approximation::<u32>(1000, 1375);
|
||||
let part_for_100_from_10 = Perbill::from_rational_approximation::<u32>(125, 1125);
|
||||
let part_for_100_from_20 = Perbill::from_rational_approximation::<u32>(375, 1375);
|
||||
|
||||
start_session(2);
|
||||
start_session(3);
|
||||
|
||||
assert_eq!(Staking::active_era().unwrap().index, 1);
|
||||
mock::make_all_reward_payment_before_migration(0);
|
||||
|
||||
assert_eq_error_rate!(Balances::total_balance(&10), init_balance_10 + part_for_10 * total_payout_0*2/3, 2);
|
||||
assert_eq_error_rate!(Balances::total_balance(&11), init_balance_11, 2);
|
||||
assert_eq_error_rate!(Balances::total_balance(&20), init_balance_20 + part_for_20 * total_payout_0*1/3, 2);
|
||||
assert_eq_error_rate!(Balances::total_balance(&21), init_balance_21, 2);
|
||||
assert_eq_error_rate!(
|
||||
Balances::total_balance(&100),
|
||||
init_balance_100
|
||||
+ part_for_100_from_10 * total_payout_0 * 2/3
|
||||
+ part_for_100_from_20 * total_payout_0 * 1/3,
|
||||
2
|
||||
);
|
||||
assert_eq_error_rate!(Balances::total_balance(&101), init_balance_101, 2);
|
||||
|
||||
assert_eq_uvec!(Session::validators(), vec![11, 21]);
|
||||
<Module<Test>>::reward_by_ids(vec![(11, 1)]);
|
||||
|
||||
// Compute total payout now for whole duration as other parameter won't change
|
||||
let total_payout_1 = current_total_payout_for_duration(3 * 1000);
|
||||
assert!(total_payout_1 > 10); // Test is meaningful if reward something
|
||||
|
||||
mock::start_era(2);
|
||||
mock::make_all_reward_payment(1);
|
||||
|
||||
assert_eq_error_rate!(Balances::total_balance(&10), init_balance_10 + part_for_10 * (total_payout_0 * 2/3 + total_payout_1), 2);
|
||||
assert_eq_error_rate!(Balances::total_balance(&11), init_balance_11, 2);
|
||||
assert_eq_error_rate!(Balances::total_balance(&20), init_balance_20 + part_for_20 * total_payout_0 * 1/3, 2);
|
||||
assert_eq_error_rate!(Balances::total_balance(&21), init_balance_21, 2);
|
||||
assert_eq_error_rate!(
|
||||
Balances::total_balance(&100),
|
||||
init_balance_100
|
||||
+ part_for_100_from_10 * (total_payout_0 * 2/3 + total_payout_1)
|
||||
+ part_for_100_from_20 * total_payout_0 * 1/3,
|
||||
2
|
||||
);
|
||||
assert_eq_error_rate!(Balances::total_balance(&101), init_balance_101, 2);
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[should_panic]
|
||||
fn migrate_era_should_handle_error() {
|
||||
ExtBuilder::default().nominate(true).build_and_execute(|| {
|
||||
MigrateEra::put(1);
|
||||
let init_balance_10 = Balances::total_balance(&10);
|
||||
let init_balance_11 = Balances::total_balance(&11);
|
||||
let init_balance_20 = Balances::total_balance(&20);
|
||||
let init_balance_21 = Balances::total_balance(&21);
|
||||
let init_balance_100 = Balances::total_balance(&100);
|
||||
let init_balance_101 = Balances::total_balance(&101);
|
||||
|
||||
// Check state
|
||||
Payee::<Test>::insert(11, RewardDestination::Controller);
|
||||
Payee::<Test>::insert(21, RewardDestination::Controller);
|
||||
Payee::<Test>::insert(101, RewardDestination::Controller);
|
||||
|
||||
<Module<Test>>::reward_by_ids(vec![(11, 50)]);
|
||||
<Module<Test>>::reward_by_ids(vec![(11, 50)]);
|
||||
// This is the second validator of the current elected set.
|
||||
<Module<Test>>::reward_by_ids(vec![(21, 50)]);
|
||||
|
||||
// Compute total payout now for whole duration as other parameter won't change
|
||||
let total_payout_0 = current_total_payout_for_duration(3 * 1000);
|
||||
assert!(total_payout_0 > 10); // Test is meaningful if reward something
|
||||
|
||||
start_session(1);
|
||||
|
||||
assert_eq!(Balances::total_balance(&10), init_balance_10);
|
||||
assert_eq!(Balances::total_balance(&11), init_balance_11);
|
||||
assert_eq!(Balances::total_balance(&20), init_balance_20);
|
||||
assert_eq!(Balances::total_balance(&21), init_balance_21);
|
||||
assert_eq!(Balances::total_balance(&100), init_balance_100);
|
||||
assert_eq!(Balances::total_balance(&101), init_balance_101);
|
||||
assert_eq_uvec!(Session::validators(), vec![11, 21]);
|
||||
assert_eq!(Staking::eras_reward_points(Staking::active_era().unwrap().index), EraRewardPoints {
|
||||
total: 50*3,
|
||||
individual: vec![(11, 100), (21, 50)].into_iter().collect(),
|
||||
});
|
||||
|
||||
start_session(2);
|
||||
start_session(3);
|
||||
|
||||
assert_eq!(Staking::active_era().unwrap().index, 1);
|
||||
mock::make_all_reward_payment(0);
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[should_panic]
|
||||
fn migrate_era_should_handle_errors_2() {
|
||||
// should check that before and after migration:
|
||||
// * rewards get recorded per session
|
||||
// * rewards get paid per Era
|
||||
// * Check that nominators are also rewarded
|
||||
ExtBuilder::default().nominate(true).build_and_execute(|| {
|
||||
MigrateEra::put(1);
|
||||
let init_balance_10 = Balances::total_balance(&10);
|
||||
let init_balance_11 = Balances::total_balance(&11);
|
||||
let init_balance_20 = Balances::total_balance(&20);
|
||||
let init_balance_21 = Balances::total_balance(&21);
|
||||
let init_balance_100 = Balances::total_balance(&100);
|
||||
let init_balance_101 = Balances::total_balance(&101);
|
||||
|
||||
// Check state
|
||||
Payee::<Test>::insert(11, RewardDestination::Controller);
|
||||
Payee::<Test>::insert(21, RewardDestination::Controller);
|
||||
Payee::<Test>::insert(101, RewardDestination::Controller);
|
||||
|
||||
<Module<Test>>::reward_by_ids(vec![(11, 50)]);
|
||||
<Module<Test>>::reward_by_ids(vec![(11, 50)]);
|
||||
// This is the second validator of the current elected set.
|
||||
<Module<Test>>::reward_by_ids(vec![(21, 50)]);
|
||||
|
||||
// Compute total payout now for whole duration as other parameter won't change
|
||||
let total_payout_0 = current_total_payout_for_duration(3 * 1000);
|
||||
assert!(total_payout_0 > 10); // Test is meaningful if reward something
|
||||
|
||||
start_session(1);
|
||||
|
||||
assert_eq!(Balances::total_balance(&10), init_balance_10);
|
||||
assert_eq!(Balances::total_balance(&11), init_balance_11);
|
||||
assert_eq!(Balances::total_balance(&20), init_balance_20);
|
||||
assert_eq!(Balances::total_balance(&21), init_balance_21);
|
||||
assert_eq!(Balances::total_balance(&100), init_balance_100);
|
||||
assert_eq!(Balances::total_balance(&101), init_balance_101);
|
||||
assert_eq_uvec!(Session::validators(), vec![11, 21]);
|
||||
assert_eq!(Staking::eras_reward_points(Staking::active_era().unwrap().index), EraRewardPoints {
|
||||
total: 50*3,
|
||||
individual: vec![(11, 100), (21, 50)].into_iter().collect(),
|
||||
});
|
||||
let part_for_10 = Perbill::from_rational_approximation::<u32>(1000, 1125);
|
||||
let part_for_20 = Perbill::from_rational_approximation::<u32>(1000, 1375);
|
||||
let part_for_100_from_10 = Perbill::from_rational_approximation::<u32>(125, 1125);
|
||||
let part_for_100_from_20 = Perbill::from_rational_approximation::<u32>(375, 1375);
|
||||
|
||||
start_session(2);
|
||||
start_session(3);
|
||||
|
||||
assert_eq!(Staking::active_era().unwrap().index, 1);
|
||||
mock::make_all_reward_payment_before_migration(0);
|
||||
|
||||
assert_eq_error_rate!(Balances::total_balance(&10), init_balance_10 + part_for_10 * total_payout_0*2/3, 2);
|
||||
assert_eq_error_rate!(Balances::total_balance(&11), init_balance_11, 2);
|
||||
assert_eq_error_rate!(Balances::total_balance(&20), init_balance_20 + part_for_20 * total_payout_0*1/3, 2);
|
||||
assert_eq_error_rate!(Balances::total_balance(&21), init_balance_21, 2);
|
||||
assert_eq_error_rate!(
|
||||
Balances::total_balance(&100),
|
||||
init_balance_100
|
||||
+ part_for_100_from_10 * total_payout_0 * 2/3
|
||||
+ part_for_100_from_20 * total_payout_0 * 1/3,
|
||||
2
|
||||
);
|
||||
assert_eq_error_rate!(Balances::total_balance(&101), init_balance_101, 2);
|
||||
|
||||
assert_eq_uvec!(Session::validators(), vec![11, 21]);
|
||||
<Module<Test>>::reward_by_ids(vec![(11, 1)]);
|
||||
|
||||
// Compute total payout now for whole duration as other parameter won't change
|
||||
let total_payout_1 = current_total_payout_for_duration(3 * 1000);
|
||||
assert!(total_payout_1 > 10); // Test is meaningful if reward something
|
||||
|
||||
mock::start_era(2);
|
||||
mock::make_all_reward_payment_before_migration(1);
|
||||
|
||||
assert_eq_error_rate!(Balances::total_balance(&10), init_balance_10 + part_for_10 * (total_payout_0 * 2/3 + total_payout_1), 2);
|
||||
assert_eq_error_rate!(Balances::total_balance(&11), init_balance_11, 2);
|
||||
assert_eq_error_rate!(Balances::total_balance(&20), init_balance_20 + part_for_20 * total_payout_0 * 1/3, 2);
|
||||
assert_eq_error_rate!(Balances::total_balance(&21), init_balance_21, 2);
|
||||
assert_eq_error_rate!(
|
||||
Balances::total_balance(&100),
|
||||
init_balance_100
|
||||
+ part_for_100_from_10 * (total_payout_0 * 2/3 + total_payout_1)
|
||||
+ part_for_100_from_20 * total_payout_0 * 1/3,
|
||||
2
|
||||
);
|
||||
assert_eq_error_rate!(Balances::total_balance(&101), init_balance_101, 2);
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn offences_weight_calculated_correctly() {
|
||||
ExtBuilder::default().nominate(true).build_and_execute(|| {
|
||||
|
||||
Reference in New Issue
Block a user