git.delta.rocks / unique-network / refs/commits / 278f1b9c8b83

difftreelog

feat(common) benchmarking

Yaroslav Bolyukin2021-10-22parent: #c8da6d5.patch.diff
in: master

3 files changed

modifiedpallets/common/src/benchmarking.rsdiffbeforeafterboth
1use sp_std::vec::Vec;
2use crate::{Config, CollectionHandle};
3use nft_data_structs::{
4 CollectionMode, Collection, CollectionId, MAX_COLLECTION_NAME_LENGTH,
5 MAX_COLLECTION_DESCRIPTION_LENGTH, MAX_TOKEN_PREFIX_LENGTH, OFFCHAIN_SCHEMA_LIMIT,
6 VARIABLE_ON_CHAIN_SCHEMA_LIMIT, CONST_ON_CHAIN_SCHEMA_LIMIT,
7};
8use frame_support::traits::{Currency, Get};
9use core::convert::TryInto;
10use sp_runtime::DispatchError;
11
12pub fn create_data(size: usize) -> Vec<u8> {
13 (0..size).map(|v| (v & 0xff) as u8).collect()
14}
15pub fn create_u16_data(size: usize) -> Vec<u16> {
16 (0..size).map(|v| (v & 0xffff) as u16).collect()
17}
18
19pub fn create_collection_raw<T: Config, R>(
20 owner: T::AccountId,
21 mode: CollectionMode,
22 handler: impl FnOnce(Collection<T>) -> Result<CollectionId, DispatchError>,
23 cast: impl FnOnce(CollectionHandle<T>) -> R,
24) -> Result<R, DispatchError> {
25 T::Currency::deposit_creating(&owner, T::CollectionCreationPrice::get());
26 let name = create_u16_data(MAX_COLLECTION_NAME_LENGTH)
27 .try_into()
28 .unwrap();
29 let description = create_u16_data(MAX_COLLECTION_DESCRIPTION_LENGTH)
30 .try_into()
31 .unwrap();
32 let token_prefix = create_data(MAX_TOKEN_PREFIX_LENGTH).try_into().unwrap();
33 let offchain_schema = create_data(OFFCHAIN_SCHEMA_LIMIT as usize)
34 .try_into()
35 .unwrap();
36 let variable_on_chain_schema = create_data(VARIABLE_ON_CHAIN_SCHEMA_LIMIT as usize)
37 .try_into()
38 .unwrap();
39 let const_on_chain_schema = create_data(CONST_ON_CHAIN_SCHEMA_LIMIT as usize)
40 .try_into()
41 .unwrap();
42 handler(Collection {
43 owner,
44 mode,
45 access: Default::default(),
46 name,
47 description,
48 token_prefix,
49 mint_mode: true,
50 offchain_schema,
51 schema_version: Default::default(),
52 sponsorship: Default::default(),
53 limits: Default::default(),
54 variable_on_chain_schema,
55 const_on_chain_schema,
56 meta_update_permission: Default::default(),
57 transfers_enabled: true,
58 })
59 .and_then(CollectionHandle::try_get)
60 .map(cast)
61}
62
1#![cfg(feature = "runtime-benchmarking")]63#[macro_export]
64macro_rules! bench_init {
65 ($name:ident: sub $(($id:expr))?; $($rest:tt)*) => {
66 let $name: T::AccountId = account(stringify!($name), 0 $(+ $id)?, SEED);
67 bench_init!($($rest)*);
68 };
69 ($name:ident: collection($owner:ident); $($rest:tt)*) => {
70 let $name = create_collection::<T>($owner.clone())?;
71 bench_init!($($rest)*);
72 };
73 ($name:ident: cross; $($rest:tt)*) => {
74 let $name = T::CrossAccountId::from_sub($name);
75 bench_init!($($rest)*);
76 };
77 ($name:ident: cross_sub $(($id:expr))?; $($rest:tt)*) => {
78 let account: T::AccountId = account(stringify!($name), 0 $(+ $id)?, SEED);
79 let $name = T::CrossAccountId::from_sub(account);
80 bench_init!($($rest)*);
81 };
82 ($name:ident: cross_from_sub; $($rest:tt)*) => {
83 let $name = T::CrossAccountId::from_sub($name);
84 bench_init!($($rest)*);
85 };
86 ($name:ident: cross_from_sub($from:ident); $($rest:tt)*) => {
87 let $name = T::CrossAccountId::from_sub($from);
88 bench_init!($($rest)*);
89 };
90 () => {}
91}
292
modifiedpallets/common/src/lib.rsdiffbeforeafterboth
--- a/pallets/common/src/lib.rs
+++ b/pallets/common/src/lib.rs
@@ -17,6 +17,7 @@
 use sp_core::H160;
 use sp_runtime::{ArithmeticError, DispatchError, DispatchResult};
 pub mod account;
+#[cfg(feature = "runtime-benchmarks")]
 pub mod benchmarking;
 pub mod erc;
 pub mod eth;
modifiedpallets/nft/Cargo.tomldiffbeforeafterboth
--- a/pallets/nft/Cargo.toml
+++ b/pallets/nft/Cargo.toml
@@ -16,7 +16,10 @@
 
 [features]
 default = ['std']
-runtime-benchmarks = ['frame-benchmarking']
+runtime-benchmarks = [
+    'frame-benchmarking',
+    'pallet-common/runtime-benchmarks',
+]
 std = [
     'codec/std',
     'serde/std',