From c441e11470248513157a6bbd333e2605a68e886e Mon Sep 17 00:00:00 2001 From: Raid Ateir Date: Thu, 16 Nov 2023 14:22:05 +0100 Subject: [PATCH] add verify statement & testing utils --- pallets/ddc-nodes/src/benchmarking.rs | 53 +++++++++----------------- pallets/ddc-nodes/src/lib.rs | 2 + pallets/ddc-nodes/src/testing_utils.rs | 31 +++++++++++++++ 3 files changed, 50 insertions(+), 36 deletions(-) create mode 100644 pallets/ddc-nodes/src/testing_utils.rs diff --git a/pallets/ddc-nodes/src/benchmarking.rs b/pallets/ddc-nodes/src/benchmarking.rs index 750d04140..c50362796 100644 --- a/pallets/ddc-nodes/src/benchmarking.rs +++ b/pallets/ddc-nodes/src/benchmarking.rs @@ -1,8 +1,9 @@ //! DdcStaking pallet benchmarking. use super::*; -use crate::{cdn_node::CDNNodeParams, node::NodeParams, Pallet as DdcNodes}; +use crate::{cdn_node::CDNNodeProps, Pallet as DdcNodes}; use ddc_primitives::CDNNodePubKey; +use testing_utils::*; use sp_std::prelude::*; @@ -15,60 +16,40 @@ const USER_SEED: u32 = 999666; benchmarks! { create_node { - let user: T::AccountId = account("user", USER_SEED, 0u32); - let node = NodePubKey::CDNPubKey(CDNNodePubKey::new([0; 32])); - let cdn_node_params = NodeParams::CDNParams(CDNNodeParams { - host: vec![1u8, 255], - http_port: 35000u16, - grpc_port: 25000u16, - p2p_port: 15000u16, - }); + let (user, node, cdn_node_params, _) = create_user_and_config::("user", USER_SEED); - whitelist_account!(user); + whitelist_account!(user); }: _(RawOrigin::Signed(user.clone()), node, cdn_node_params) verify { assert!(CDNNodes::::contains_key(CDNNodePubKey::new([0; 32]))); } delete_node { - let user: T::AccountId = account("user", USER_SEED, 0u32); - let node = NodePubKey::CDNPubKey(CDNNodePubKey::new([0; 32])); + let (user, node, cdn_node_params, _) = create_user_and_config::("user", USER_SEED); - let cdn_node_params = NodeParams::CDNParams(CDNNodeParams { - host: vec![1u8, 255], - http_port: 35000u16, - grpc_port: 25000u16, - p2p_port: 15000u16, - }); - - DdcNodes::::create_node(RawOrigin::Signed(user.clone()).into(),node.clone(), cdn_node_params)?; + DdcNodes::::create_node(RawOrigin::Signed(user.clone()).into(),node.clone(), cdn_node_params)?; whitelist_account!(user); }: _(RawOrigin::Signed(user.clone()), node) verify { - assert!(!CDNNodes::::contains_key(CDNNodePubKey::new([0; 32]))); + assert!(!CDNNodes::::contains_key(CDNNodePubKey::new([0; 32]))); } set_node_params { - let user: T::AccountId = account("user", USER_SEED, 0u32); - let node = NodePubKey::CDNPubKey(CDNNodePubKey::new([0; 32])); - let cdn_node_params = NodeParams::CDNParams(CDNNodeParams { - host: vec![1u8, 255], - http_port: 35000u16, - grpc_port: 25000u16, - p2p_port: 15000u16, - }); + let (user, node, cdn_node_params, cdn_node_params_new) = create_user_and_config::("user", USER_SEED); + + DdcNodes::::create_node(RawOrigin::Signed(user.clone()).into(),node.clone(), cdn_node_params)?; - let cdn_node_params_new = NodeParams::CDNParams(CDNNodeParams { - host: vec![2u8, 255], + whitelist_account!(user); + }: _(RawOrigin::Signed(user.clone()), node, cdn_node_params_new) + verify { + assert_eq!(CDNNodes::::try_get( + CDNNodePubKey::new([0; 32])).unwrap().props, + CDNNodeProps { + host: vec![2u8, 255].try_into().unwrap(), http_port: 45000u16, grpc_port: 55000u16, p2p_port: 65000u16, }); - DdcNodes::::create_node(RawOrigin::Signed(user.clone()).into(),node.clone(), cdn_node_params)?; - - whitelist_account!(user); - }: _(RawOrigin::Signed(user.clone()), node, cdn_node_params_new) - verify { } } diff --git a/pallets/ddc-nodes/src/lib.rs b/pallets/ddc-nodes/src/lib.rs index fac223510..b309cdfff 100644 --- a/pallets/ddc-nodes/src/lib.rs +++ b/pallets/ddc-nodes/src/lib.rs @@ -19,6 +19,8 @@ use crate::weights::WeightInfo; #[cfg(feature = "runtime-benchmarks")] pub mod benchmarking; +#[cfg(any(feature = "runtime-benchmarks", test))] +pub mod testing_utils; use ddc_primitives::{CDNNodePubKey, ClusterId, NodePubKey, StorageNodePubKey}; use ddc_traits::node::{NodeVisitor, NodeVisitorError}; diff --git a/pallets/ddc-nodes/src/testing_utils.rs b/pallets/ddc-nodes/src/testing_utils.rs new file mode 100644 index 000000000..432107e61 --- /dev/null +++ b/pallets/ddc-nodes/src/testing_utils.rs @@ -0,0 +1,31 @@ +//! Testing utils for ddc-staking. + +use crate::{cdn_node::CDNNodeParams, node::NodeParams, Config, NodePubKey}; +use ddc_primitives::CDNNodePubKey; +use frame_benchmarking::account; +use sp_std::vec; + +const SEED: u32 = 0; + +/// Grab a funded user. +pub fn create_user_and_config( + string: &'static str, + n: u32, +) -> (T::AccountId, NodePubKey, NodeParams, NodeParams) { + let user = account(string, n, SEED); + let node = NodePubKey::CDNPubKey(CDNNodePubKey::new([0; 32])); + let cdn_node_params = NodeParams::CDNParams(CDNNodeParams { + host: vec![1u8, 255], + http_port: 35000u16, + grpc_port: 25000u16, + p2p_port: 15000u16, + }); + + let cdn_node_params_new = NodeParams::CDNParams(CDNNodeParams { + host: vec![2u8, 255], + http_port: 45000u16, + grpc_port: 55000u16, + p2p_port: 65000u16, + }); + (user, node, cdn_node_params, cdn_node_params_new) +}