diff options
Diffstat (limited to 'cli')
-rw-r--r-- | cli/dts/lib.deno.unstable.d.ts | 24 | ||||
-rw-r--r-- | cli/ops/mod.rs | 4 | ||||
-rw-r--r-- | cli/tests/unit/metrics_test.ts | 28 |
3 files changed, 42 insertions, 14 deletions
diff --git a/cli/dts/lib.deno.unstable.d.ts b/cli/dts/lib.deno.unstable.d.ts index 1632d03be..a9353e2ff 100644 --- a/cli/dts/lib.deno.unstable.d.ts +++ b/cli/dts/lib.deno.unstable.d.ts @@ -850,13 +850,13 @@ declare namespace Deno { | "TXT"; export interface ResolveDnsOptions { - /** The name server to be used for lookups. - * If not specified, defaults to the system configuration e.g. `/etc/resolv.conf` on Unix. */ + /** The name server to be used for lookups. + * If not specified, defaults to the system configuration e.g. `/etc/resolv.conf` on Unix. */ nameServer?: { /** The IP address of the name server */ ipAddr: string; /** The port number the query will be sent to. - * If not specified, defaults to 53. */ + * If not specified, defaults to 53. */ port?: number; }; } @@ -1343,6 +1343,24 @@ declare namespace Deno { * ``` */ export function sleepSync(millis: number): Promise<void>; + + export interface Metrics extends OpMetrics { + ops: Record<string, OpMetrics>; + } + + export interface OpMetrics { + opsDispatched: number; + opsDispatchedSync: number; + opsDispatchedAsync: number; + opsDispatchedAsyncUnref: number; + opsCompleted: number; + opsCompletedSync: number; + opsCompletedAsync: number; + opsCompletedAsyncUnref: number; + bytesSentControl: number; + bytesSentData: number; + bytesReceived: number; + } } declare function fetch( diff --git a/cli/ops/mod.rs b/cli/ops/mod.rs index c46c5cd20..e47722198 100644 --- a/cli/ops/mod.rs +++ b/cli/ops/mod.rs @@ -21,7 +21,7 @@ where F: Fn(Rc<RefCell<OpState>>, Value, BufVec) -> R + 'static, R: Future<Output = Result<Value, AnyError>> + 'static, { - rt.register_op(name, metrics_op(json_op_async(op_fn))); + rt.register_op(name, metrics_op(name, json_op_async(op_fn))); } pub fn reg_json_sync<F>(rt: &mut JsRuntime, name: &'static str, op_fn: F) @@ -29,5 +29,5 @@ where F: Fn(&mut OpState, Value, &mut [ZeroCopyBuf]) -> Result<Value, AnyError> + 'static, { - rt.register_op(name, metrics_op(json_op_sync(op_fn))); + rt.register_op(name, metrics_op(name, json_op_sync(op_fn))); } diff --git a/cli/tests/unit/metrics_test.ts b/cli/tests/unit/metrics_test.ts index a60aae427..2f12ac90d 100644 --- a/cli/tests/unit/metrics_test.ts +++ b/cli/tests/unit/metrics_test.ts @@ -2,30 +2,40 @@ import { assert, unitTest } from "./test_util.ts"; unitTest(async function metrics(): Promise<void> { + // Write to stdout to ensure a "data" message gets sent instead of just + // control messages. + const dataMsg = new Uint8Array([13, 13, 13]); // "\r\r\r", + await Deno.stdout.write(dataMsg); + const m1 = Deno.metrics(); assert(m1.opsDispatched > 0); - assert(m1.opsDispatchedSync > 0); assert(m1.opsCompleted > 0); - assert(m1.opsCompletedSync > 0); assert(m1.bytesSentControl > 0); assert(m1.bytesSentData >= 0); assert(m1.bytesReceived > 0); + const m1OpWrite = m1.ops["op_write"]; + assert(m1OpWrite.opsDispatchedAsync > 0); + assert(m1OpWrite.opsCompletedAsync > 0); + assert(m1OpWrite.bytesSentControl > 0); + assert(m1OpWrite.bytesSentData >= 0); + assert(m1OpWrite.bytesReceived > 0); - // Write to stdout to ensure a "data" message gets sent instead of just - // control messages. - const dataMsg = new Uint8Array([13, 13, 13]); // "\r\r\r", await Deno.stdout.write(dataMsg); const m2 = Deno.metrics(); - assert(m2.opsDispatched > m1.opsDispatched); - assert(m2.opsDispatchedSync > m1.opsDispatchedSync); assert(m2.opsDispatchedAsync > m1.opsDispatchedAsync); - assert(m2.opsCompleted > m1.opsCompleted); - assert(m2.opsCompletedSync > m1.opsCompletedSync); assert(m2.opsCompletedAsync > m1.opsCompletedAsync); assert(m2.bytesSentControl > m1.bytesSentControl); assert(m2.bytesSentData >= m1.bytesSentData + dataMsg.byteLength); assert(m2.bytesReceived > m1.bytesReceived); + const m2OpWrite = m2.ops["op_write"]; + assert(m2OpWrite.opsDispatchedAsync > m1OpWrite.opsDispatchedAsync); + assert(m2OpWrite.opsCompletedAsync > m1OpWrite.opsCompletedAsync); + assert(m2OpWrite.bytesSentControl > m1OpWrite.bytesSentControl); + assert( + m2OpWrite.bytesSentData >= m1OpWrite.bytesSentData + dataMsg.byteLength, + ); + assert(m2OpWrite.bytesReceived > m1OpWrite.bytesReceived); }); unitTest( |