Browse Source

membership: benchmarking: move trait to benchmarks

conectado 4 years ago
parent
commit
271a6b7df4

+ 0 - 9
runtime-modules/common/src/working_group.rs

@@ -45,12 +45,3 @@ pub trait WorkingGroupBudgetHandler<T: balances::Trait> {
     /// Sets new working broup balance
     fn set_budget(new_value: T::Balance);
 }
-
-pub trait MembershipWorkingGroupHelper<T: crate::Trait> {
-    /// Set membership working group lead
-    fn insert_a_lead(
-        opening_id: u32,
-        caller_id: &T::AccountId,
-        member_id: T::MemberId,
-    ) -> T::ActorId;
-}

+ 9 - 4
runtime-modules/membership/src/benchmarking.rs

@@ -6,7 +6,6 @@ use crate::{
     Trait,
 };
 use balances::Module as Balances;
-use common::working_group::MembershipWorkingGroupHelper;
 use core::convert::TryInto;
 use frame_benchmarking::{account, benchmarks};
 use frame_support::storage::StorageMap;
@@ -20,6 +19,11 @@ use sp_std::prelude::*;
 /// Balance alias for `balances` module.
 pub type BalanceOf<T> = <T as balances::Trait>::Balance;
 
+pub trait MembershipWorkingGroupHelper<AccountId, MemberId, ActorId> {
+    /// Set membership working group lead
+    fn insert_a_lead(opening_id: u32, caller_id: &AccountId, member_id: MemberId) -> ActorId;
+}
+
 const SEED: u32 = 0;
 const MAX_BYTES: u32 = 16384;
 
@@ -81,7 +85,8 @@ fn handle_from_id<T: Trait>(id: u32) -> Vec<u8> {
 }
 
 benchmarks! {
-    where_clause { where T: balances::Trait, T: Trait }
+    where_clause { where T: balances::Trait, T: Trait, T: MembershipWorkingGroupHelper<<T as
+        frame_system::Trait>::AccountId, <T as common::Trait>::MemberId, <T as common::Trait>::ActorId> }
     _{  }
 
     buy_membership_without_referrer{
@@ -496,7 +501,7 @@ benchmarks! {
         .unwrap();
 
         // Set leader member id
-        let leader_id = T::WorkingGroup::insert_a_lead(0, &account_id, member_id);
+        let leader_id = T::insert_a_lead(0, &account_id, member_id);
 
         let is_verified = true;
 
@@ -541,7 +546,7 @@ benchmarks! {
         .unwrap();
 
         // Set leader member id
-        T::WorkingGroup::insert_a_lead(0, &account_id, member_id);
+        T::insert_a_lead(0, &account_id, member_id);
 
         let leader_member_id = T::WorkingGroup::get_leader_member_id();
 

+ 4 - 2
runtime-modules/membership/src/lib.rs

@@ -63,6 +63,9 @@ use common::origin::MemberOriginValidator;
 use common::working_group::{WorkingGroupAuthenticator, WorkingGroupBudgetHandler};
 use staking_handler::StakingHandler;
 
+#[cfg(feature = "runtime-benchmarks")]
+pub use benchmarking::MembershipWorkingGroupHelper;
+
 // Balance type alias
 type BalanceOf<T> = <T as balances::Trait>::Balance;
 
@@ -102,8 +105,7 @@ pub trait Trait:
 
     /// Working group pallet integration.
     type WorkingGroup: common::working_group::WorkingGroupAuthenticator<Self>
-        + common::working_group::WorkingGroupBudgetHandler<Self>
-        + common::working_group::MembershipWorkingGroupHelper<Self>;
+        + common::working_group::WorkingGroupBudgetHandler<Self>;
 
     /// Defines the default balance for the invited member.
     type DefaultInitialInvitationBalance: Get<BalanceOf<Self>>;

+ 0 - 19
runtime-modules/working-group/src/benchmarking.rs

@@ -18,25 +18,6 @@ use membership::Module as Membership;
 const SEED: u32 = 0;
 const MAX_BYTES: u32 = 16384;
 
-impl<T: Trait<I> + membership::Trait, I: Instance>
-    common::working_group::MembershipWorkingGroupHelper<T> for Module<T, I>
-{
-    fn insert_a_lead(
-        opening_id: u32,
-        caller_id: &T::AccountId,
-        member_id: T::MemberId,
-    ) -> T::ActorId {
-        complete_opening::<T, I>(
-            StakingRole::WithStakes,
-            OpeningType::Leader,
-            opening_id,
-            None,
-            &caller_id,
-            member_id,
-        )
-    }
-}
-
 pub enum StakingRole {
     WithStakes,
     WithoutStakes,

+ 22 - 0
runtime/src/runtime_api.rs

@@ -317,6 +317,28 @@ impl_runtime_apis! {
                 }
             }
 
+            impl membership::MembershipWorkingGroupHelper<
+                <Runtime as frame_system::Trait>::AccountId,
+                <Runtime as common::Trait>::MemberId,
+                <Runtime as common::Trait>::ActorId,
+                    > for Runtime
+            {
+                fn insert_a_lead(
+                    opening_id: u32,
+                    caller_id: &<Runtime as frame_system::Trait>::AccountId,
+                    member_id: <Runtime as common::Trait>::MemberId,
+                ) -> <Runtime as common::Trait>::ActorId {
+                    working_group::benchmarking::complete_opening::<Runtime, crate::MembershipWorkingGroupInstance>(
+                        working_group::benchmarking::StakingRole::WithStakes,
+                        working_group::OpeningType::Leader,
+                        opening_id,
+                        None,
+                        &caller_id,
+                        member_id,
+                    )
+                }
+            }
+
             let whitelist: Vec<TrackedStorageKey> = vec![
                 // Block Number
                 hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef702a5c1b19ab7a04f536c519aca4983ac").to_vec().into(),