Files
pezkuwi-sdk/pezcumulus/teyrchains/pezpallets/staking-score/src/benchmarking.rs
T
pezkuwichain d6444076c3 feat: dual-chain staking score with XCM data pipeline
- Rewrite pezpallet-staking-score: StorageDoubleMap (AccountId x StakingSource),
  remove StakingInfoProvider trait, all data via receive_staking_details()
- Add StakingSource enum (RelayChain / AssetHub) for multi-source aggregation
- Add OnStakingDataUpdate callback trait for trust pallet integration
- Trust pallet: on_initialize hook for periodic batch updates,
  OnStakingDataUpdate impl triggers immediate score recalculation
- People Chain runtime: remove noop StakingInfoProvider, wire OnStakingUpdate = Trust
- Update weights for both pallets (conservative estimates incl. callback cost)
- spec_version 1_020_005 -> 1_020_006
- 57 tests passing (25 staking-score + 32 trust)
2026-02-16 07:49:13 +03:00

54 lines
1.1 KiB
Rust

//! Benchmarking setup for pezpallet-staking-score
use crate::{
CachedStakingDetails, Call, Config, Pezpallet, StakingDetails, StakingSource,
StakingStartBlock, UNITS,
};
use pezframe_benchmarking::v2::*;
use pezframe_system::RawOrigin;
#[benchmarks]
mod benchmarks {
use super::*;
#[benchmark]
fn start_score_tracking() {
let caller: T::AccountId = whitelisted_caller();
// Populate CachedStakingDetails with test data
CachedStakingDetails::<T>::insert(
&caller,
StakingSource::RelayChain,
StakingDetails {
staked_amount: (1000u128 * UNITS).into(),
nominations_count: 5,
unlocking_chunks_count: 2,
},
);
StakingStartBlock::<T>::remove(&caller);
#[extrinsic_call]
_(RawOrigin::Signed(caller.clone()));
assert!(StakingStartBlock::<T>::get(&caller).is_some());
}
#[benchmark]
fn receive_staking_details() {
let target: T::AccountId = whitelisted_caller();
#[extrinsic_call]
_(
RawOrigin::Root,
target.clone(),
StakingSource::RelayChain,
(500u128 * UNITS).into(),
3u32,
0u32,
);
assert!(CachedStakingDetails::<T>::get(&target, StakingSource::RelayChain).is_some());
}
}