Skip to content
This repository was archived by the owner on Nov 15, 2023. It is now read-only.

Commit e35b92d

Browse files
muharemAnk4n
authored andcommitted
Benchmark's successful origin api update (#13146)
* try successful origin unimplemented by default * error as a default impl for try_successful_origin * remove successful_origin func of EnsureOrigin trait * default impl -> unimplemented!() * update EnsureOriginWithArg * fix EnsureOriginWithArg * prefix unused arg with underscore * use try_successful_origin instead successful_origin, map err to Weightless * fix tests * remove default impl * unwrap for indirect origin dep * replace unwrap by expect with a message --------- Co-authored-by: parity-processbot <>
1 parent 162ba81 commit e35b92d

File tree

21 files changed

+402
-243
lines changed

21 files changed

+402
-243
lines changed

frame/alliance/src/benchmarking.rs

+15-8
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ use sp_std::{
2525
prelude::*,
2626
};
2727

28-
use frame_benchmarking::v1::{account, benchmarks_instance_pallet};
28+
use frame_benchmarking::v1::{account, benchmarks_instance_pallet, BenchmarkError};
2929
use frame_support::traits::{EnsureOrigin, Get, UnfilteredDispatchable};
3030
use frame_system::{Pallet as System, RawOrigin as SystemOrigin};
3131

