@@ -47,7 +47,11 @@ fn add_slashing_spans<T: Trait>(who: &T::AccountId, spans: u32) {
47
47
48
48
// This function generates one validator being nominated by n nominators, and returns the validator
49
49
// stash account. It also starts an era and creates pending payouts.
50
- pub fn create_validator_with_nominators < T : Trait > ( n : u32 , upper_bound : u32 ) -> Result < T :: AccountId , & ' static str > {
50
+ pub fn create_validator_with_nominators < T : Trait > (
51
+ n : u32 ,
52
+ upper_bound : u32 ,
53
+ dead : bool ,
54
+ ) -> Result < T :: AccountId , & ' static str > {
51
55
let mut points_total = 0 ;
52
56
let mut points_individual = Vec :: new ( ) ;
53
57
@@ -65,7 +69,11 @@ pub fn create_validator_with_nominators<T: Trait>(n: u32, upper_bound: u32) -> R
65
69
66
70
// Give the validator n nominators, but keep total users in the system the same.
67
71
for i in 0 .. upper_bound {
68
- let ( _n_stash, n_controller) = create_stash_controller :: < T > ( u32:: max_value ( ) - i, 100 ) ?;
72
+ let ( _n_stash, n_controller) = if !dead {
73
+ create_stash_controller :: < T > ( u32:: max_value ( ) - i, 100 ) ?
74
+ } else {
75
+ create_stash_and_dead_controller :: < T > ( u32:: max_value ( ) - i, 100 ) ?
76
+ } ;
69
77
if i < n {
70
78
Staking :: < T > :: nominate ( RawOrigin :: Signed ( n_controller. clone ( ) ) . into ( ) , vec ! [ stash_lookup. clone( ) ] ) ?;
71
79
}
@@ -271,7 +279,8 @@ benchmarks! {
271
279
272
280
payout_stakers {
273
281
let n in 1 .. T :: MaxNominatorRewardedPerValidator :: get( ) as u32 ;
274
- let validator = create_validator_with_nominators:: <T >( n, T :: MaxNominatorRewardedPerValidator :: get( ) as u32 ) ?;
282
+ let validator = create_validator_with_nominators:: <T >( n, T :: MaxNominatorRewardedPerValidator :: get( ) as u32 , true ) ?;
283
+
275
284
let current_era = CurrentEra :: get( ) . unwrap( ) ;
276
285
let caller = account( "caller" , 0 , SEED ) ;
277
286
let balance_before = T :: Currency :: free_balance( & validator) ;
@@ -282,6 +291,20 @@ benchmarks! {
282
291
assert!( balance_before < balance_after) ;
283
292
}
284
293
294
+ payout_stakers_alive_controller {
295
+ let n in 1 .. T :: MaxNominatorRewardedPerValidator :: get( ) as u32 ;
296
+ let validator = create_validator_with_nominators:: <T >( n, T :: MaxNominatorRewardedPerValidator :: get( ) as u32 , false ) ?;
297
+
298
+ let current_era = CurrentEra :: get( ) . unwrap( ) ;
299
+ let caller = account( "caller" , 0 , SEED ) ;
300
+ let balance_before = T :: Currency :: free_balance( & validator) ;
301
+ } : payout_stakers( RawOrigin :: Signed ( caller) , validator. clone( ) , current_era)
302
+ verify {
303
+ // Validator has been paid!
304
+ let balance_after = T :: Currency :: free_balance( & validator) ;
305
+ assert!( balance_before < balance_after) ;
306
+ }
307
+
285
308
rebond {
286
309
let l in 1 .. MAX_UNLOCKING_CHUNKS as u32 ;
287
310
let ( _, controller) = create_stash_controller:: <T >( u, 100 ) ?;
@@ -630,6 +653,7 @@ mod tests {
630
653
let validator_stash = create_validator_with_nominators :: < Test > (
631
654
n,
632
655
<Test as Trait >:: MaxNominatorRewardedPerValidator :: get ( ) as u32 ,
656
+ false ,
633
657
) . unwrap ( ) ;
634
658
635
659
let current_era = CurrentEra :: get ( ) . unwrap ( ) ;
@@ -650,6 +674,7 @@ mod tests {
650
674
let validator_stash = create_validator_with_nominators :: < Test > (
651
675
n,
652
676
<Test as Trait >:: MaxNominatorRewardedPerValidator :: get ( ) as u32 ,
677
+ false ,
653
678
) . unwrap ( ) ;
654
679
655
680
// Add 20 slashing spans
@@ -710,6 +735,7 @@ mod tests {
710
735
assert_ok ! ( test_benchmark_force_unstake:: <Test >( ) ) ;
711
736
assert_ok ! ( test_benchmark_cancel_deferred_slash:: <Test >( ) ) ;
712
737
assert_ok ! ( test_benchmark_payout_stakers:: <Test >( ) ) ;
738
+ assert_ok ! ( test_benchmark_payout_stakers_alive_controller:: <Test >( ) ) ;
713
739
assert_ok ! ( test_benchmark_rebond:: <Test >( ) ) ;
714
740
assert_ok ! ( test_benchmark_set_history_depth:: <Test >( ) ) ;
715
741
assert_ok ! ( test_benchmark_reap_stash:: <Test >( ) ) ;
0 commit comments