#![cfg(feature = "runtime-benchmarks")] use super::*; use frame_benchmarking::v1::*; use frame_system::RawOrigin; use frame_support::traits::fungible::Inspect; pub fn create_account() -> T::AccountId { let account_bytes = Vec::from([1u8; 32]); T::AccountId::decode(&mut &account_bytes[0..32]) .expect("32 bytes always construct an AccountId32") } benchmarks! { slow_clap { let minimum_balance = <::Currency>::minimum_balance(); let receiver = create_account::(); let amount = minimum_balance + minimum_balance; let network_id = NetworkIdOf::::default(); let authorities = vec![T::AuthorityId::generate_pair(None)]; let bounded_authorities = WeakBoundedVec::<_, T::MaxAuthorities>::try_from(authorities.clone()) .map_err(|()| "more than the maximum number of keys provided")?; Authorities::::put(bounded_authorities); let clap = Clap { session_index: 0, authority_index: 0, transaction_hash: H256::repeat_byte(1u8), block_number: 69, removed: false, network_id, receiver: receiver.clone(), amount, }; let authority_id = authorities .get(0usize) .expect("first authority should exist"); let encoded_clap = clap.encode(); let signature = authority_id.sign(&encoded_clap) .ok_or("couldn't make signature")?; }: _(RawOrigin::None, clap, signature) verify { assert_eq!(<::Currency>::total_balance(&receiver), amount); } impl_benchmark_test_suite!( Pallet, crate::mock::new_test_ext(), crate::mock::Runtime, ); }