Skip to content

Commit 0e49d6c

Browse files
Removed dummy benchmarks from pallets. Updated afloat pallet mock clients to remove deprecated helper types from configs and add BenchmarkHelper types. Updated bitcoin_vaults pallet mock clients to remove deprecated helper types from configs and add BenchmarkHelper types. Updated fruniques pallet mock clients to remove deprecated helper types from configs and add BenchmarkHelper types. Updated fund admin pallet mock clients to remove deprecated helper types from configs and add BenchmarkHelper types. Updated gated marketplace pallet mock clients to remove deprecated helper types from configs and add BenchmarkHelper types. Updated mapped assets pallet mock clients to remove deprecated helper types from configs and add BenchmarkHelper types. Started developing confidential-docs benchmarking. Developed test_util module for confidential docs. Updated tests and benchmarking modules to use the new test_util module.
1 parent fde90b4 commit 0e49d6c

File tree

22 files changed

+261
-324
lines changed

22 files changed

+261
-324
lines changed

.vscode/settings.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,7 @@
1313
"editor.insertSpaces": true,
1414
"editor.tabSize": 4
1515
},
16+
"rust-analyzer.linkedProjects": [
17+
"./pallets/confidential-docs/Cargo.toml"
18+
],
1619
}

pallets/afloat/src/benchmarking.rs

Lines changed: 0 additions & 20 deletions
This file was deleted.

pallets/afloat/src/mock.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,8 +147,6 @@ impl pallet_uniques::Config for Test {
147147
type KeyLimit = KeyLimit;
148148
type ValueLimit = ValueLimit;
149149
type WeightInfo = ();
150-
#[cfg(feature = "runtime-benchmarks")]
151-
type Helper = ();
152150
type CreateOrigin = AsEnsureOriginWithArg<EnsureSigned<Self::AccountId>>;
153151
type Locker = ();
154152
}
@@ -237,6 +235,8 @@ impl pallet_mapped_assets::Config for Test {
237235
type Extra = ();
238236
type RemoveItemsLimit = ConstU32<5>;
239237
type Rbac = RBAC;
238+
#[cfg(feature = "runtime-benchmarks")]
239+
type BenchmarkHelper = ();
240240
}
241241

242242
// Build genesis storage according to the mock runtime.

pallets/bitcoin-vaults/src/benchmarking.rs

Lines changed: 0 additions & 20 deletions
This file was deleted.

pallets/bitcoin-vaults/src/lib.rs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,6 @@ mod mock;
88
#[cfg(test)]
99
mod tests;
1010

11-
#[cfg(feature = "runtime-benchmarks")]
12-
mod benchmarking;
13-
1411
mod functions;
1512
pub mod types;
1613

pallets/confidential-docs/src/benchmarking.rs

Lines changed: 111 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -3,48 +3,134 @@
33
#![cfg(feature = "runtime-benchmarks")]
44

55
use super::*;
6-
use crate::Pallet as ConfidentialDocs;
6+
use crate::{
7+
test_util::*,
8+
types::{Vault, *},
9+
Pallet as ConfidentialDocs,
10+
};
711

812
use frame_benchmarking::v2::*;
13+
use frame_support::{assert_ok, traits::Get};
914
use frame_system::RawOrigin;
10-
use sp_runtime::traits::Bounded;
11-
use types::ExtraFlags;
1215

1316
const SEED: u32 = 0;
1417

