Skip to content

Commit

Permalink
v2 benchmark
Browse files Browse the repository at this point in the history
  • Loading branch information
salman01zp committed Dec 28, 2023
1 parent cce18eb commit 3114ab3
Showing 1 changed file with 52 additions and 41 deletions.
93 changes: 52 additions & 41 deletions pallets/roles/src/benchmarking.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,15 @@
//! Role pallet benchmarking.
use super::*;
use frame_benchmarking::v1::{benchmarks, impl_benchmark_test_suite};
use crate::{
profile::{Profile, Record, SharedRestakeProfile},
Pallet as Roles,
};
use frame_benchmarking::v2::*;
use frame_support::BoundedVec;
use frame_system::RawOrigin;
use profile::{Record, SharedRestakeProfile};
use sp_core::sr25519;

#[allow(unused)]
use crate::Pallet;
use tangle_primitives::roles::RoleTypeMetadata;

fn assert_last_event<T: Config>(generic_event: <T as Config>::RuntimeEvent) {
frame_system::Pallet::<T>::assert_last_event(generic_event.into());
Expand Down Expand Up @@ -60,79 +61,89 @@ pub fn mock_pub_key(i: u8) -> sr25519::Public {
sr25519::Public::from_raw([i; 32])
}

benchmarks! {

where_clause {
where
T::RoleKeyId: From<ecdsa::Public>,
T::AccountId : From<sr25519::Public>
}
#[benchmarks(
where
T::RoleKeyId: From<ecdsa::Public>,
T::AccountId : From<sr25519::Public>,
)]

mod benchmarks {
use super::*;
// Create profile.
create_profile {
#[benchmark]
fn create_profile() {
let shared_profile = shared_profile::<T>();
let caller: T::AccountId = mock_pub_key(1).into();

#[extrinsic_call]
_(RawOrigin::Signed(caller.clone().into()), shared_profile.clone());

}: _(RawOrigin::Signed(caller.clone().into()), shared_profile.clone())
verify {
let ledger = Pallet::<T>::ledger(caller).unwrap();
assert!(ledger.profile == shared_profile );
let ledger = Roles::<T>::ledger(caller).unwrap();
assert!(ledger.profile == shared_profile);
}

// Update profile.
update_profile {
#[benchmark]
fn update_profile() {
let caller: T::AccountId = mock_pub_key(1).into();
let shared_profile = shared_profile::<T>();
let ledger = RoleStakingLedger::<T>::new(caller.clone(), shared_profile.clone());
Ledger::<T>::insert(caller.clone(), ledger);
// Updating shared stake from 3000 to 5000 tokens
let updated_profile = updated_profile::<T>();

}: _(RawOrigin::Signed(caller.clone()), updated_profile.clone())
verify {
let ledger = Pallet::<T>::ledger(caller).unwrap();
assert!(ledger.profile == updated_profile );
#[extrinsic_call]
_(RawOrigin::Signed(caller.clone()), updated_profile.clone());

let ledger = Roles::<T>::ledger(caller).unwrap();
assert!(ledger.profile == updated_profile);
}

// Delete profile
delete_profile {
#[benchmark]
fn delete_profile() {
let caller: T::AccountId = mock_pub_key(1).into();
let shared_profile = shared_profile::<T>();
let ledger = RoleStakingLedger::<T>::new(caller.clone(), shared_profile.clone());
Ledger::<T>::insert(caller.clone(), ledger);

#[extrinsic_call]
_(RawOrigin::Signed(caller.clone()));

}: _(RawOrigin::Signed(caller.clone()))
verify {
assert_last_event::<T>(Event::ProfileDeleted { account: caller.clone() }.into());
let ledger = Pallet::<T>::ledger(caller);
let ledger = Roles::<T>::ledger(caller);
assert!(ledger.is_none())

}

chill {
#[benchmark]
fn chill() {
let caller: T::AccountId = mock_pub_key(1).into();

}: _(RawOrigin::Signed(caller.clone()))

#[extrinsic_call]
_(RawOrigin::Signed(caller.clone()));
}

unbound_funds {
#[benchmark]
fn unbound_funds() {
let caller: T::AccountId = mock_pub_key(1).into();
let amount: T::CurrencyBalance = 2000_u64.into();
}: _(RawOrigin::Signed(caller.clone()), amount)

#[extrinsic_call]
_(RawOrigin::Signed(caller.clone()), amount);
}

withdraw_unbonded {
#[benchmark]
fn withdraw_unbonded() {
let caller: T::AccountId = mock_pub_key(1).into();
}: _(RawOrigin::Signed(caller.clone()))

}
#[extrinsic_call]
_(RawOrigin::Signed(caller.clone()));
}

// Define the module and associated types for the benchmarks
impl_benchmark_test_suite!(
Pallet,
crate::mock::new_test_ext(vec![1, 2, 3, 4]),
crate::mock::Runtime,
);
// Define the module and associated types for the benchmarks
impl_benchmark_test_suite!(
Roles,
crate::mock::new_test_ext(vec![1, 2, 3, 4]),
crate::mock::Runtime,
);
}

0 comments on commit 3114ab3

Please sign in to comment.