diff options
Diffstat (limited to 'cli/tools/bench.rs')
-rw-r--r-- | cli/tools/bench.rs | 48 |
1 files changed, 29 insertions, 19 deletions
diff --git a/cli/tools/bench.rs b/cli/tools/bench.rs index 5f467bc6e..88e19dd70 100644 --- a/cli/tools/bench.rs +++ b/cli/tools/bench.rs @@ -15,7 +15,7 @@ use crate::util::file_watcher::ResolutionResult; use crate::util::fs::collect_specifiers; use crate::util::path::is_supported_ext; use crate::version::get_user_agent; -use crate::worker::create_custom_worker; +use crate::worker::CliMainWorkerFactory; use deno_core::error::generic_error; use deno_core::error::AnyError; @@ -48,6 +48,7 @@ use tokio::sync::mpsc::UnboundedSender; struct BenchSpecifierOptions { filter: TestFilter, json: bool, + log_level: Option<log::Level>, } #[derive(Debug, Clone, Eq, PartialEq, Deserialize)] @@ -434,20 +435,20 @@ async fn check_specifiers( /// Run a single specifier as an executable bench module. async fn bench_specifier( - ps: ProcState, + worker_factory: &CliMainWorkerFactory, permissions: Permissions, specifier: ModuleSpecifier, sender: UnboundedSender<BenchEvent>, filter: TestFilter, ) -> Result<(), AnyError> { - let mut worker = create_custom_worker( - &ps, - specifier.clone(), - PermissionsContainer::new(permissions), - vec![ops::bench::deno_bench::init_ops(sender.clone())], - Default::default(), - ) - .await?; + let mut worker = worker_factory + .create_custom_worker( + specifier.clone(), + PermissionsContainer::new(permissions), + vec![ops::bench::deno_bench::init_ops(sender.clone())], + Default::default(), + ) + .await?; // We execute the main module as a side module so that import.meta.main is not set. worker.execute_side_module_possibly_with_npm().await?; @@ -508,26 +509,29 @@ async fn bench_specifier( /// Test a collection of specifiers with test modes concurrently. async fn bench_specifiers( - ps: &ProcState, + worker_factory: Arc<CliMainWorkerFactory>, permissions: &Permissions, specifiers: Vec<ModuleSpecifier>, options: BenchSpecifierOptions, ) -> Result<(), AnyError> { - let log_level = ps.options.log_level(); - let (sender, mut receiver) = unbounded_channel::<BenchEvent>(); - + let log_level = options.log_level; let option_for_handles = options.clone(); let join_handles = specifiers.into_iter().map(move |specifier| { - let ps = ps.clone(); + let worker_factory = worker_factory.clone(); let permissions = permissions.clone(); let specifier = specifier; let sender = sender.clone(); let options = option_for_handles.clone(); tokio::task::spawn_blocking(move || { - let future = - bench_specifier(ps, permissions, specifier, sender, options.filter); + let future = bench_specifier( + &worker_factory, + permissions, + specifier, + sender, + options.filter, + ); run_local(future) }) }); @@ -650,13 +654,16 @@ pub async fn run_benchmarks( return Ok(()); } + let log_level = ps.options.log_level(); + let worker_factory = Arc::new(ps.into_cli_main_worker_factory()); bench_specifiers( - &ps, + worker_factory, &permissions, specifiers, BenchSpecifierOptions { filter: TestFilter::from_flag(&bench_options.filter), json: bench_options.json, + log_level, }, ) .await?; @@ -809,13 +816,16 @@ pub async fn run_benchmarks_with_watch( return Ok(()); } + let log_level = ps.options.log_level(); + let worker_factory = Arc::new(ps.into_cli_main_worker_factory()); bench_specifiers( - &ps, + worker_factory, permissions, specifiers, BenchSpecifierOptions { filter: TestFilter::from_flag(&bench_options.filter), json: bench_options.json, + log_level, }, ) .await?; |