15-
#[instance_benchmarks]
18+
#[benchmarks(where T: Config)]
1619
mod benchmarks {
1720
use super::*;
1821

19-
// Benchmark `transfer` extrinsic with the worst possible conditions:
20-
// * Transfer will kill the sender account.
21-
// * Transfer will create the recipient account.
2222
#[benchmark]
23-
fn set_vault() {
24-
let existential_deposit = T::ExistentialDeposit::get();
25-
let caller = whitelisted_caller();
23+
fn set_vault(c: Linear<2, { CIDSize::get() }>) {
24+
let owner: T::AccountId = account("owner", 0, SEED);
25+
let (user_id, public_key, cid) = generate_vault_sized(1, c);
26+
let vault = Vault::<T> { cid: cid.clone(), owner: owner.clone() };
2627

27-
// Give some multiple of the existential deposit
28-
let balance = existential_deposit.saturating_mul(ED_MULTIPLIER.into());
29-
let _ = <Balances<T, I> as Currency<_>>::make_free_balance_be(&caller, balance);
28+
#[extrinsic_call]
29+
_(RawOrigin::Signed(owner), user_id, public_key, cid.clone());
30+
assert_eq!(ConfidentialDocs::vaults(user_id), Some(vault.clone()));
31+
}
3032

31-
// Transfer `e - 1` existential deposits + 1 unit, which guarantees to create one account,
32-
// and reap this user.
33-
let recipient: T::AccountId = account("recipient", 0, SEED);
34-
let recipient_lookup = T::Lookup::unlookup(recipient.clone());
35-
let transfer_amount =
36-
existential_deposit.saturating_mul((ED_MULTIPLIER - 1).into()) + 1u32.into();
33+
#[benchmark]
34+
fn set_owned_document(
35+
c: Linear<2, { CIDSize::get() }>,
36+
n: Linear<{ T::DocNameMinLen::get() }, { T::DocNameMaxLen::get() }>,
37+
d: Linear<{ T::DocDescMinLen::get() }, { T::DocDescMaxLen::get() }>,
38+
o: Linear<1, { T::MaxOwnedDocs::get() - 1 }>,
39+
) {
40+
let owner: T::AccountId = account("owner", 0, SEED);
41+
let (user_id, public_key, cid) = generate_vault_sized(1, 5);
42+
assert_ok!(ConfidentialDocs::<T>::set_vault(
43+
RawOrigin::Signed(owner.clone()).into(),
44+
user_id,
45+
public_key,
46+
cid.clone(),
47+
));
48+
// Add "o" docs to owned docs
49+
for i in 1..=o {
50+
let doc = generate_owned_doc_sized(i as u8, owner.clone(), c, n, d);
51+
assert_ok!(ConfidentialDocs::<T>::set_owned_document(
52+
RawOrigin::Signed(owner.clone()).into(),
53+
doc.clone()
54+
));
55+
}
56+
let doc = generate_owned_doc_sized((o + 1) as u8, owner.clone(), c, n, d);
57+
#[extrinsic_call]
58+
_(RawOrigin::Signed(owner), doc.clone());
59+
assert_eq!(ConfidentialDocs::owned_docs(&doc.cid), Some(doc.clone()));
60+
}
3761

62+
#[benchmark]
63+
fn remove_owned_document(
64+
c: Linear<2, { CIDSize::get() }>,
65+
n: Linear<{ T::DocNameMinLen::get() }, { T::DocNameMaxLen::get() }>,
66+
d: Linear<{ T::DocDescMinLen::get() }, { T::DocDescMaxLen::get() }>,
67+
o: Linear<1, { T::MaxOwnedDocs::get() }>,
68+
) {
69+
let owner: T::AccountId = account("owner", 0, SEED);
70+
let (user_id, public_key, cid) = generate_vault_sized(1, 5);
71+
assert_ok!(ConfidentialDocs::<T>::set_vault(
72+
RawOrigin::Signed(owner.clone()).into(),
73+
user_id,
74+
public_key,
75+
cid.clone(),
76+
));
77+
// Add "o" docs to owned docs
78+
for i in 1..=o {
79+
let doc = generate_owned_doc_sized(i as u8, owner.clone(), c, n, d);
80+
assert_ok!(ConfidentialDocs::<T>::set_owned_document(
81+
RawOrigin::Signed(owner.clone()).into(),
82+
doc.clone()
83+
));
84+
}
85+
let cid = generate_cid_sized(o as u8, c);
3886
#[extrinsic_call]
39-
_(RawOrigin::Signed(caller.clone()), recipient_lookup, transfer_amount);
87+
_(RawOrigin::Signed(owner), cid.clone());
88+
assert_eq!(ConfidentialDocs::<T>::owned_docs(cid), None);
89+
}
4090

41-
assert_eq!(Balances::<T, I>::free_balance(&caller), Zero::zero());
42-
assert_eq!(Balances::<T, I>::free_balance(&recipient), transfer_amount);
91+
#[benchmark]
92+
fn share_document(
93+
c: Linear<2, { CIDSize::get() }>, /* starts in to so that document type id and doc id
94+
* fit in the vector */
95+
n: Linear<{ T::DocNameMinLen::get() }, { T::DocNameMaxLen::get() }>,
96+
d: Linear<{ T::DocDescMinLen::get() }, { T::DocDescMaxLen::get() }>,
97+
s: Linear<1, { T::MaxSharedFromDocs::get() - 1 }>,
98+
) {
99+
let from: T::AccountId = account("from", 0, SEED);
100+
let to: T::AccountId = account("to", 0, SEED);
101+
// Setup from vault
102+
let (user_id, public_key, cid) = generate_vault_sized(1, 5);
103+
assert_ok!(ConfidentialDocs::<T>::set_vault(
104+
RawOrigin::Signed(from.clone()).into(),
105+
user_id,
106+
public_key,
107+
cid.clone(),
108+
));
109+
// Setup to vault
110+
let (user_id, public_key, cid) = generate_vault_sized(2, 5);
111+
assert_ok!(ConfidentialDocs::<T>::set_vault(
112+
RawOrigin::Signed(to.clone()).into(),
113+
user_id,
114+
public_key,
115+
cid.clone(),
116+
));
117+
// Add "s" docs to shared docs
118+
for i in 1..=s {
119+
let doc = generate_shared_doc_sized(i as u8, from.clone(), to.clone(), c, n, d);
120+
assert_ok!(ConfidentialDocs::<T>::share_document(
121+
RawOrigin::Signed(from.clone()).into(),
122+
doc.clone()
123+
));
124+
}
125+
let doc = generate_shared_doc_sized((s + 1) as u8, from.clone(), to.clone(), c, n, d);
126+
#[extrinsic_call]
127+
_(RawOrigin::Signed(from), doc.clone());
128+
assert_eq!(ConfidentialDocs::shared_docs(&doc.cid), Some(doc.clone()));
43129
}
44130

45131
impl_benchmark_test_suite! {
46-
Balances,
47-
crate::tests::ExtBuilder::default().build(),
48-
crate::tests::Test,
132+
ConfidentialDocs,
133+
crate::mock::new_test_ext(),
134+
crate::mock::Test,
49135
}
50136
}

pallets/confidential-docs/src/lib.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,15 @@
55

66
pub use pallet::*;
77

8+
// #[cfg(feature = "runtime-benchmarks")]
9+
mod benchmarking;
810
#[cfg(test)]
911
mod mock;
1012

1113
#[cfg(test)]
1214
mod tests;
1315

14-
// #[cfg(feature = "runtime-benchmarks")]
15-
mod benchmarking;
16+
mod test_util;
1617

1718
mod functions;
1819
pub mod types;
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
use crate::{types::*, Config, Error, Event};
2+
use codec::Encode;
3+
use sp_io::hashing::blake2_256;
4+
5+
pub fn generate_user_id(id: u8) -> UserId {
6+
format!("user id: {}", id).using_encoded(blake2_256)
7+
}
8+
9+
pub fn generate_public_key(id: u8) -> PublicKey {
10+
format!("public key: {}", id).using_encoded(blake2_256)
11+
}
12+
13+
pub fn generate_cid(id: u8) -> CID {
14+
generate_cid_sized(id, 3)
15+
}
16+
17+
pub fn generate_cid_sized(id: u8, size: u32) -> CID {
18+
generate_vector(1, id, size).try_into().unwrap()
19+
}
20+
21+
pub fn generate_doc_name<T: Config>(id: u8) -> DocName<T> {
22+
generate_doc_name_sized::<T>(id, 4)
23+
}
24+
25+
pub fn generate_doc_name_sized<T: Config>(id: u8, size: u32) -> DocName<T> {
26+
generate_vector(2, id, size).try_into().unwrap()
27+
}
28+
29+
pub fn generate_doc_desc<T: Config>(id: u8) -> DocDesc<T> {
30+
generate_doc_desc_sized::<T>(id, 5)
31+
}
32+
33+
pub fn generate_doc_desc_sized<T: Config>(id: u8, size: u32) -> DocDesc<T> {
34+
generate_vector(3, id, size).try_into().unwrap()
35+
}
36+
37+
pub fn generate_group_name<T: Config>(id: u8) -> GroupName<T> {
38+
generate_group_name_sized::<T>(id, 3)
39+
}
40+
41+
pub fn generate_group_name_sized<T: Config>(id: u8, size: u32) -> GroupName<T> {
42+
generate_vector(4, id, size).try_into().unwrap()
43+
}
44+
45+
pub fn generate_vector(prefix: u8, id: u8, size: u32) -> Vec<u8> {
46+
assert!(size > 0, "vector size must be greater than 0");
47+
let mut v = vec![id; size as usize];
48+
v[0] = prefix;
49+
v
50+
}
51+
52+
// fn generate_doc_name(id: &str) -> DocName<T> {
53+
// format!("doc name:{}", id).encode().try_into().unwrap()
54+
// }
55+
56+
// fn generate_doc_desc(id: &str) -> DocDesc<T> {
57+
// format!("doc desc:{}", id).encode().try_into().unwrap()
58+
// }
59+
60+
// fn generate_group_name(id: &str) -> GroupName<T> {
61+
// format!("group name:{}", id).encode().try_into().unwrap()
62+
// }
63+
64+
pub fn generate_vault_sized(id: u8, size: u32) -> (UserId, PublicKey, CID) {
65+
(generate_user_id(id), generate_public_key(id), generate_cid_sized(id, size))
66+
}
67+
68+
pub fn generate_owned_doc<T: Config>(id: u8, owner: T::AccountId) -> OwnedDoc<T> {
69+
generate_owned_doc_sized(id, owner, 5, 5, 5)
70+
}
71+
72+
pub fn generate_owned_doc_sized<T: Config>(
73+
id: u8,
74+
owner: T::AccountId,
75+
cid_size: u32,
76+
name_size: u32,
77+
desc_size: u32,
78+
) -> OwnedDoc<T> {
79+
OwnedDoc {
80+
cid: generate_cid_sized(id, cid_size),
81+
name: generate_doc_name_sized::<T>(id, name_size),
82+
description: generate_doc_desc_sized::<T>(id, desc_size),
83+
owner,
84+
}
85+
}
86+
87+
pub fn generate_shared_doc<T: Config>(
88+
id: u8,
89+
from: T::AccountId,
90+
to: T::AccountId,
91+
) -> SharedDoc<T> {
92+
generate_shared_doc_sized(id, from, to, 5, 5, 5)
93+
}
94+
95+
pub fn generate_shared_doc_sized<T: Config>(
96+
id: u8,
97+
from: T::AccountId,
98+
to: T::AccountId,
99+
cid_size: u32,
100+
name_size: u32,
101+
desc_size: u32,
102+
) -> SharedDoc<T> {
103+
SharedDoc {
104+
cid: generate_cid_sized(id, cid_size),
105+
name: generate_doc_name_sized::<T>(id, name_size),
106+
description: generate_doc_desc_sized::<T>(id, desc_size),
107+
from,
108+
to,
109+
}
110+
}

0 commit comments

Comments
 (0)