astar_xcm_benchmarks/
lib.rs1#![cfg_attr(not(feature = "std"), no_std)]
20
21pub mod fungible;
22pub mod generic;
23
24#[cfg(test)]
25mod mock;
26
27use sp_std::vec::Vec;
28
29pub trait Config: frame_system::Config + pallet_xcm_benchmarks::Config {}
31
32pub struct WrappedBenchmark<Outer, Inner>(core::marker::PhantomData<(Outer, Inner)>);
35impl<Outer, Inner> frame_benchmarking::Benchmarking for WrappedBenchmark<Outer, Inner>
36where
37 Outer: frame_benchmarking::Benchmarking,
38 Inner: frame_benchmarking::Benchmarking,
39{
40 fn benchmarks(extra: bool) -> Vec<frame_benchmarking::BenchmarkMetadata> {
41 let mut outer = Outer::benchmarks(extra);
42 let inner = Inner::benchmarks(extra);
43
44 for meta in inner {
45 if !outer.iter().any(|m| m.name == meta.name) {
46 outer.push(meta)
47 }
48 }
49 outer
50 }
51
52 fn run_benchmark(
53 name: &[u8],
54 c: &[(frame_benchmarking::BenchmarkParameter, u32)],
55 whitelist: &[frame_support::traits::TrackedStorageKey],
56 verify: bool,
57 internal_repeats: u32,
58 ) -> Result<Vec<frame_benchmarking::BenchmarkResult>, frame_benchmarking::BenchmarkError> {
59 if Outer::benchmarks(true).iter().any(|x| x.name == name) {
60 Outer::run_benchmark(name, c, whitelist, verify, internal_repeats)
61 } else {
62 Inner::run_benchmark(name, c, whitelist, verify, internal_repeats)
63 }
64 }
65}