use super::*; use crate::Pallet; use frame_benchmarking::v2::*; use frame_system::RawOrigin; fn assert_last_event(generic_event: crate::Event) { let re: ::RuntimeEvent = generic_event.into(); frame_system::Pallet::::assert_last_event(re.into()); } #[benchmarks(where ::RuntimeCall: From>)] mod benchmarks { use super::*; #[benchmark] fn set_key() { let caller: T::AccountId = whitelisted_caller(); Key::::put(&caller); let new_sudoer: T::AccountId = account("sudoer", 0, 0); let new_sudoer_lookup = T::Lookup::unlookup(new_sudoer.clone()); #[extrinsic_call] _(RawOrigin::Signed(caller.clone()), new_sudoer_lookup); assert_last_event::(Event::KeyChanged { old: Some(caller), new: new_sudoer }); } #[benchmark] fn sudo() { let caller: T::AccountId = whitelisted_caller(); Key::::put(&caller); let call = frame_system::Call::remark { remark: vec![] }.into(); #[extrinsic_call] _(RawOrigin::Signed(caller), Box::new(call)); assert_last_event::(Event::Sudid { sudo_result: Ok(()) }) } #[benchmark] fn sudo_as() { let caller: T::AccountId = whitelisted_caller(); Key::::put(caller.clone()); let call = frame_system::Call::remark { remark: vec![] }.into(); let who: T::AccountId = account("as", 0, 0); let who_lookup = T::Lookup::unlookup(who); #[extrinsic_call] _(RawOrigin::Signed(caller), who_lookup, Box::new(call)); assert_last_event::(Event::SudoAsDone { sudo_result: Ok(()) }) } #[benchmark] fn remove_key() { let caller: T::AccountId = whitelisted_caller(); Key::::put(&caller); #[extrinsic_call] _(RawOrigin::Signed(caller.clone())); assert_last_event::(Event::KeyRemoved {}); } impl_benchmark_test_suite!(Pallet, crate::mock::new_bench_ext(), crate::mock::Test); }