@@ -581,7 +581,8 @@ benchmarks_instance_pallet! {
581581
let rule = rule(b"hello world");
582582

583583
let call = Call::<T, I>::set_rule { rule: rule.clone() };
584-
let origin = T::AdminOrigin::successful_origin();
584+
let origin =
585+
T::AdminOrigin::try_successful_origin().map_err(|_| BenchmarkError::Weightless)?;
585586
}: { call.dispatch_bypass_filter(origin)? }
586587
verify {
587588
assert_eq!(Alliance::<T, I>::rule(), Some(rule.clone()));
@@ -594,7 +595,8 @@ benchmarks_instance_pallet! {
594595
let announcement = announcement(b"hello world");
595596

596597
let call = Call::<T, I>::announce { announcement: announcement.clone() };
597-
let origin = T::AnnouncementOrigin::successful_origin();
598+
let origin =
599+
T::AnnouncementOrigin::try_successful_origin().map_err(|_| BenchmarkError::Weightless)?;
598600
}: { call.dispatch_bypass_filter(origin)? }
599601
verify {
600602
assert!(Alliance::<T, I>::announcements().contains(&announcement));
@@ -609,7 +611,8 @@ benchmarks_instance_pallet! {
609611
Announcements::<T, I>::put(announcements);
610612

611613
let call = Call::<T, I>::remove_announcement { announcement: announcement.clone() };
612-
let origin = T::AnnouncementOrigin::successful_origin();
614+
let origin =
615+
T::AnnouncementOrigin::try_successful_origin().map_err(|_| BenchmarkError::Weightless)?;
613616
}: { call.dispatch_bypass_filter(origin)? }
614617
verify {
615618
assert!(Alliance::<T, I>::announcements().is_empty());
@@ -665,7 +668,8 @@ benchmarks_instance_pallet! {
665668

666669
let ally1_lookup = T::Lookup::unlookup(ally1.clone());
667670
let call = Call::<T, I>::elevate_ally { ally: ally1_lookup };
668-
let origin = T::MembershipManager::successful_origin();
671+
let origin =
672+
T::MembershipManager::try_successful_origin().map_err(|_| BenchmarkError::Weightless)?;
669673
}: { call.dispatch_bypass_filter(origin)? }
670674
verify {
671675
assert!(!Alliance::<T, I>::is_ally(&ally1));
@@ -725,7 +729,8 @@ benchmarks_instance_pallet! {
725729

726730
let fellow2_lookup = T::Lookup::unlookup(fellow2.clone());
727731
let call = Call::<T, I>::kick_member { who: fellow2_lookup };
728-
let origin = T::MembershipManager::successful_origin();
732+
let origin =
733+
T::MembershipManager::try_successful_origin().map_err(|_| BenchmarkError::Weightless)?;
729734
}: { call.dispatch_bypass_filter(origin)? }
730735
verify {
731736
assert!(!Alliance::<T, I>::is_member(&fellow2));
@@ -754,7 +759,8 @@ benchmarks_instance_pallet! {
754759
unscrupulous_list.extend(websites.into_iter().map(UnscrupulousItem::Website));
755760

756761
let call = Call::<T, I>::add_unscrupulous_items { items: unscrupulous_list.clone() };
757-
let origin = T::AnnouncementOrigin::successful_origin();
762+
let origin =
763+
T::AnnouncementOrigin::try_successful_origin().map_err(|_| BenchmarkError::Weightless)?;
758764
}: { call.dispatch_bypass_filter(origin)? }
759765
verify {
760766
assert_last_event::<T, I>(Event::UnscrupulousItemAdded { items: unscrupulous_list }.into());
@@ -784,7 +790,8 @@ benchmarks_instance_pallet! {
784790
unscrupulous_list.extend(websites.into_iter().map(UnscrupulousItem::Website));
785791

786792
let call = Call::<T, I>::remove_unscrupulous_items { items: unscrupulous_list.clone() };
787-
let origin = T::AnnouncementOrigin::successful_origin();
793+
let origin =
794+
T::AnnouncementOrigin::try_successful_origin().map_err(|_| BenchmarkError::Weightless)?;
788795
}: { call.dispatch_bypass_filter(origin)? }
789796
verify {
790797
assert_last_event::<T, I>(Event::UnscrupulousItemRemoved { items: unscrupulous_list }.into());

frame/assets/src/benchmarking.rs

+9-5
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
use super::*;
2323
use frame_benchmarking::v1::{
24-
account, benchmarks_instance_pallet, whitelist_account, whitelisted_caller,
24+
account, benchmarks_instance_pallet, whitelist_account, whitelisted_caller, BenchmarkError,
2525
};
2626
use frame_support::{
2727
dispatch::UnfilteredDispatchable,
@@ -135,7 +135,8 @@ fn assert_event<T: Config<I>, I: 'static>(generic_event: <T as Config<I>>::Runti
135135
benchmarks_instance_pallet! {
136136
create {
137137
let asset_id = default_asset_id::<T, I>();
138-
let origin = T::CreateOrigin::successful_origin(&asset_id.into());
138+
let origin = T::CreateOrigin::try_successful_origin(&asset_id.into())
139+
.map_err(|_| BenchmarkError::Weightless)?;
139140
let caller = T::CreateOrigin::ensure_origin(origin, &asset_id.into()).unwrap();
140141
let caller_lookup = T::Lookup::unlookup(caller.clone());
141142
T::Currency::make_free_balance_be(&caller, DepositBalanceOf::<T, I>::max_value());
@@ -362,7 +363,8 @@ benchmarks_instance_pallet! {
362363

363364
let (asset_id, _, _) = create_default_asset::<T, I>(true);
364365

365-
let origin = T::ForceOrigin::successful_origin();
366+
let origin =
367+
T::ForceOrigin::try_successful_origin().map_err(|_| BenchmarkError::Weightless)?;
366368
let call = Call::<T, I>::force_set_metadata {
367369
id: asset_id,
368370
name: name.clone(),
@@ -382,7 +384,8 @@ benchmarks_instance_pallet! {
382384
let origin = SystemOrigin::Signed(caller).into();
383385
Assets::<T, I>::set_metadata(origin, asset_id, dummy.clone(), dummy, 12)?;
384386

385-
let origin = T::ForceOrigin::successful_origin();
387+
let origin =
388+
T::ForceOrigin::try_successful_origin().map_err(|_| BenchmarkError::Weightless)?;
386389
let call = Call::<T, I>::force_clear_metadata { id: asset_id };
387390
}: { call.dispatch_bypass_filter(origin)? }
388391
verify {
@@ -392,7 +395,8 @@ benchmarks_instance_pallet! {
392395
force_asset_status {
393396
let (asset_id, caller, caller_lookup) = create_default_asset::<T, I>(true);
394397

395-
let origin = T::ForceOrigin::successful_origin();
398+
let origin =
399+
T::ForceOrigin::try_successful_origin().map_err(|_| BenchmarkError::Weightless)?;
396400
let call = Call::<T, I>::force_asset_status {
397401
id: asset_id,
398402
owner: caller_lookup.clone(),

frame/bounties/src/benchmarking.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -173,15 +173,17 @@ benchmarks_instance_pallet! {
173173
let (caller, curator, fee, value, reason) = setup_bounty::<T, I>(0, 0);
174174
Bounties::<T, I>::propose_bounty(RawOrigin::Signed(caller).into(), value, reason)?;
175175
let bounty_id = BountyCount::<T, I>::get() - 1;
176-
let approve_origin = T::ApproveOrigin::successful_origin();
176+
let approve_origin =
177+
T::ApproveOrigin::try_successful_origin().map_err(|_| BenchmarkError::Weightless)?;
177178
}: close_bounty<T::RuntimeOrigin>(approve_origin, bounty_id)
178179

179180
close_bounty_active {
180181
setup_pot_account::<T, I>();
181182
let (curator_lookup, bounty_id) = create_bounty::<T, I>()?;
182183
Treasury::<T, I>::on_initialize(T::BlockNumber::zero());
183184
let bounty_id = BountyCount::<T, I>::get() - 1;
184-
let approve_origin = T::ApproveOrigin::successful_origin();
185+
let approve_origin =
186+
T::ApproveOrigin::try_successful_origin().map_err(|_| BenchmarkError::Weightless)?;
185187
}: close_bounty<T::RuntimeOrigin>(approve_origin, bounty_id)
186188
verify {
187189
assert_last_event::<T, I>(Event::BountyCanceled { index: bounty_id }.into())

frame/democracy/src/benchmarking.rs

+27-15
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
2020
use super::*;
2121

22-
use frame_benchmarking::v1::{account, benchmarks, whitelist_account};
22+
use frame_benchmarking::v1::{account, benchmarks, whitelist_account, BenchmarkError};
2323
use frame_support::{
2424
assert_noop, assert_ok,
2525
traits::{Currency, EnsureOrigin, Get, OnInitialize, UnfilteredDispatchable},
@@ -177,7 +177,8 @@ benchmarks! {
177177
}
178178

179179
emergency_cancel {
180-
let origin = T::CancellationOrigin::successful_origin();
180+
let origin =
181+
T::CancellationOrigin::try_successful_origin().map_err(|_| BenchmarkError::Weightless)?;
181182
let ref_index = add_referendum::<T>(0).0;
182183
assert_ok!(Democracy::<T>::referendum_status(ref_index));
183184
}: _<T::RuntimeOrigin>(origin, ref_index)
@@ -200,10 +201,13 @@ benchmarks! {
200201
let (ref_index, hash) = add_referendum::<T>(0);
201202
assert_ok!(Democracy::<T>::referendum_status(ref_index));
202203
// Place our proposal in the external queue, too.
203-
assert_ok!(
204-
Democracy::<T>::external_propose(T::ExternalOrigin::successful_origin(), make_proposal::<T>(0))
205-
);
206-
let origin = T::BlacklistOrigin::successful_origin();
204+
assert_ok!(Democracy::<T>::external_propose(
205+
T::ExternalOrigin::try_successful_origin()
206+
.expect("ExternalOrigin has no successful origin required for the benchmark"),
207+
make_proposal::<T>(0)
208+
));
209+
let origin =
210+
T::BlacklistOrigin::try_successful_origin().map_err(|_| BenchmarkError::Weightless)?;
207211
}: _<T::RuntimeOrigin>(origin, hash, Some(ref_index))
208212
verify {
209213
// Referendum has been canceled
@@ -215,7 +219,8 @@ benchmarks! {
215219

216220
// Worst case scenario, we external propose a previously blacklisted proposal
217221
external_propose {
218-
let origin = T::ExternalOrigin::successful_origin();
222+
let origin =
223+
T::ExternalOrigin::try_successful_origin().map_err(|_| BenchmarkError::Weightless)?;
219224
let proposal = make_proposal::<T>(0);
220225
// Add proposal to blacklist with block number 0
221226

@@ -233,7 +238,8 @@ benchmarks! {
233238
}
234239

235240
external_propose_majority {
236-
let origin = T::ExternalMajorityOrigin::successful_origin();
241+
let origin = T::ExternalMajorityOrigin::try_successful_origin()
242+
.map_err(|_| BenchmarkError::Weightless)?;
237243
let proposal = make_proposal::<T>(0);
238244
}: _<T::RuntimeOrigin>(origin, proposal)
239245
verify {
@@ -242,7 +248,8 @@ benchmarks! {
242248
}
243249

244250
external_propose_default {
245-
let origin = T::ExternalDefaultOrigin::successful_origin();
251+
let origin = T::ExternalDefaultOrigin::try_successful_origin()
252+
.map_err(|_| BenchmarkError::Weightless)?;
246253
let proposal = make_proposal::<T>(0);
247254
}: _<T::RuntimeOrigin>(origin, proposal)
248255
verify {
@@ -251,13 +258,15 @@ benchmarks! {
251258
}
252259

253260
fast_track {
254-
let origin_propose = T::ExternalDefaultOrigin::successful_origin();
261+
let origin_propose = T::ExternalDefaultOrigin::try_successful_origin()
262+
.expect("ExternalDefaultOrigin has no successful origin required for the benchmark");
255263
let proposal = make_proposal::<T>(0);
256264
let proposal_hash = proposal.hash();
257265
Democracy::<T>::external_propose_default(origin_propose, proposal)?;
258266

259267
// NOTE: Instant origin may invoke a little bit more logic, but may not always succeed.
260-
let origin_fast_track = T::FastTrackOrigin::successful_origin();
268+
let origin_fast_track =
269+
T::FastTrackOrigin::try_successful_origin().map_err(|_| BenchmarkError::Weightless)?;
261270
let voting_period = T::FastTrackVotingPeriod::get();
262271
let delay = 0u32;
263272
}: _<T::RuntimeOrigin>(origin_fast_track, proposal_hash, voting_period, delay.into())
@@ -269,7 +278,8 @@ benchmarks! {
269278
let proposal = make_proposal::<T>(0);
270279
let proposal_hash = proposal.hash();
271280

272-
let origin_propose = T::ExternalDefaultOrigin::successful_origin();
281+
let origin_propose = T::ExternalDefaultOrigin::try_successful_origin()
282+
.expect("ExternalDefaultOrigin has no successful origin required for the benchmark");
273283
Democracy::<T>::external_propose_default(origin_propose, proposal)?;
274284

275285
let mut vetoers: BoundedVec<T::AccountId, _> = Default::default();
@@ -279,7 +289,7 @@ benchmarks! {
279289
vetoers.sort();
280290
Blacklist::<T>::insert(proposal_hash, (T::BlockNumber::zero(), vetoers));
281291

282-
let origin = T::VetoOrigin::successful_origin();
292+
let origin = T::VetoOrigin::try_successful_origin().map_err(|_| BenchmarkError::Weightless)?;
283293
ensure!(NextExternal::<T>::get().is_some(), "no external proposal");
284294
}: _<T::RuntimeOrigin>(origin, proposal_hash)
285295
verify {
@@ -293,7 +303,8 @@ benchmarks! {
293303
for i in 0 .. T::MaxProposals::get() {
294304
add_proposal::<T>(i)?;
295305
}
296-
let cancel_origin = T::CancelProposalOrigin::successful_origin();
306+
let cancel_origin = T::CancelProposalOrigin::try_successful_origin()
307+
.map_err(|_| BenchmarkError::Weightless)?;
297308
}: _<T::RuntimeOrigin>(cancel_origin, 0)
298309

299310
cancel_referendum {
@@ -313,7 +324,8 @@ benchmarks! {
313324
// Launch external
314325
LastTabledWasExternal::<T>::put(false);
315326

316-
let origin = T::ExternalMajorityOrigin::successful_origin();
327+
let origin = T::ExternalMajorityOrigin::try_successful_origin()
328+
.map_err(|_| BenchmarkError::Weightless)?;
317329
let proposal = make_proposal::<T>(r);
318330
let call = Call::<T>::external_propose_majority { proposal };
319331
call.dispatch_bypass_filter(origin)?;

frame/fast-unstake/src/benchmarking.rs

+3-2
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
#![cfg(feature = "runtime-benchmarks")]
2121

2222
use crate::{types::*, Pallet as FastUnstake, *};
23-
use frame_benchmarking::v1::{benchmarks, whitelist_account};
23+
use frame_benchmarking::v1::{benchmarks, whitelist_account, BenchmarkError};
2424
use frame_support::{
2525
assert_ok,
2626
traits::{Currency, EnsureOrigin, Get, Hooks},
@@ -192,7 +192,8 @@ benchmarks! {
192192
}
193193

194194
control {
195-
let origin = <T as Config>::ControlOrigin::successful_origin();
195+
let origin = <T as Config>::ControlOrigin::try_successful_origin()
196+
.map_err(|_| BenchmarkError::Weightless)?;
196197
}
197198
: _<T::RuntimeOrigin>(origin, T::MaxErasToCheckPerBlock::get())
198199
verify {}

frame/identity/src/benchmarking.rs

+15-8
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
use super::*;
2323

2424
use crate::Pallet as Identity;
25-
use frame_benchmarking::v1::{account, benchmarks, whitelisted_caller};
25+
use frame_benchmarking::v1::{account, benchmarks, whitelisted_caller, BenchmarkError};
2626
use frame_support::{
2727
ensure,
2828
traits::{EnsureOrigin, Get},
@@ -42,7 +42,8 @@ fn add_registrars<T: Config>(r: u32) -> Result<(), &'static str> {
4242
let registrar: T::AccountId = account("registrar", i, SEED);
4343
let registrar_lookup = T::Lookup::unlookup(registrar.clone());
4444
let _ = T::Currency::make_free_balance_be(&registrar, BalanceOf::<T>::max_value());
45-
let registrar_origin = T::RegistrarOrigin::successful_origin();
45+
let registrar_origin = T::RegistrarOrigin::try_successful_origin()
46+
.expect("RegistrarOrigin has no successful origin required for the benchmark");
4647
Identity::<T>::add_registrar(registrar_origin, registrar_lookup)?;
4748
Identity::<T>::set_fee(RawOrigin::Signed(registrar.clone()).into(), i, 10u32.into())?;
4849
let fields =
@@ -121,7 +122,8 @@ benchmarks! {
121122
add_registrar {
122123
let r in 1 .. T::MaxRegistrars::get() - 1 => add_registrars::<T>(r)?;
123124
ensure!(Registrars::<T>::get().len() as u32 == r, "Registrars not set up correctly.");
124-
let origin = T::RegistrarOrigin::successful_origin();
125+
let origin =
126+
T::RegistrarOrigin::try_successful_origin().map_err(|_| BenchmarkError::Weightless)?;
125127
let account = T::Lookup::unlookup(account("registrar", r + 1, SEED));
126128
}: _<T::RuntimeOrigin>(origin, account)
127129
verify {
@@ -280,7 +282,8 @@ benchmarks! {
280282

281283
let r in 1 .. T::MaxRegistrars::get() - 1 => add_registrars::<T>(r)?;
282284

283-
let registrar_origin = T::RegistrarOrigin::successful_origin();
285+
let registrar_origin = T::RegistrarOrigin::try_successful_origin()
286+
.expect("RegistrarOrigin has no successful origin required for the benchmark");
284287
Identity::<T>::add_registrar(registrar_origin, caller_lookup)?;
285288
let registrars = Registrars::<T>::get();
286289
ensure!(registrars[r as usize].as_ref().unwrap().fee == 0u32.into(), "Fee already set.");
@@ -297,7 +300,8 @@ benchmarks! {
297300

298301
let r in 1 .. T::MaxRegistrars::get() - 1 => add_registrars::<T>(r)?;
299302

300-
let registrar_origin = T::RegistrarOrigin::successful_origin();
303+
let registrar_origin = T::RegistrarOrigin::try_successful_origin()
304+
.expect("RegistrarOrigin has no successful origin required for the benchmark");
301305
Identity::<T>::add_registrar(registrar_origin, caller_lookup)?;
302306
let registrars = Registrars::<T>::get();
303307
ensure!(registrars[r as usize].as_ref().unwrap().account == caller, "id not set.");
@@ -315,7 +319,8 @@ benchmarks! {
315319

316320
let r in 1 .. T::MaxRegistrars::get() - 1 => add_registrars::<T>(r)?;
317321

318-
let registrar_origin = T::RegistrarOrigin::successful_origin();
322+
let registrar_origin = T::RegistrarOrigin::try_successful_origin()
323+
.expect("RegistrarOrigin has no successful origin required for the benchmark");
319324
Identity::<T>::add_registrar(registrar_origin, caller_lookup)?;
320325
let fields = IdentityFields(
321326
IdentityField::Display | IdentityField::Legal | IdentityField::Web | IdentityField::Riot
@@ -347,7 +352,8 @@ benchmarks! {
347352
let info_hash = T::Hashing::hash_of(&info);
348353
Identity::<T>::set_identity(user_origin.clone(), Box::new(info))?;
349354

350-
let registrar_origin = T::RegistrarOrigin::successful_origin();
355+
let registrar_origin = T::RegistrarOrigin::try_successful_origin()
356+
.expect("RegistrarOrigin has no successful origin required for the benchmark");
351357
Identity::<T>::add_registrar(registrar_origin, caller_lookup)?;
352358
Identity::<T>::request_judgement(user_origin, r, 10u32.into())?;
353359
}: _(RawOrigin::Signed(caller), r, user_lookup, Judgement::Reasonable, info_hash)
@@ -385,7 +391,8 @@ benchmarks! {
385391
)?;
386392
}
387393
ensure!(IdentityOf::<T>::contains_key(&target), "Identity not set");
388-
let origin = T::ForceOrigin::successful_origin();
394+
let origin =
395+
T::ForceOrigin::try_successful_origin().map_err(|_| BenchmarkError::Weightless)?;
389396
}: _<T::RuntimeOrigin>(origin, target_lookup)
390397
verify {
391398
ensure!(!IdentityOf::<T>::contains_key(&target), "Identity not removed");

0 commit comments

Comments
 (0)