git.delta.rocks / unique-network / refs/commits / 10c0fa3cd85a

difftreelog

source

pallets/unique/src/benchmarking.rs7.1 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 core::convert::TryInto;9use sp_runtime::DispatchError;10use pallet_common::benchmarking::{create_data, create_u16_data};1112const SEED: u32 = 1;1314fn create_collection_helper<T: Config>(15	owner: T::AccountId,16	mode: CollectionMode,17) -> Result<CollectionId, DispatchError> {18	T::Currency::deposit_creating(&owner, T::CollectionCreationPrice::get());19	let col_name = create_u16_data(MAX_COLLECTION_NAME_LENGTH)20		.try_into()21		.unwrap();22	let col_desc = create_u16_data(MAX_COLLECTION_DESCRIPTION_LENGTH)23		.try_into()24		.unwrap();25	let token_prefix = create_data(MAX_TOKEN_PREFIX_LENGTH).try_into().unwrap();26	<Pallet<T>>::create_collection(27		RawOrigin::Signed(owner).into(),28		col_name,29		col_desc,30		token_prefix,31		mode,32	)?;33	Ok(<pallet_common::CreatedCollectionCount<T>>::get())34}35fn create_nft_collection<T: Config>(owner: T::AccountId) -> Result<CollectionId, DispatchError> {36	create_collection_helper::<T>(owner, CollectionMode::NFT)37}3839benchmarks! {4041	create_collection {42		let col_name: Vec<u16> = create_u16_data(MAX_COLLECTION_NAME_LENGTH);43		let col_desc: Vec<u16> = create_u16_data(MAX_COLLECTION_DESCRIPTION_LENGTH);44		let token_prefix: Vec<u8> = create_data(MAX_TOKEN_PREFIX_LENGTH);45		let mode: CollectionMode = CollectionMode::NFT;46		let caller: T::AccountId = account("caller", 0, SEED);47		T::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());48	}: _(RawOrigin::Signed(caller.clone()), col_name.clone(), col_desc.clone(), token_prefix.clone(), mode)49	verify {50		assert_eq!(<pallet_common::CollectionById<T>>::get(CollectionId(1)).unwrap().owner, caller);51	}5253	destroy_collection {54		let caller: T::AccountId = account("caller", 0, SEED);55		let collection = create_nft_collection::<T>(caller.clone())?;56	}: _(RawOrigin::Signed(caller.clone()), collection)5758	add_to_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	}: _(RawOrigin::Signed(caller.clone()), collection, T::CrossAccountId::from_sub(allowlist_account))6364	remove_from_allow_list {65		let caller: T::AccountId = account("caller", 0, SEED);66		let allowlist_account: T::AccountId = account("admin", 0, SEED);67		let collection = create_nft_collection::<T>(caller.clone())?;68		<Pallet<T>>::add_to_allow_list(RawOrigin::Signed(caller.clone()).into(), collection, T::CrossAccountId::from_sub(allowlist_account.clone()))?;69	}: _(RawOrigin::Signed(caller.clone()), collection, T::CrossAccountId::from_sub(allowlist_account))7071	set_public_access_mode {72		let caller: T::AccountId = account("caller", 0, SEED);73		let collection = create_nft_collection::<T>(caller.clone())?;74	}: _(RawOrigin::Signed(caller.clone()), collection, AccessMode::AllowList)7576	set_mint_permission {77		let caller: T::AccountId = account("caller", 0, SEED);78		let collection = create_nft_collection::<T>(caller.clone())?;79	}: _(RawOrigin::Signed(caller.clone()), collection, true)8081	change_collection_owner {82		let caller: T::AccountId = account("caller", 0, SEED);83		let collection = create_nft_collection::<T>(caller.clone())?;84		let new_owner: T::AccountId = account("admin", 0, SEED);85	}: _(RawOrigin::Signed(caller.clone()), collection, new_owner)8687	add_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	}: _(RawOrigin::Signed(caller.clone()), collection, T::CrossAccountId::from_sub(new_admin))9293	remove_collection_admin {94		let caller: T::AccountId = account("caller", 0, SEED);95		let collection = create_nft_collection::<T>(caller.clone())?;96		let new_admin: T::AccountId = account("admin", 0, SEED);97		<Pallet<T>>::add_collection_admin(RawOrigin::Signed(caller.clone()).into(), collection, T::CrossAccountId::from_sub(new_admin.clone()))?;98	}: _(RawOrigin::Signed(caller.clone()), collection, T::CrossAccountId::from_sub(new_admin))99100	set_collection_sponsor {101		let caller: T::AccountId = account("caller", 0, SEED);102		let collection = create_nft_collection::<T>(caller.clone())?;103	}: _(RawOrigin::Signed(caller.clone()), collection, caller.clone())104105	confirm_sponsorship {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	}: _(RawOrigin::Signed(caller.clone()), collection)110111	remove_collection_sponsor {112		let caller: T::AccountId = account("caller", 0, SEED);113		let collection = create_nft_collection::<T>(caller.clone())?;114		<Pallet<T>>::set_collection_sponsor(RawOrigin::Signed(caller.clone()).into(), collection, caller.clone())?;115		<Pallet<T>>::confirm_sponsorship(RawOrigin::Signed(caller.clone()).into(), collection)?;116	}: _(RawOrigin::Signed(caller.clone()), collection)117118	set_transfers_enabled_flag {119		let caller: T::AccountId = account("caller", 0, SEED);120		let collection = create_nft_collection::<T>(caller.clone())?;121	}: _(RawOrigin::Signed(caller.clone()), collection, false)122123	set_offchain_schema {124		let b in 0..OFFCHAIN_SCHEMA_LIMIT;125126		let caller: T::AccountId = account("caller", 0, SEED);127		let collection = create_nft_collection::<T>(caller.clone())?;128		let data = create_data(b as usize);129	}: set_offchain_schema(RawOrigin::Signed(caller.clone()), collection, data)130131	set_const_on_chain_schema {132		let b in 0..CONST_ON_CHAIN_SCHEMA_LIMIT;133134		let caller: T::AccountId = account("caller", 0, SEED);135		let collection = create_nft_collection::<T>(caller.clone())?;136		let data = create_data(b as usize);137	}: set_const_on_chain_schema(RawOrigin::Signed(caller.clone()), collection, data)138139	set_variable_on_chain_schema {140		let b in 0..VARIABLE_ON_CHAIN_SCHEMA_LIMIT;141142		let caller: T::AccountId = account("caller", 0, SEED);143		let collection = create_nft_collection::<T>(caller.clone())?;144		let data = create_data(b as usize);145	}: set_variable_on_chain_schema(RawOrigin::Signed(caller.clone()), collection, data)146147	set_schema_version {148		let caller: T::AccountId = account("caller", 0, SEED);149		let collection = create_nft_collection::<T>(caller.clone())?;150	}: set_schema_version(RawOrigin::Signed(caller.clone()), collection, SchemaVersion::Unique)151152	set_collection_limits{153		let caller: T::AccountId = account("caller", 0, SEED);154		let collection = create_nft_collection::<T>(caller.clone())?;155156		let cl = CollectionLimits {157			account_token_ownership_limit: Some(0),158			sponsored_data_size: Some(0),159			token_limit: Some(1),160			sponsor_transfer_timeout: Some(0),161			sponsor_approve_timeout: None,162			owner_can_destroy: Some(true),163			owner_can_transfer: Some(true),164			sponsored_data_rate_limit: None,165			transfers_enabled: Some(true),166		};167	}: set_collection_limits(RawOrigin::Signed(caller.clone()), collection, cl)168169	set_meta_update_permission_flag {170		let caller: T::AccountId = account("caller", 0, SEED);171		let collection = create_nft_collection::<T>(caller.clone())?;172	}: _(RawOrigin::Signed(caller.clone()), collection, MetaUpdatePermission::Admin)173}