git.delta.rocks / unique-network / refs/commits / 2b110b5d0489

difftreelog

source

pallets/unique/src/benchmarking.rs7.0 KiBsourcehistory
1#![cfg(feature = "runtime-benchmarks")]23use super::*;4use crate::Pallet;5use frame_system::RawOrigin;6use frame_benchmarking::{benchmarks, account};7use up_data_structs::*;8use sp_runtime::DispatchError;9use pallet_common::benchmarking::{create_data, create_var_data, create_u16_data};1011const SEED: u32 = 1;1213fn create_collection_helper<T: Config>(14	owner: T::AccountId,15	mode: CollectionMode,16) -> Result<CollectionId, DispatchError> {17	T::Currency::deposit_creating(&owner, T::CollectionCreationPrice::get());18	let col_name = create_u16_data::<MAX_COLLECTION_NAME_LENGTH>();19	let col_desc = create_u16_data::<MAX_COLLECTION_DESCRIPTION_LENGTH>();20	let token_prefix = create_data::<MAX_TOKEN_PREFIX_LENGTH>();21	<Pallet<T>>::create_collection(22		RawOrigin::Signed(owner).into(),23		col_name,24		col_desc,25		token_prefix,26		mode,27	)?;28	Ok(<pallet_common::CreatedCollectionCount<T>>::get())29}30fn create_nft_collection<T: Config>(owner: T::AccountId) -> Result<CollectionId, DispatchError> {31	create_collection_helper::<T>(owner, CollectionMode::NFT)32}3334benchmarks! {35	create_collection {36		let col_name = create_u16_data::<MAX_COLLECTION_NAME_LENGTH>();37		let col_desc = create_u16_data::<MAX_COLLECTION_DESCRIPTION_LENGTH>();38		let token_prefix = create_data::<MAX_TOKEN_PREFIX_LENGTH>();39		let mode: CollectionMode = CollectionMode::NFT;40		let caller: T::AccountId = account("caller", 0, SEED);41		T::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());42	}: _(RawOrigin::Signed(caller.clone()), col_name.clone(), col_desc.clone(), token_prefix.clone(), mode)43	verify {44		assert_eq!(<pallet_common::CollectionById<T>>::get(CollectionId(1)).unwrap().owner, caller);45	}4647	destroy_collection {48		let caller: T::AccountId = account("caller", 0, SEED);49		let collection = create_nft_collection::<T>(caller.clone())?;50	}: _(RawOrigin::Signed(caller.clone()), collection)5152	add_to_allow_list {53		let caller: T::AccountId = account("caller", 0, SEED);54		let allowlist_account: T::AccountId = account("admin", 0, SEED);55		let collection = create_nft_collection::<T>(caller.clone())?;56	}: _(RawOrigin::Signed(caller.clone()), collection, T::CrossAccountId::from_sub(allowlist_account))5758	remove_from_allow_list {59		let caller: T::AccountId = account("caller", 0, SEED);60		let allowlist_account: T::AccountId = account("admin", 0, SEED);61		let collection = create_nft_collection::<T>(caller.clone())?;62		<Pallet<T>>::add_to_allow_list(RawOrigin::Signed(caller.clone()).into(), collection, T::CrossAccountId::from_sub(allowlist_account.clone()))?;63	}: _(RawOrigin::Signed(caller.clone()), collection, T::CrossAccountId::from_sub(allowlist_account))6465	set_public_access_mode {66		let caller: T::AccountId = account("caller", 0, SEED);67		let collection = create_nft_collection::<T>(caller.clone())?;68	}: _(RawOrigin::Signed(caller.clone()), collection, AccessMode::AllowList)6970	set_mint_permission {71		let caller: T::AccountId = account("caller", 0, SEED);72		let collection = create_nft_collection::<T>(caller.clone())?;73	}: _(RawOrigin::Signed(caller.clone()), collection, true)7475	change_collection_owner {76		let caller: T::AccountId = account("caller", 0, SEED);77		let collection = create_nft_collection::<T>(caller.clone())?;78		let new_owner: T::AccountId = account("admin", 0, SEED);79	}: _(RawOrigin::Signed(caller.clone()), collection, new_owner)8081	add_collection_admin {82		let caller: T::AccountId = account("caller", 0, SEED);83		let collection = create_nft_collection::<T>(caller.clone())?;84		let new_admin: T::AccountId = account("admin", 0, SEED);85	}: _(RawOrigin::Signed(caller.clone()), collection, T::CrossAccountId::from_sub(new_admin))8687	remove_collection_admin {88		let caller: T::AccountId = account("caller", 0, SEED);89		let collection = create_nft_collection::<T>(caller.clone())?;90		let new_admin: T::AccountId = account("admin", 0, SEED);91		<Pallet<T>>::add_collection_admin(RawOrigin::Signed(caller.clone()).into(), collection, T::CrossAccountId::from_sub(new_admin.clone()))?;92	}: _(RawOrigin::Signed(caller.clone()), collection, T::CrossAccountId::from_sub(new_admin))9394	set_collection_sponsor {95		let caller: T::AccountId = account("caller", 0, SEED);96		let collection = create_nft_collection::<T>(caller.clone())?;97	}: _(RawOrigin::Signed(caller.clone()), collection, caller.clone())9899	confirm_sponsorship {100		let caller: T::AccountId = account("caller", 0, SEED);101		let collection = create_nft_collection::<T>(caller.clone())?;102		<Pallet<T>>::set_collection_sponsor(RawOrigin::Signed(caller.clone()).into(), collection, caller.clone())?;103	}: _(RawOrigin::Signed(caller.clone()), collection)104105	remove_collection_sponsor {106		let caller: T::AccountId = account("caller", 0, SEED);107		let collection = create_nft_collection::<T>(caller.clone())?;108		<Pallet<T>>::set_collection_sponsor(RawOrigin::Signed(caller.clone()).into(), collection, caller.clone())?;109		<Pallet<T>>::confirm_sponsorship(RawOrigin::Signed(caller.clone()).into(), collection)?;110	}: _(RawOrigin::Signed(caller.clone()), collection)111112	set_transfers_enabled_flag {113		let caller: T::AccountId = account("caller", 0, SEED);114		let collection = create_nft_collection::<T>(caller.clone())?;115	}: _(RawOrigin::Signed(caller.clone()), collection, false)116117	set_offchain_schema {118		let b in 0..OFFCHAIN_SCHEMA_LIMIT;119120		let caller: T::AccountId = account("caller", 0, SEED);121		let collection = create_nft_collection::<T>(caller.clone())?;122		let data = create_var_data(b);123	}: set_offchain_schema(RawOrigin::Signed(caller.clone()), collection, data)124125	set_const_on_chain_schema {126		let b in 0..CONST_ON_CHAIN_SCHEMA_LIMIT;127128		let caller: T::AccountId = account("caller", 0, SEED);129		let collection = create_nft_collection::<T>(caller.clone())?;130		let data = create_var_data(b);131	}: set_const_on_chain_schema(RawOrigin::Signed(caller.clone()), collection, data)132133	set_variable_on_chain_schema {134		let b in 0..VARIABLE_ON_CHAIN_SCHEMA_LIMIT;135136		let caller: T::AccountId = account("caller", 0, SEED);137		let collection = create_nft_collection::<T>(caller.clone())?;138		let data = create_var_data(b);139	}: set_variable_on_chain_schema(RawOrigin::Signed(caller.clone()), collection, data)140141	set_schema_version {142		let caller: T::AccountId = account("caller", 0, SEED);143		let collection = create_nft_collection::<T>(caller.clone())?;144	}: set_schema_version(RawOrigin::Signed(caller.clone()), collection, SchemaVersion::Unique)145146	set_collection_limits{147		let caller: T::AccountId = account("caller", 0, SEED);148		let collection = create_nft_collection::<T>(caller.clone())?;149150		let cl = CollectionLimits {151			account_token_ownership_limit: Some(0),152			sponsored_data_size: Some(0),153			token_limit: Some(1),154			sponsor_transfer_timeout: Some(0),155			sponsor_approve_timeout: None,156			owner_can_destroy: Some(true),157			owner_can_transfer: Some(true),158			sponsored_data_rate_limit: None,159			transfers_enabled: Some(true),160		};161	}: set_collection_limits(RawOrigin::Signed(caller.clone()), collection, cl)162163	set_meta_update_permission_flag {164		let caller: T::AccountId = account("caller", 0, SEED);165		let collection = create_nft_collection::<T>(caller.clone())?;166	}: _(RawOrigin::Signed(caller.clone()), collection, MetaUpdatePermission::Admin)167}