Skip to content
Snippets Groups Projects
lib.rs 29.4 KiB
Newer Older
  • Learn to ignore specific revisions
  • /// ```ignore
    
    /// add_benchmark!(params, batches, pallet_balances, Balances);
    /// add_benchmark!(params, batches, pallet_session, SessionBench::<Runtime>);
    /// add_benchmark!(params, batches, frame_system, SystemBench::<Runtime>);
    
    /// ...
    /// ```
    
    /// At the end of `dispatch_benchmark`, you should return this batches object.
    #[macro_export]
    macro_rules! add_benchmark {
    
    	( $params:ident, $batches:ident, $name:ident, $( $location:tt )* ) => (
    		let name_string = stringify!($name).as_bytes();
    
    		let instance_string = stringify!( $( $location )* ).as_bytes();
    
    		let (config, whitelist) = $params;
    		let $crate::BenchmarkConfig {
    			pallet,
    			benchmark,
    			lowest_range_values,
    			highest_range_values,
    			steps,
    			repeat,
    			verify,
    			extra,
    		} = config;
    
    		if &pallet[..] == &name_string[..] || &pallet[..] == &b"*"[..] {
    
    			if &pallet[..] == &b"*"[..] || &benchmark[..] == &b"*"[..] {
    
    wangjj9219's avatar
    wangjj9219 committed
    				for benchmark in $( $location )*::Benchmark::benchmarks(*extra).into_iter() {
    
    					$batches.push($crate::BenchmarkBatch {
    
    						pallet: name_string.to_vec(),
    
    						instance: instance_string.to_vec(),
    
    						benchmark: benchmark.to_vec(),
    
    						results: $( $location )*::Benchmark::run_benchmark(
    							benchmark,
    							&lowest_range_values[..],
    							&highest_range_values[..],
    							&steps[..],
    
    							*repeat,
    
    							whitelist,
    
    							*verify,
    
    						).map_err(|e| {
    							$crate::show_benchmark_debug_info(
    								instance_string,
    								benchmark,
    								lowest_range_values,
    								highest_range_values,
    								steps,
    								repeat,
    								verify,
    								e,
    							)
    						})?,
    				});
    
    				}
    			} else {
    				$batches.push($crate::BenchmarkBatch {
    
    					pallet: name_string.to_vec(),
    
    					instance: instance_string.to_vec(),
    
    					benchmark: benchmark.clone(),
    
    					results: $( $location )*::Benchmark::run_benchmark(
    						&benchmark[..],
    						&lowest_range_values[..],
    						&highest_range_values[..],
    						&steps[..],
    
    						*repeat,
    
    						whitelist,
    
    Xiliang Chen's avatar
    Xiliang Chen committed
    						*verify,
    
    					).map_err(|e| {
    						$crate::show_benchmark_debug_info(
    							instance_string,
    							benchmark,
    							lowest_range_values,
    							highest_range_values,
    							steps,
    							repeat,
    							verify,
    							e,
    						)
    					})?,
    
    
    #[macro_export]
    macro_rules! whitelist_account {
    	($acc:ident) => {
    		frame_benchmarking::benchmarking::add_to_whitelist(
    			frame_system::Account::<Runtime>::hashed_key_for(&$acc).into(),
    		);
    	};
    }