|
20 | 20 |
|
21 | 21 | use crate::*;
|
22 | 22 |
|
23 |
| -use frame_benchmarking::{ |
24 |
| - benchmarks_instance_pallet, whitelisted_caller, BenchmarkError, BenchmarkResult, |
25 |
| -}; |
| 23 | +use frame_benchmarking::v2::*; |
26 | 24 | use frame_support::{assert_ok, weights::Weight};
|
27 | 25 | use frame_system::RawOrigin;
|
28 | 26 | use sp_runtime::traits::One;
|
@@ -52,121 +50,149 @@ fn assert_last_event<T: Config<I>, I: 'static>(
|
52 | 50 | frame_system::Pallet::<T>::assert_last_event(generic_event.into());
|
53 | 51 | }
|
54 | 52 |
|
55 |
| -benchmarks_instance_pallet! { |
56 |
| - where_clause { where |
| 53 | +#[instance_benchmarks( |
| 54 | + where |
57 | 55 | BeneficiaryOf<T, I>: From<<T as frame_system::Config>::AccountId>,
|
58 |
| - } |
| 56 | +)] |
| 57 | +mod benchmarks { |
| 58 | + use super::*; |
59 | 59 |
|
60 |
| - // Benchmark `claim_rewards` call. |
61 |
| - claim_rewards { |
62 |
| - let reward_kind = T::bench_reward(); |
| 60 | + #[benchmark] |
| 61 | + fn claim_rewards() { |
63 | 62 | let relayer: T::AccountId = whitelisted_caller();
|
| 63 | + let reward_kind = T::bench_reward(); |
64 | 64 | let reward_balance = T::RewardBalance::from(REWARD_AMOUNT);
|
65 |
| - |
66 | 65 | let _ = T::prepare_rewards_account(reward_kind, reward_balance);
|
67 | 66 | RelayerRewards::<T, I>::insert(&relayer, reward_kind, reward_balance);
|
68 |
| - }: _(RawOrigin::Signed(relayer.clone()), reward_kind) |
69 |
| - verify { |
| 67 | + |
| 68 | + #[extrinsic_call] |
| 69 | + _(RawOrigin::Signed(relayer.clone()), reward_kind); |
| 70 | + |
70 | 71 | // we can't check anything here, because `PaymentProcedure` is responsible for
|
71 | 72 | // payment logic, so we assume that if call has succeeded, the procedure has
|
72 | 73 | // also completed successfully
|
73 |
| - assert_last_event::<T, I>(Event::RewardPaid { |
74 |
| - relayer: relayer.clone(), |
75 |
| - reward_kind, |
76 |
| - reward_balance, |
77 |
| - beneficiary: relayer.into(), |
78 |
| - }.into()); |
| 74 | + assert_last_event::<T, I>( |
| 75 | + Event::RewardPaid { |
| 76 | + relayer: relayer.clone(), |
| 77 | + reward_kind, |
| 78 | + reward_balance, |
| 79 | + beneficiary: relayer.into(), |
| 80 | + } |
| 81 | + .into(), |
| 82 | + ); |
79 | 83 | }
|
80 | 84 |
|
81 |
| - // Benchmark `claim_rewards_to` call. |
82 |
| - claim_rewards_to { |
83 |
| - let reward_kind = T::bench_reward(); |
| 85 | + #[benchmark] |
| 86 | + fn claim_rewards_to() -> Result<(), BenchmarkError> { |
84 | 87 | let relayer: T::AccountId = whitelisted_caller();
|
| 88 | + let reward_kind = T::bench_reward(); |
85 | 89 | let reward_balance = T::RewardBalance::from(REWARD_AMOUNT);
|
86 | 90 |
|
87 |
| - let Some(alternative_beneficiary) = T::prepare_rewards_account(reward_kind, reward_balance) else { |
| 91 | + let Some(alternative_beneficiary) = T::prepare_rewards_account(reward_kind, reward_balance) |
| 92 | + else { |
88 | 93 | return Err(BenchmarkError::Override(BenchmarkResult::from_weight(Weight::MAX)));
|
89 | 94 | };
|
90 | 95 | RelayerRewards::<T, I>::insert(&relayer, reward_kind, reward_balance);
|
91 |
| - }: _(RawOrigin::Signed(relayer.clone()), reward_kind, alternative_beneficiary.clone()) |
92 |
| - verify { |
| 96 | + |
| 97 | + #[extrinsic_call] |
| 98 | + _(RawOrigin::Signed(relayer.clone()), reward_kind, alternative_beneficiary.clone()); |
| 99 | + |
93 | 100 | // we can't check anything here, because `PaymentProcedure` is responsible for
|
94 | 101 | // payment logic, so we assume that if call has succeeded, the procedure has
|
95 | 102 | // also completed successfully
|
96 |
| - assert_last_event::<T, I>(Event::RewardPaid { |
97 |
| - relayer, |
98 |
| - reward_kind, |
99 |
| - reward_balance, |
100 |
| - beneficiary: alternative_beneficiary, |
101 |
| - }.into()); |
| 103 | + assert_last_event::<T, I>( |
| 104 | + Event::RewardPaid { |
| 105 | + relayer: relayer.clone(), |
| 106 | + reward_kind, |
| 107 | + reward_balance, |
| 108 | + beneficiary: alternative_beneficiary, |
| 109 | + } |
| 110 | + .into(), |
| 111 | + ); |
| 112 | + |
| 113 | + Ok(()) |
102 | 114 | }
|
103 | 115 |
|
104 |
| - // Benchmark `register` call. |
105 |
| - register { |
| 116 | + #[benchmark] |
| 117 | + fn register() { |
106 | 118 | let relayer: T::AccountId = whitelisted_caller();
|
107 | 119 | let valid_till = frame_system::Pallet::<T>::block_number()
|
108 | 120 | .saturating_add(crate::Pallet::<T, I>::required_registration_lease())
|
109 | 121 | .saturating_add(One::one())
|
110 | 122 | .saturating_add(One::one());
|
111 |
| - |
112 | 123 | T::deposit_account(relayer.clone(), crate::Pallet::<T, I>::required_stake());
|
113 |
| - }: _(RawOrigin::Signed(relayer.clone()), valid_till) |
114 |
| - verify { |
| 124 | + |
| 125 | + #[extrinsic_call] |
| 126 | + _(RawOrigin::Signed(relayer.clone()), valid_till); |
| 127 | + |
115 | 128 | assert!(crate::Pallet::<T, I>::is_registration_active(&relayer));
|
116 | 129 | }
|
117 | 130 |
|
118 |
| - // Benchmark `deregister` call. |
119 |
| - deregister { |
| 131 | + #[benchmark] |
| 132 | + fn deregister() { |
120 | 133 | let relayer: T::AccountId = whitelisted_caller();
|
121 | 134 | let valid_till = frame_system::Pallet::<T>::block_number()
|
122 | 135 | .saturating_add(crate::Pallet::<T, I>::required_registration_lease())
|
123 | 136 | .saturating_add(One::one())
|
124 | 137 | .saturating_add(One::one());
|
125 | 138 | T::deposit_account(relayer.clone(), crate::Pallet::<T, I>::required_stake());
|
126 |
| - crate::Pallet::<T, I>::register(RawOrigin::Signed(relayer.clone()).into(), valid_till).unwrap(); |
127 |
| - |
| 139 | + crate::Pallet::<T, I>::register(RawOrigin::Signed(relayer.clone()).into(), valid_till) |
| 140 | + .unwrap(); |
128 | 141 | frame_system::Pallet::<T>::set_block_number(valid_till.saturating_add(One::one()));
|
129 |
| - }: _(RawOrigin::Signed(relayer.clone())) |
130 |
| - verify { |
| 142 | + |
| 143 | + #[extrinsic_call] |
| 144 | + _(RawOrigin::Signed(relayer.clone())); |
| 145 | + |
131 | 146 | assert!(!crate::Pallet::<T, I>::is_registration_active(&relayer));
|
132 | 147 | }
|
133 | 148 |
|
134 | 149 | // Benchmark `slash_and_deregister` method of the pallet. We are adding this weight to
|
135 | 150 | // the weight of message delivery call if `BridgeRelayersTransactionExtension` signed extension
|
136 | 151 | // is deployed at runtime level.
|
137 |
| - slash_and_deregister { |
| 152 | + #[benchmark] |
| 153 | + fn slash_and_deregister() { |
138 | 154 | // prepare and register relayer account
|
139 | 155 | let relayer: T::AccountId = whitelisted_caller();
|
140 | 156 | let valid_till = frame_system::Pallet::<T>::block_number()
|
141 | 157 | .saturating_add(crate::Pallet::<T, I>::required_registration_lease())
|
142 | 158 | .saturating_add(One::one())
|
143 | 159 | .saturating_add(One::one());
|
144 | 160 | T::deposit_account(relayer.clone(), crate::Pallet::<T, I>::required_stake());
|
145 |
| - assert_ok!(crate::Pallet::<T, I>::register(RawOrigin::Signed(relayer.clone()).into(), valid_till)); |
| 161 | + assert_ok!(crate::Pallet::<T, I>::register( |
| 162 | + RawOrigin::Signed(relayer.clone()).into(), |
| 163 | + valid_till |
| 164 | + )); |
146 | 165 |
|
147 | 166 | // create slash destination account
|
148 | 167 | let slash_destination: T::AccountId = whitelisted_caller();
|
149 | 168 | T::deposit_account(slash_destination.clone(), Zero::zero());
|
150 |
| - }: { |
151 |
| - crate::Pallet::<T, I>::slash_and_deregister(&relayer, bp_relayers::ExplicitOrAccountParams::Explicit::<_, ()>(slash_destination)) |
152 |
| - } |
153 |
| - verify { |
| 169 | + |
| 170 | + #[block] |
| 171 | + { |
| 172 | + crate::Pallet::<T, I>::slash_and_deregister( |
| 173 | + &relayer, |
| 174 | + bp_relayers::ExplicitOrAccountParams::Explicit::<_, ()>(slash_destination), |
| 175 | + ); |
| 176 | + } |
| 177 | + |
154 | 178 | assert!(!crate::Pallet::<T, I>::is_registration_active(&relayer));
|
155 | 179 | }
|
156 | 180 |
|
157 | 181 | // Benchmark `register_relayer_reward` method of the pallet. We are adding this weight to
|
158 | 182 | // the weight of message delivery call if `BridgeRelayersTransactionExtension` signed extension
|
159 | 183 | // is deployed at runtime level.
|
160 |
| - register_relayer_reward { |
| 184 | + #[benchmark] |
| 185 | + fn register_relayer_reward() { |
161 | 186 | let reward_kind = T::bench_reward();
|
162 | 187 | let relayer: T::AccountId = whitelisted_caller();
|
163 | 188 |
|
164 |
| - }: { |
165 |
| - crate::Pallet::<T, I>::register_relayer_reward(reward_kind, &relayer, One::one()); |
166 |
| - } |
167 |
| - verify { |
| 189 | + #[block] |
| 190 | + { |
| 191 | + crate::Pallet::<T, I>::register_relayer_reward(reward_kind, &relayer, One::one()); |
| 192 | + } |
| 193 | + |
168 | 194 | assert_eq!(RelayerRewards::<T, I>::get(relayer, &reward_kind), Some(One::one()));
|
169 | 195 | }
|
170 | 196 |
|
171 |
| - impl_benchmark_test_suite!(Pallet, crate::mock::new_test_ext(), crate::mock::TestRuntime) |
| 197 | + impl_benchmark_test_suite!(Pallet, crate::mock::new_test_ext(), crate::mock::TestRuntime); |
172 | 198 | }
|
0 commit comments