Skip to content

Commit 2b8e654

Browse files
committed
chore: migrate to new deno_core and metrics
1 parent 76fbe85 commit 2b8e654

File tree

18 files changed

+83
-198
lines changed

18 files changed

+83
-198
lines changed

Cargo.lock

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ repository = "https://github.com/denoland/deno"
4040

4141
[workspace.dependencies]
4242
deno_ast = { version = "0.31.2", features = ["transpiling"] }
43-
deno_core = { version = "0.224.0" }
43+
deno_core = { version = "0.225.0" }
4444

4545
deno_runtime = { version = "0.130.0", path = "./runtime" }
4646
napi_sym = { version = "0.52.0", path = "./cli/napi/sym" }

cli/args/flags.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -398,6 +398,7 @@ pub struct Flags {
398398
pub config_flag: ConfigFlag,
399399
pub node_modules_dir: Option<bool>,
400400
pub vendor: Option<bool>,
401+
pub enable_op_summary_metrics: bool,
401402
pub enable_testing_features: bool,
402403
pub ext: Option<String>,
403404
pub ignore: Vec<PathBuf>,

cli/args/mod.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1137,6 +1137,11 @@ impl CliOptions {
11371137
}
11381138
}
11391139

1140+
pub fn enable_op_summary_metrics(&self) -> bool {
1141+
self.flags.enable_op_summary_metrics
1142+
|| matches!(self.flags.subcommand, DenoSubcommand::Test(_))
1143+
}
1144+
11401145
pub fn enable_testing_features(&self) -> bool {
11411146
self.flags.enable_testing_features
11421147
}

