summaryrefslogtreecommitdiff
path: root/cli/tools/bench.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tools/bench.rs')
-rw-r--r--cli/tools/bench.rs48
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?;