@@ -11,8 +11,15 @@ use std::sync::LazyLock;
1111
1212use anyhow:: bail;
1313use clap:: ValueEnum ;
14+ use clickbench:: ClickBenchBenchmark ;
15+ use clickbench:: Flavor ;
16+ use fineweb:: FinewebBenchmark ;
1417use itertools:: Itertools ;
18+ use realnest:: gharchive:: GithubArchiveBenchmark ;
1519use serde:: Serialize ;
20+ use statpopgen:: StatPopGenBenchmark ;
21+ use tpcds:: TpcDsBenchmark ;
22+ use tpch:: benchmark:: TpcHBenchmark ;
1623pub use utils:: file:: * ;
1724pub use utils:: logging:: * ;
1825use vortex:: error:: VortexUnwrap ;
@@ -238,55 +245,50 @@ pub enum BenchmarkArg {
238245/// Default scale factor for TPC-related benchmarks
239246const DEFAULT_SCALE_FACTOR : & str = "1.0" ;
240247
241- /// Factory function to create a benchmark instance from CLI arguments.
242- pub fn create_benchmark ( b : BenchmarkArg , opts : Opts ) -> anyhow:: Result < Box < dyn Benchmark > > {
243- use clickbench:: ClickBenchBenchmark ;
244- use clickbench:: Flavor ;
245- use fineweb:: FinewebBenchmark ;
246- use realnest:: gharchive:: GithubArchiveBenchmark ;
247- use statpopgen:: StatPopGenBenchmark ;
248- use tpcds:: TpcDsBenchmark ;
249- use tpch:: benchmark:: TpcHBenchmark ;
248+ const SCALE_FACTOR_KEY : & str = "scale_factor" ;
249+ const REMOTE_DATA_KEY : & str = "remote_data_dir" ;
250250
251+ /// Factory function to create a benchmark instance from CLI arguments.
252+ pub fn create_benchmark ( b : BenchmarkArg , opts : & Opts ) -> anyhow:: Result < Box < dyn Benchmark > > {
251253 match b {
252254 BenchmarkArg :: ClickBench => {
253255 let flavor = opts. get_as :: < Flavor > ( "flavor" ) . unwrap_or_default ( ) ;
254- let remote_data_dir = opts. get_as :: < String > ( "remote_data_dir" ) ;
256+ let remote_data_dir = opts. get_as :: < String > ( REMOTE_DATA_KEY ) ;
255257 let benchmark = ClickBenchBenchmark :: new ( flavor, None , remote_data_dir) ?;
256258 Ok ( Box :: new ( benchmark) as _ )
257259 }
258260 BenchmarkArg :: TpcH => {
259- let scale_factor = opts. get ( "scale_factor" ) . unwrap_or ( DEFAULT_SCALE_FACTOR ) ;
260- let remote_data_dir = opts. get_as :: < String > ( "remote_data_dir" ) ;
261+ let scale_factor = opts. get ( SCALE_FACTOR_KEY ) . unwrap_or ( DEFAULT_SCALE_FACTOR ) ;
262+ let remote_data_dir = opts. get_as :: < String > ( REMOTE_DATA_KEY ) ;
261263 let benchmark = TpcHBenchmark :: new ( scale_factor. to_string ( ) , remote_data_dir) ?;
262264 Ok ( Box :: new ( benchmark) as _ )
263265 }
264266 BenchmarkArg :: TpcDS => {
265- let scale_factor = opts. get ( "scale_factor" ) . unwrap_or ( DEFAULT_SCALE_FACTOR ) ;
266- let remote_data_dir = opts. get_as :: < String > ( "remote_data_dir" ) ;
267+ let scale_factor = opts. get ( SCALE_FACTOR_KEY ) . unwrap_or ( DEFAULT_SCALE_FACTOR ) ;
268+ let remote_data_dir = opts. get_as :: < String > ( REMOTE_DATA_KEY ) ;
267269 let benchmark = TpcDsBenchmark :: new ( scale_factor. to_string ( ) , remote_data_dir) ?;
268270 Ok ( Box :: new ( benchmark) as _ )
269271 }
270272 BenchmarkArg :: StatPopGen => {
271- let scale_factor = opts. get_as :: < u64 > ( "scale_factor" ) . unwrap_or ( 1 ) ;
273+ let scale_factor = opts. get_as :: < u64 > ( SCALE_FACTOR_KEY ) . unwrap_or ( 1 ) ;
272274 let benchmark = StatPopGenBenchmark :: new ( scale_factor) ?;
273275 Ok ( Box :: new ( benchmark) as _ )
274276 }
275277 BenchmarkArg :: Fineweb => {
276- let remote_data_dir = opts. get_as :: < String > ( "remote_data_dir" ) ;
278+ let remote_data_dir = opts. get_as :: < String > ( REMOTE_DATA_KEY ) ;
277279 let benchmark = FinewebBenchmark :: with_remote_data_dir ( remote_data_dir) ?;
278280 Ok ( Box :: new ( benchmark) as _ )
279281 }
280282 BenchmarkArg :: GhArchive => {
281- let remote_data_dir = opts. get_as :: < String > ( "remote_data_dir" ) ;
283+ let remote_data_dir = opts. get_as :: < String > ( REMOTE_DATA_KEY ) ;
282284 let benchmark = GithubArchiveBenchmark :: with_remote_data_dir ( remote_data_dir) ?;
283285 Ok ( Box :: new ( benchmark) as _ )
284286 }
285287 }
286288}
287289
288290/// A single key-value option for benchmark configuration.
289- #[ derive( Clone ) ]
291+ #[ derive( Clone , Debug ) ]
290292pub struct Opt {
291293 key : String ,
292294 value : String ,
0 commit comments