3208f208c0
## Changes
### Clippy Fixes
- Fixed deprecated `cargo_bin` usage in 27 test files (added #![allow(deprecated)])
- Fixed uninlined_format_args in zombienet-sdk-tests
- Fixed subxt API changes in revive/rpc/tests.rs (fetch signature, StorageValue)
- Fixed dead_code warnings in validator-pool and identity-kyc mocks
- Fixed field name `i` -> `_i` in tasks example
### CI Infrastructure
- Added .claude/WORKFLOW_PLAN.md for tracking CI fix progress
- Updated lychee.toml and taplo.toml configs
### Files Modified
- 27 test files with deprecated cargo_bin fix
- bizinikiwi/pezframe/revive/rpc/src/tests.rs (subxt API)
- pezkuwi/pezpallets/validator-pool/src/{mock,tests}.rs
- pezcumulus/teyrchains/pezpallets/identity-kyc/src/mock.rs
- bizinikiwi/pezframe/examples/tasks/src/tests.rs
## Status
- cargo clippy: PASSING
- Next: cargo fmt, zepter, workspace checks
143 lines
3.7 KiB
Rust
143 lines
3.7 KiB
Rust
//! Benchmarking setup for pezpallet-validator-pool
|
|
|
|
use super::*;
|
|
use pezframe_benchmarking::v2::*;
|
|
use pezframe_system::{pezpallet_prelude::BlockNumberFor, RawOrigin};
|
|
use pezsp_std::vec;
|
|
|
|
#[benchmarks]
|
|
mod benchmarks {
|
|
use super::*;
|
|
|
|
#[benchmark]
|
|
fn join_validator_pool() {
|
|
let caller: T::AccountId = whitelisted_caller();
|
|
|
|
let category = ValidatorPoolCategory::StakeValidator {
|
|
min_stake: T::MinStakeAmount::get(),
|
|
trust_threshold: 100u128, // Low threshold for benchmarking
|
|
};
|
|
|
|
#[extrinsic_call]
|
|
_(RawOrigin::Signed(caller.clone()), category.clone());
|
|
|
|
// Verify the validator was added
|
|
assert!(PoolMembers::<T>::contains_key(&caller));
|
|
assert!(PerformanceMetrics::<T>::contains_key(&caller));
|
|
}
|
|
|
|
#[benchmark]
|
|
fn leave_validator_pool() {
|
|
let caller: T::AccountId = whitelisted_caller();
|
|
|
|
let category = ValidatorPoolCategory::StakeValidator {
|
|
min_stake: T::MinStakeAmount::get(),
|
|
trust_threshold: 100u128,
|
|
};
|
|
|
|
PoolMembers::<T>::insert(&caller, &category);
|
|
PoolSize::<T>::put(1u32);
|
|
PerformanceMetrics::<T>::insert(&caller, ValidatorPerformance::default());
|
|
|
|
#[extrinsic_call]
|
|
_(RawOrigin::Signed(caller.clone()));
|
|
|
|
// Verify the validator was removed
|
|
assert!(!PoolMembers::<T>::contains_key(&caller));
|
|
assert!(!PerformanceMetrics::<T>::contains_key(&caller));
|
|
}
|
|
|
|
#[benchmark]
|
|
fn update_performance_metrics() {
|
|
let validator: T::AccountId = whitelisted_caller();
|
|
|
|
PerformanceMetrics::<T>::insert(&validator, ValidatorPerformance::default());
|
|
|
|
#[extrinsic_call]
|
|
_(
|
|
RawOrigin::Root,
|
|
validator.clone(),
|
|
100u32, // blocks_produced
|
|
10u32, // blocks_missed
|
|
500u32, // era_points
|
|
);
|
|
|
|
// Verify metrics were updated
|
|
let metrics = PerformanceMetrics::<T>::get(&validator);
|
|
assert_eq!(metrics.blocks_produced, 100);
|
|
}
|
|
|
|
#[benchmark]
|
|
fn force_new_era(p: Linear<4, 100>, // Pool size
|
|
) {
|
|
// Add validators to pool
|
|
for i in 0..p {
|
|
let validator: T::AccountId = account("validator", i, 0);
|
|
let category = match i % 3 {
|
|
0 => ValidatorPoolCategory::StakeValidator {
|
|
min_stake: T::MinStakeAmount::get(),
|
|
trust_threshold: 100u128,
|
|
},
|
|
1 => ValidatorPoolCategory::ParliamentaryValidator,
|
|
_ => ValidatorPoolCategory::MeritValidator {
|
|
special_tikis: vec![1u8].try_into().unwrap(),
|
|
community_threshold: 100u32,
|
|
},
|
|
};
|
|
|
|
PoolMembers::<T>::insert(&validator, &category);
|
|
|
|
let performance = ValidatorPerformance {
|
|
blocks_produced: 90,
|
|
blocks_missed: 10,
|
|
era_points: 500,
|
|
last_active_era: 0,
|
|
reputation_score: 90,
|
|
};
|
|
PerformanceMetrics::<T>::insert(&validator, performance);
|
|
}
|
|
|
|
PoolSize::<T>::put(p);
|
|
EraLength::<T>::put(BlockNumberFor::<T>::from(100u32));
|
|
|
|
#[extrinsic_call]
|
|
_(RawOrigin::Root);
|
|
|
|
// Verify new era was created
|
|
assert_eq!(CurrentEra::<T>::get(), 1);
|
|
assert!(CurrentValidatorSet::<T>::get().is_some());
|
|
}
|
|
|
|
#[benchmark]
|
|
fn update_category() {
|
|
let caller: T::AccountId = whitelisted_caller();
|
|
|
|
let initial_category = ValidatorPoolCategory::StakeValidator {
|
|
min_stake: T::MinStakeAmount::get(),
|
|
trust_threshold: 100u128,
|
|
};
|
|
PoolMembers::<T>::insert(&caller, &initial_category);
|
|
|
|
let new_category = ValidatorPoolCategory::ParliamentaryValidator;
|
|
|
|
#[extrinsic_call]
|
|
_(RawOrigin::Signed(caller.clone()), new_category.clone());
|
|
|
|
// Verify category was updated
|
|
assert_eq!(PoolMembers::<T>::get(&caller).unwrap(), new_category);
|
|
}
|
|
|
|
#[benchmark]
|
|
fn set_pool_parameters() {
|
|
let new_era_length = BlockNumberFor::<T>::from(200u32);
|
|
|
|
#[extrinsic_call]
|
|
_(RawOrigin::Root, new_era_length);
|
|
|
|
// Verify parameters were updated
|
|
assert_eq!(EraLength::<T>::get(), new_era_length);
|
|
}
|
|
|
|
impl_benchmark_test_suite!(Pezpallet, crate::mock::new_test_ext(), crate::mock::Test);
|
|
}
|