Files
pezkuwi-sdk/pezcumulus/teyrchains/pezpallets/perwerde/src/benchmarking.rs
T
pezkuwichain 65b7f5e640 fix: Resolve cargo clippy errors and add CI workflow plan
## 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
2025-12-23 09:37:11 +03:00

111 lines
3.2 KiB
Rust

//! Benchmarking setup for pezpallet-perwerde
use super::{Pezpallet as Perwerde, *};
use pezframe_benchmarking::v2::*;
use pezframe_support::{pezpallet_prelude::Get, BoundedVec};
use pezframe_system::RawOrigin;
extern crate alloc;
// Helper function to create BoundedVec in benchmarks
fn create_bounded_vec<L: Get<u32>>(s: &[u8]) -> BoundedVec<u8, L> {
s.to_vec().try_into().unwrap()
}
#[benchmarks]
mod benchmarks {
use super::*;
#[benchmark]
fn create_course() {
let name: BoundedVec<u8, T::MaxCourseNameLength> =
create_bounded_vec(b"Bizinikiwi training");
let description: BoundedVec<u8, T::MaxCourseDescLength> =
create_bounded_vec(b"This training covers Bizinikiwi basics.");
let content_link: BoundedVec<u8, T::MaxCourseLinkLength> =
create_bounded_vec(b"http://example.com");
// In benchmark environment, AdminOrigin is bypassed
// We use Root origin which will satisfy the origin check
#[extrinsic_call]
create_course(RawOrigin::Root, name.clone(), description.clone(), content_link.clone());
assert!(Courses::<T>::get(0).is_some());
}
#[benchmark]
fn enroll() {
let student: T::AccountId = whitelisted_caller();
let course_id = 0;
// Setup: Create a course first using root
Perwerde::<T>::create_course(
RawOrigin::Root.into(),
create_bounded_vec(b"Benchmark Course"),
create_bounded_vec(b"Description"),
create_bounded_vec(b"Link"),
)
.unwrap();
#[extrinsic_call]
enroll(RawOrigin::Signed(student.clone()), course_id);
assert!(Enrollments::<T>::get((student, course_id)).is_some());
}
#[benchmark]
fn complete_course() {
let student: T::AccountId = whitelisted_caller();
let course_id = 0;
let points = 10;
// Setup: Create course and enroll student
// Root creates the course via AdminOrigin
Perwerde::<T>::create_course(
RawOrigin::Root.into(),
create_bounded_vec(b"Benchmark Course"),
create_bounded_vec(b"Description"),
create_bounded_vec(b"Link"),
)
.unwrap();
Perwerde::<T>::enroll(RawOrigin::Signed(student.clone()).into(), course_id).unwrap();
// Get the actual owner from the created course
let course = Courses::<T>::get(course_id).unwrap();
let owner = course.owner;
// complete_course requires the owner to sign, not root
#[extrinsic_call]
complete_course(RawOrigin::Signed(owner), student.clone(), course_id, points);
let enrollment = Enrollments::<T>::get((student, course_id)).unwrap();
assert!(enrollment.completed_at.is_some());
assert_eq!(enrollment.points_earned, points);
}
#[benchmark]
fn archive_course() {
let course_id = 0;
// Setup: Create course first
Perwerde::<T>::create_course(
RawOrigin::Root.into(),
create_bounded_vec(b"Benchmark Course"),
create_bounded_vec(b"Description"),
create_bounded_vec(b"Link"),
)
.unwrap();
// archive_course requires AdminOrigin (which is Root in our config)
// The AdminOrigin::try_origin for Root returns the admin account (Alice)
// which matches the course owner from create_course
#[extrinsic_call]
archive_course(RawOrigin::Root, course_id);
let course = Courses::<T>::get(course_id).unwrap();
assert_eq!(course.status, CourseStatus::Archived);
}
impl_benchmark_test_suite!(Perwerde, crate::mock::new_test_ext(), crate::mock::Test);
}