Skip to content

Commit

Permalink
refactor(bench): Allocate IDs for benches (denoland#14757)
Browse files Browse the repository at this point in the history
  • Loading branch information
nayeemrmn committed May 30, 2022
1 parent 787e794 commit f0dd751
Show file tree
Hide file tree
Showing 6 changed files with 261 additions and 215 deletions.
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ eszip = "=0.20.0"
fancy-regex = "=0.9.0"
http = "=0.2.6"
import_map = "=0.9.0"
indexmap = "1.8.1"
jsonc-parser = { version = "=0.19.0", features = ["serde"] }
libc = "=0.2.126"
log = { version = "=0.4.16", features = ["serde"] }
Expand Down
52 changes: 51 additions & 1 deletion cli/ops/bench.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
use crate::tools::bench::BenchDescription;
use crate::tools::bench::BenchEvent;
use crate::tools::test::TestFilter;
use deno_core::error::generic_error;
use deno_core::error::AnyError;
use deno_core::op;
Expand All @@ -8,22 +10,32 @@ use deno_core::OpState;
use deno_runtime::permissions::create_child_permissions;
use deno_runtime::permissions::ChildPermissionsArg;
use deno_runtime::permissions::Permissions;
use serde::Deserialize;
use serde::Serialize;
use std::sync::atomic::AtomicUsize;
use std::sync::atomic::Ordering;
use std::time;
use tokio::sync::mpsc::UnboundedSender;
use uuid::Uuid;

pub fn init(sender: UnboundedSender<BenchEvent>, unstable: bool) -> Extension {
pub fn init(
sender: UnboundedSender<BenchEvent>,
filter: TestFilter,
unstable: bool,
) -> Extension {
Extension::builder()
.ops(vec![
op_pledge_test_permissions::decl(),
op_restore_test_permissions::decl(),
op_get_bench_origin::decl(),
op_register_bench::decl(),
op_dispatch_bench_event::decl(),
op_bench_now::decl(),
op_bench_check_unstable::decl(),
])
.state(move |state| {
state.put(sender.clone());
state.put(filter.clone());
state.put(Unstable(unstable));
Ok(())
})
Expand Down Expand Up @@ -97,6 +109,44 @@ fn op_get_bench_origin(state: &mut OpState) -> String {
state.borrow::<ModuleSpecifier>().to_string()
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
struct BenchInfo {
name: String,
origin: String,
baseline: bool,
group: Option<String>,
}

#[derive(Debug, Serialize)]
#[serde(rename_all = "camelCase")]
struct BenchRegisterResult {
id: usize,
filtered_out: bool,
}

static NEXT_ID: AtomicUsize = AtomicUsize::new(0);

#[op]
fn op_register_bench(
state: &mut OpState,
info: BenchInfo,
) -> Result<BenchRegisterResult, AnyError> {
let id = NEXT_ID.fetch_add(1, Ordering::SeqCst);
let filter = state.borrow::<TestFilter>().clone();
let filtered_out = !filter.includes(&info.name);
let description = BenchDescription {
id,
name: info.name,
origin: info.origin,
baseline: info.baseline,
group: info.group,
};
let sender = state.borrow::<UnboundedSender<BenchEvent>>().clone();
sender.send(BenchEvent::Register(description)).ok();
Ok(BenchRegisterResult { id, filtered_out })
}

#[op]
fn op_dispatch_bench_event(state: &mut OpState, event: BenchEvent) {
let sender = state.borrow::<UnboundedSender<BenchEvent>>().clone();
Expand Down
Loading

0 comments on commit f0dd751

Please sign in to comment.