cli/factory.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -670,6 +670,7 @@ impl CliFactory {
670670
argv: self.options.argv().clone(),
671671
log_level: self.options.log_level().unwrap_or(log::Level::Info).into(),
672672
coverage_dir: self.options.coverage_dir(),
673+
enable_op_summary_metrics: self.options.enable_op_summary_metrics(),
673674
enable_testing_features: self.options.enable_testing_features(),
674675
has_node_modules_dir: self.options.has_node_modules_dir(),
675676
hmr: self.options.has_hmr(),

cli/ops/testing.rs

Lines changed: 41 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,17 @@ use deno_core::error::AnyError;
1414
use deno_core::op2;
1515
use deno_core::v8;
1616
use deno_core::ModuleSpecifier;
17-
use deno_core::OpMetrics;
17+
use deno_core::OpMetricsSummary;
18+
use deno_core::OpMetricsSummaryTracker;
1819
use deno_core::OpState;
1920
use deno_runtime::deno_fetch::reqwest;
2021
use deno_runtime::permissions::create_child_permissions;
2122
use deno_runtime::permissions::ChildPermissionsArg;
2223
use deno_runtime::permissions::PermissionsContainer;
2324
use serde::Serialize;
24-
use std::cell::Ref;
2525
use std::collections::hash_map::Entry;
2626
use std::collections::HashMap;
27+
use std::rc::Rc;
2728
use std::sync::atomic::AtomicUsize;
2829
use std::sync::atomic::Ordering;
2930
use uuid::Uuid;
@@ -243,38 +244,28 @@ fn op_test_event_step_result_failed(
243244
struct TestOpSanitizers(HashMap<u32, TestOpSanitizerState>);
244245

245246
enum TestOpSanitizerState {
246-
Collecting { metrics: Vec<OpMetrics> },
247+
Collecting { metrics: Vec<OpMetricsSummary> },
247248
Finished { report: Vec<TestOpSanitizerReport> },
248249
}
249250

250251
fn try_collect_metrics(
251-
state: &OpState,
252+
metrics: &OpMetricsSummaryTracker,
252253
force: bool,
253254
op_id_host_recv_msg: usize,
254255
op_id_host_recv_ctrl: usize,
255-
) -> Result<Ref<Vec<OpMetrics>>, bool> {
256-
let metrics = state.tracker.per_op();
257-
for op_metric in &*metrics {
258-
let has_pending_ops = op_metric.ops_dispatched_async
259-
+ op_metric.ops_dispatched_async_unref
260-
> op_metric.ops_completed_async + op_metric.ops_completed_async_unref;
261-
if has_pending_ops && !force {
262-
let host_recv_msg = metrics
263-
.get(op_id_host_recv_msg)
264-
.map(|op_metric| {
265-
op_metric.ops_dispatched_async + op_metric.ops_dispatched_async_unref
266-
> op_metric.ops_completed_async
267-
+ op_metric.ops_completed_async_unref
268-
})
269-
.unwrap_or(false);
270-
let host_recv_ctrl = metrics
271-
.get(op_id_host_recv_ctrl)
272-
.map(|op_metric| {
273-
op_metric.ops_dispatched_async + op_metric.ops_dispatched_async_unref
274-
> op_metric.ops_completed_async
275-
+ op_metric.ops_completed_async_unref
276-
})
277-
.unwrap_or(false);
256+
) -> Result<std::cell::Ref<Vec<OpMetricsSummary>>, bool> {
257+
let metrics = metrics.per_op();
258+
let host_recv_msg = metrics
259+
.get(op_id_host_recv_msg)
260+
.map(OpMetricsSummary::has_outstanding_ops)
261+
.unwrap_or(false);
262+
let host_recv_ctrl = metrics
263+
.get(op_id_host_recv_ctrl)
264+
.map(OpMetricsSummary::has_outstanding_ops)
265+
.unwrap_or(false);
266+
267+
for op_metric in metrics.iter() {
268+
if op_metric.has_outstanding_ops() && !force {
278269
return Err(host_recv_msg || host_recv_ctrl);
279270
}
280271
}
@@ -294,23 +285,23 @@ fn op_test_op_sanitizer_collect(
294285
#[smi] op_id_host_recv_msg: usize,
295286
#[smi] op_id_host_recv_ctrl: usize,
296287
) -> Result<u8, AnyError> {
297-
let metrics = {
298-
let metrics = match try_collect_metrics(
299-
state,
300-
force,
301-
op_id_host_recv_msg,
302-
op_id_host_recv_ctrl,
303-
) {
304-
Ok(metrics) => metrics,
305-
Err(false) => {
306-
return Ok(1);
307-
}
308-
Err(true) => {
309-
return Ok(2);
310-
}
311-
};
312-
metrics.clone()
313-
};
288+
let metrics = state.borrow::<Rc<OpMetricsSummaryTracker>>();
289+
let metrics = match try_collect_metrics(
290+
metrics,
291+
force,
292+
op_id_host_recv_msg,
293+
op_id_host_recv_ctrl,
294+
) {
295+
Ok(metrics) => metrics,
296+
Err(false) => {
297+
return Ok(1);
298+
}
299+
Err(true) => {
300+
return Ok(2);
301+
}
302+
}
303+
.clone();
304+
314305
let op_sanitizers = state.borrow_mut::<TestOpSanitizers>();
315306
match op_sanitizers.0.entry(id) {
316307
Entry::Vacant(entry) => {
@@ -348,11 +339,12 @@ fn op_test_op_sanitizer_finish(
348339
) -> Result<u8, AnyError> {
349340
// Drop `fetch` connection pool at the end of a test
350341
state.try_take::<reqwest::Client>();
342+
let metrics = state.borrow::<Rc<OpMetricsSummaryTracker>>();
351343

352344
// Generate a report of pending ops
353345
let report = {
354346
let after_metrics = match try_collect_metrics(
355-
state,
347+
metrics,
356348
force,
357349
op_id_host_recv_msg,
358350
op_id_host_recv_ctrl,
@@ -380,14 +372,10 @@ fn op_test_op_sanitizer_finish(
380372
for (id, (before, after)) in
381373
before_metrics.iter().zip(after_metrics.iter()).enumerate()
382374
{
383-
let async_pending_before = before.ops_dispatched_async
384-
+ before.ops_dispatched_async_unref
385-
- before.ops_completed_async
386-
- before.ops_completed_async_unref;
387-
let async_pending_after = after.ops_dispatched_async
388-
+ after.ops_dispatched_async_unref
389-
- after.ops_completed_async
390-
- after.ops_completed_async_unref;
375+
let async_pending_before =
376+
before.ops_dispatched_async - before.ops_completed_async;
377+
let async_pending_after =
378+
after.ops_dispatched_async - after.ops_completed_async;
391379
let diff = async_pending_after as i64 - async_pending_before as i64;
392380
if diff != 0 {
393381
report.push(TestOpSanitizerReport { id, diff });

cli/standalone/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -453,6 +453,7 @@ pub async fn run(
453453
argv: metadata.argv,
454454
log_level: WorkerLogLevel::Info,
455455
coverage_dir: None,
456+
enable_op_summary_metrics: false,
456457
enable_testing_features: false,
457458
has_node_modules_dir,
458459
hmr: false,

cli/tests/integration/js_unit_tests.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ util::unit_test_factory!(
5353
link_test,
5454
make_temp_test,
5555
message_channel_test,
56-
metrics_test,
5756
mkdir_test,
5857
navigator_test,
5958
net_test,

cli/tests/integration/run_tests.rs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3425,11 +3425,6 @@ itest!(unstable_ffi_19 {
34253425
exit_code: 70,
34263426
});
34273427

3428-
itest!(future_check2 {
3429-
args: "run --check run/future_check.ts",
3430-
output: "run/future_check2.out",
3431-
});
3432-
34333428
itest!(event_listener_error {
34343429
args: "run --quiet run/event_listener_error.ts",
34353430
output: "run/event_listener_error.ts.out",

cli/tests/testdata/run/future_check.ts

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)