git.delta.rocks / unique-network / refs/commits / 5f417e832e48

difftreelog

feat(rmrk) benchmark send

Daniel Shiposha2022-06-09parent: #7f00cfc.patch.diff
in: master

2 files changed

modifiedpallets/proxy-rmrk-core/src/benchmarking.rsdiffbeforeafterboth
before · pallets/proxy-rmrk-core/src/benchmarking.rs
1use sp_std::vec;23use frame_benchmarking::{benchmarks, account};4use frame_system::RawOrigin;5use frame_support::{6	traits::{Currency, Get},7	BoundedVec,8};9use sp_runtime::Permill;1011use up_data_structs::*;1213use super::*;1415const SEED: u32 = 1;1617fn create_data<S: Get<u32>>() -> BoundedVec<u8, S> {18	vec![0; S::get() as usize].try_into().expect("size == S")19}2021fn create_max_collection<T: Config>(owner: &T::AccountId) -> Result<RmrkCollectionId, DispatchError> {22	<T as pallet_common::Config>::Currency::deposit_creating(owner, T::CollectionCreationPrice::get());2324	let metadata = create_data();25	let max = None;26	let symbol = create_data();2728	<Pallet<T>>::create_collection(RawOrigin::Signed(owner.clone()).into(), metadata, max, symbol)?;2930	Ok(<CollectionIndex<T>>::get() - 1)31}3233benchmarks! {34	create_collection {35		let caller = account("caller", 0, SEED);36		<T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());37		let metadata = create_data();38		let max = None;39		let symbol = create_data();40	}: _(RawOrigin::Signed(caller), metadata, max, symbol)4142	destroy_collection {43		let caller = account("caller", 0, SEED);44		let collection_id = create_max_collection::<T>(&caller)?;45	}: _(RawOrigin::Signed(caller), collection_id)4647	change_collection_issuer {48		let caller: T::AccountId = account("caller", 0, SEED);49		let collection_id = create_max_collection::<T>(&caller)?;50		let new_owner: T::AccountId = account("new_owner", 0, SEED);5152		let new_owner_source = T::Lookup::unlookup(new_owner);53	}: _(RawOrigin::Signed(caller), collection_id, new_owner_source)5455	lock_collection {56		let caller: T::AccountId = account("caller", 0, SEED);57		let collection_id = create_max_collection::<T>(&caller)?;58	}: _(RawOrigin::Signed(caller), collection_id)5960	mint_nft {61		let caller: T::AccountId = account("caller", 0, SEED);62		let collection_id = create_max_collection::<T>(&caller)?;63		let owner = caller.clone();64		65		let royalty_recipient = Some(caller.clone());66		let royalty_amount = Some(Permill::from_percent(25));67		let metadata = create_data();68		let transferable = true;69	}:  _(70		RawOrigin::Signed(caller),71		owner,72		collection_id,73		royalty_recipient,74		royalty_amount,75		metadata,76		transferable77	)78}
after · pallets/proxy-rmrk-core/src/benchmarking.rs
1use sp_std::vec;23use frame_benchmarking::{benchmarks, account};4use frame_system::RawOrigin;5use frame_support::{6	traits::{Currency, Get},7	BoundedVec,8};9use sp_runtime::Permill;1011use up_data_structs::*;1213use super::*;1415const SEED: u32 = 1;1617fn create_data<S: Get<u32>>() -> BoundedVec<u8, S> {18	vec![0; S::get() as usize].try_into().expect("size == S")19}2021fn create_max_collection<T: Config>(owner: &T::AccountId) -> DispatchResult {22	<T as pallet_common::Config>::Currency::deposit_creating(owner, T::CollectionCreationPrice::get());2324	let metadata = create_data();25	let max = None;26	let symbol = create_data();2728	<Pallet<T>>::create_collection(RawOrigin::Signed(owner.clone()).into(), metadata, max, symbol)29}3031fn create_max_nft<T: Config>(owner: &T::AccountId, collection_id: RmrkCollectionId) -> DispatchResult {32	let royalty_recipient = Some(owner.clone());33	let royalty_amount = Some(Permill::from_percent(25));34	let metadata = create_data();35	let transferable = true;3637	<Pallet<T>>::mint_nft(38		RawOrigin::Signed(owner.clone()).into(),39		owner.clone(),40		collection_id,41		royalty_recipient,42		royalty_amount,43		metadata,44		transferable45	)46}4748struct NftTowerBuilder {49	collection_id: RmrkCollectionId,50	current_nft_id: RmrkNftId51}5253impl NftTowerBuilder {54	fn new(collection_id: RmrkCollectionId) -> Self {55		Self {56			collection_id,57			current_nft_id: 058		}59	}6061	fn build<T: Config>(&mut self, owner: &T::AccountId, height: u32) -> Result<RmrkNftId, DispatchError> {62		create_max_nft::<T>(owner, self.collection_id)?;63		self.current_nft_id += 1;6465		let mut prev_nft_id = self.current_nft_id;6667		for _ in 0..height {68			create_max_nft::<T>(owner, self.collection_id)?;69			self.current_nft_id += 1;70			71			let new_owner = <RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(72				self.collection_id,73				prev_nft_id74			);7576			<Pallet<T>>::send(77				RawOrigin::Signed(owner.clone()).into(),78				self.collection_id,79				self.current_nft_id,80				new_owner,81			)?;8283			prev_nft_id = self.current_nft_id;84		}8586		let deepest_nft_id = self.current_nft_id;8788		Ok(deepest_nft_id)89	}90}9192benchmarks! {93	create_collection {94		let caller = account("caller", 0, SEED);95		<T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());96		let metadata = create_data();97		let max = None;98		let symbol = create_data();99	}: _(RawOrigin::Signed(caller), metadata, max, symbol)100101	destroy_collection {102		let caller = account("caller", 0, SEED);103		104		create_max_collection::<T>(&caller)?;105		let collection_id = 0;106	}: _(RawOrigin::Signed(caller), collection_id)107108	change_collection_issuer {109		let caller: T::AccountId = account("caller", 0, SEED);110111		create_max_collection::<T>(&caller)?;112		let collection_id = 0;113114		let new_owner: T::AccountId = account("new_owner", 0, SEED);115116		let new_owner_source = T::Lookup::unlookup(new_owner);117	}: _(RawOrigin::Signed(caller), collection_id, new_owner_source)118119	lock_collection {120		let caller: T::AccountId = account("caller", 0, SEED);121122		create_max_collection::<T>(&caller)?;123		let collection_id = 0;124	}: _(RawOrigin::Signed(caller), collection_id)125126	mint_nft {127		let caller: T::AccountId = account("caller", 0, SEED);128129		create_max_collection::<T>(&caller)?;130		let collection_id = 0;131		let owner = caller.clone();132		133		let royalty_recipient = Some(caller.clone());134		let royalty_amount = Some(Permill::from_percent(25));135		let metadata = create_data();136		let transferable = true;137	}:  _(138		RawOrigin::Signed(caller),139		owner,140		collection_id,141		royalty_recipient,142		royalty_amount,143		metadata,144		transferable145	)146147	send {148		let caller: T::AccountId = account("caller", 0, SEED);149		create_max_collection::<T>(&caller)?;150		let collection_id = 0;151152		let mut nft_tower_builder = NftTowerBuilder::new(collection_id);153		let src_nft_id = nft_tower_builder.build::<T>(&caller, 0)?;154		let target_nft_id = nft_tower_builder.build::<T>(&caller, NESTING_BUDGET - 2)?;155	}: _(156		RawOrigin::Signed(caller),157		collection_id,158		src_nft_id,159		<RmrkAccountIdOrCollectionNftTuple<T::AccountId>>::CollectionAndNftTuple(collection_id, target_nft_id)160	)161}
modifiedpallets/proxy-rmrk-core/src/lib.rsdiffbeforeafterboth
--- a/pallets/proxy-rmrk-core/src/lib.rs
+++ b/pallets/proxy-rmrk-core/src/lib.rs
@@ -45,7 +45,7 @@
 
 use RmrkProperty::*;
 
-const NESTING_BUDGET: u32 = 5;
+pub const NESTING_BUDGET: u32 = 5;
 
 #[frame_support::pallet]
 pub mod pallet {