#![cfg(feature = "runtime-benchmarks")] use super::*; use frame_benchmarking::v2::*; #[instance_benchmarks] mod benchmarks { use super::*; use pallet_ranked_collective::Pallet as Club; use frame_support::dispatch::RawOrigin; #[benchmark] fn claim() { let i = 1337u32; let ethereum_secret_key = libsecp256k1::SecretKey::parse( &keccak_256(&i.to_le_bytes())).unwrap(); let eth_address = crate::secp_utils::eth(ðereum_secret_key); let balance = CurrencyOf::::minimum_balance(); let pseudo_account: T::AccountId = Pallet::::into_account_id(eth_address).unwrap(); let _ = CurrencyOf::::deposit_creating(&pseudo_account, balance); Total::::put(balance); let pseudo_rank = 5u16; let _ = Club::::do_add_member_to_rank( pseudo_account.clone(), pseudo_rank, false, ); let user_account: T::AccountId = account("user", i, 0); let signature = crate::secp_utils::sig::(ðereum_secret_key, &user_account.encode()); let prev_balance = CurrencyOf::::free_balance(&user_account); let prev_rank = Club::::rank_of(&user_account); #[extrinsic_call] claim(RawOrigin::Signed(user_account.clone()), eth_address, signature); assert_eq!(CurrencyOf::::free_balance(&user_account), prev_balance + balance); assert_eq!(CurrencyOf::::free_balance(&pseudo_account), balance - balance); let rank = match prev_rank { Some(current_rank) if pseudo_rank <= current_rank => Some(current_rank), _ => Some(pseudo_rank), }; assert_eq!(Club::::rank_of(&user_account), rank); assert_eq!(Club::::rank_of(&pseudo_account), None); } impl_benchmark_test_suite!( Pallet, crate::mock::new_test_ext(), crate::mock::Test, ); }