Files
pezkuwi-sdk/pezcumulus/teyrchains/pezpallets/messaging/src/benchmarking.rs
T
pezkuwichain 5f5569603b feat(people): add pezpallet-messaging to People Chain runtime
End-to-end encrypted messaging pallet with citizenship and trust score
verification. Integrated into People Chain runtime as pallet index 55.
spec_version bumped to 1_020_009.
2026-03-04 03:55:55 +03:00

77 lines
2.1 KiB
Rust

//! Benchmarking setup for pezpallet-messaging
//!
//! Run benchmarks with:
//! ```
//! ./target/release/frame-omni-bencher v1 benchmark pezpallet \
//! --runtime target/release/wbuild/people-pezkuwichain-runtime/people_pezkuwichain_runtime.compact.compressed.wasm \
//! --pallets pezpallet_messaging -e all --steps 50 --repeat 20 \
//! --output pezcumulus/teyrchains/pezpallets/messaging/src/weights.rs \
//! --template bizinikiwi/.maintain/frame-weight-template.hbs
//! ```
#![cfg(feature = "runtime-benchmarks")]
use super::*;
use pezframe_benchmarking::v2::*;
use pezframe_system::RawOrigin;
#[benchmarks]
mod benchmarks {
use super::*;
#[benchmark]
fn register_encryption_key() {
let caller: T::AccountId = whitelisted_caller();
// NOTE: In real benchmarks, caller must be mocked as citizen.
// This requires BenchmarkHelper trait integration (future work).
let key = [1u8; 32];
#[extrinsic_call]
_(RawOrigin::Signed(caller.clone()), key);
assert!(EncryptionKeys::<T>::contains_key(&caller));
}
#[benchmark]
fn send_message(l: Linear<1, 512>) {
let sender: T::AccountId = whitelisted_caller();
let recipient: T::AccountId = account("recipient", 0, 0);
let key = [2u8; 32];
let ephemeral = [3u8; 32];
let nonce = [4u8; 24];
let ciphertext = alloc::vec![0xAB; l as usize];
// Pre-setup: register encryption keys
EncryptionKeys::<T>::insert(&sender, [1u8; 32]);
EncryptionKeys::<T>::insert(&recipient, key);
#[extrinsic_call]
_(RawOrigin::Signed(sender), recipient.clone(), ephemeral, nonce, ciphertext);
}
#[benchmark]
fn acknowledge_messages() {
let caller: T::AccountId = whitelisted_caller();
#[extrinsic_call]
_(RawOrigin::Signed(caller));
}
#[benchmark]
fn cleanup_era(n: Linear<1, 100>) {
// Pre-populate storage with n entries for era 0
let era: u32 = 0;
for i in 0..n {
let account: T::AccountId = account("user", i, 0);
Inbox::<T>::insert(era, &account, BoundedVec::default());
}
#[block]
{
Inbox::<T>::clear_prefix(era, n, None);
}
}
impl_benchmark_test_suite!(Pezpallet, crate::mock::new_test_ext(), crate::mock::Test,);
}