From fec1b2a5a4324a7eecdfbb2471931f3b6b0139c5 Mon Sep 17 00:00:00 2001 From: Aaron O'Mullan Date: Wed, 31 Mar 2021 16:37:38 +0200 Subject: refactor: new optimized op-layer using serde_v8 (#9843) - Improves op performance. - Handle op-metadata (errors, promise IDs) explicitly in the op-layer vs per op-encoding (aka: out-of-payload). - Remove shared queue & custom "asyncHandlers", all async values are returned in batches via js_recv_cb. - The op-layer should be thought of as simple function calls with little indirection or translation besides the conceptually straightforward serde_v8 bijections. - Preserve concepts of json/bin/min as semantic groups of their inputs/outputs instead of their op-encoding strategy, preserving these groups will also facilitate partial transitions over to v8 Fast API for the "min" and "bin" groups --- cli/tests/unit/metrics_test.ts | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'cli/tests/unit/metrics_test.ts') diff --git a/cli/tests/unit/metrics_test.ts b/cli/tests/unit/metrics_test.ts index 525e5aae6..9fa37e99b 100644 --- a/cli/tests/unit/metrics_test.ts +++ b/cli/tests/unit/metrics_test.ts @@ -7,35 +7,38 @@ unitTest(async function metrics(): Promise { const dataMsg = new Uint8Array([13, 13, 13]); // "\r\r\r", await Deno.stdout.write(dataMsg); + // WARNING: bytesReceived & bytesSentControl are now always zero + // following https://github.com/denoland/deno/pull/9843 + const m1 = Deno.metrics(); assert(m1.opsDispatched > 0); assert(m1.opsCompleted > 0); - assert(m1.bytesSentControl > 0); + assert(m1.bytesSentControl === 0); assert(m1.bytesSentData >= 0); - assert(m1.bytesReceived > 0); + assert(m1.bytesReceived === 0); const m1OpWrite = m1.ops["op_write_async"]; assert(m1OpWrite.opsDispatchedAsync > 0); assert(m1OpWrite.opsCompletedAsync > 0); - assert(m1OpWrite.bytesSentControl > 0); + assert(m1OpWrite.bytesSentControl === 0); assert(m1OpWrite.bytesSentData >= 0); - assert(m1OpWrite.bytesReceived > 0); + assert(m1OpWrite.bytesReceived === 0); await Deno.stdout.write(dataMsg); const m2 = Deno.metrics(); assert(m2.opsDispatchedAsync > m1.opsDispatchedAsync); assert(m2.opsCompletedAsync > m1.opsCompletedAsync); - assert(m2.bytesSentControl > m1.bytesSentControl); + assert(m2.bytesSentControl === m1.bytesSentControl); assert(m2.bytesSentData >= m1.bytesSentData + dataMsg.byteLength); - assert(m2.bytesReceived > m1.bytesReceived); + assert(m2.bytesReceived === m1.bytesReceived); const m2OpWrite = m2.ops["op_write_async"]; assert(m2OpWrite.opsDispatchedAsync > m1OpWrite.opsDispatchedAsync); assert(m2OpWrite.opsCompletedAsync > m1OpWrite.opsCompletedAsync); - assert(m2OpWrite.bytesSentControl > m1OpWrite.bytesSentControl); + assert(m2OpWrite.bytesSentControl === m1OpWrite.bytesSentControl); assert( m2OpWrite.bytesSentData >= m1OpWrite.bytesSentData + dataMsg.byteLength, ); - assert(m2OpWrite.bytesReceived > m1OpWrite.bytesReceived); + assert(m2OpWrite.bytesReceived === m1OpWrite.bytesReceived); }); unitTest( -- cgit v1.2.3