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

difftreelog

feat(rmrk) benchmark adding resources

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

2 files changed

modifiedpallets/proxy-rmrk-core/src/benchmarking.rsdiffbeforeafterboth
--- a/pallets/proxy-rmrk-core/src/benchmarking.rs
+++ b/pallets/proxy-rmrk-core/src/benchmarking.rs
@@ -18,10 +18,41 @@
 	vec![b'A'; S::get() as usize].try_into().expect("size == S")
 }
 
-fn create_priorities<S: Get<u32>>() -> BoundedVec<RmrkResourceId, S> {
+fn create_u32_array<S: Get<u32>>() -> BoundedVec<u32, S> {
 	vec![0; S::get() as usize].try_into().expect("size == S")
 }
 
+fn create_basic_resource() -> RmrkBasicResource {
+	RmrkBasicResource {
+		src: Some(create_data()),
+		metadata: Some(create_data()),
+		license: Some(create_data()),
+		thumb: Some(create_data()),
+	}
+}
+
+fn create_composable_resource() -> RmrkComposableResource {
+	RmrkComposableResource {
+		parts: create_u32_array(),
+		base: 100,
+		src: Some(create_data()),
+		metadata: Some(create_data()),
+		license: Some(create_data()),
+		thumb: Some(create_data()),
+	}
+}
+
+fn create_slot_resource() -> RmrkSlotResource {
+	RmrkSlotResource {
+		base: 100,
+		slot: 200,
+		src: Some(create_data()),
+		metadata: Some(create_data()),
+		license: Some(create_data()),
+		thumb: Some(create_data()),
+	}
+}
+
 fn create_max_collection<T: Config>(owner: &T::AccountId) -> DispatchResult {
 	<T as pallet_common::Config>::Currency::deposit_creating(owner, T::CollectionCreationPrice::get());
 
@@ -233,11 +264,63 @@
 
 		let mut nft_builder = NftBuilder::new(collection_id);
 		let nft_id = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;
-		let priorities = create_priorities();
+		let priorities = create_u32_array();
 	}: _(
 		RawOrigin::Signed(caller),
 		collection_id,
 		nft_id,
 		priorities
 	)
+
+	add_basic_resource {
+		let caller: T::AccountId = account("caller", 0, SEED);
+		<T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());
+
+
+		create_max_collection::<T>(&caller)?;
+		let collection_id = 0;
+
+		let mut nft_builder = NftBuilder::new(collection_id);
+		let nft_id = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;
+		let resource = create_basic_resource();
+	}: _(
+		RawOrigin::Signed(caller),
+		collection_id,
+		nft_id,
+		resource
+	)
+
+	add_composable_resource {
+		let caller: T::AccountId = account("caller", 0, SEED);
+		<T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());
+
+		create_max_collection::<T>(&caller)?;
+		let collection_id = 0;
+
+		let mut nft_builder = NftBuilder::new(collection_id);
+		let nft_id = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;
+		let resource = create_composable_resource();
+	}: _(
+		RawOrigin::Signed(caller),
+		collection_id,
+		nft_id,
+		resource
+	)
+
+	add_slot_resource {
+		let caller: T::AccountId = account("caller", 0, SEED);
+		<T as pallet_common::Config>::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get());
+
+		create_max_collection::<T>(&caller)?;
+		let collection_id = 0;
+
+		let mut nft_builder = NftBuilder::new(collection_id);
+		let nft_id = nft_builder.build_tower::<T>(&caller, NESTING_BUDGET - 1)?;
+		let resource = create_slot_resource();
+	}: _(
+		RawOrigin::Signed(caller),
+		collection_id,
+		nft_id,
+		resource
+	)
 }
modifiedpallets/proxy-rmrk-core/src/lib.rsdiffbeforeafterboth
926 origin: OriginFor<T>,926 origin: OriginFor<T>,
927 rmrk_collection_id: RmrkCollectionId,927 rmrk_collection_id: RmrkCollectionId,
928 nft_id: RmrkNftId,928 nft_id: RmrkNftId,
929 _resource_id: RmrkBoundedResource,
930 resource: RmrkComposableResource,929 resource: RmrkComposableResource,
931 ) -> DispatchResult {930 ) -> DispatchResult {
932 let sender = ensure_signed(origin.clone())?;931 let sender = ensure_signed(origin.clone())?;