mirror of
https://github.com/denoland/deno.git
synced 2024-12-24 16:19:12 -05:00
20627c9136
This commit rewrites "dispatch_minimal" into "dispatch_buffer". It's part of an effort to unify JS interface for ops for both json and minimal (buffer) ops. Before this commit "minimal ops" could be either sync or async depending on the return type from the op, but this commit changes it to have separate signatures for sync and async ops (just like in case of json ops).
68 lines
2.5 KiB
TypeScript
68 lines
2.5 KiB
TypeScript
// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.
|
|
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.opsCompleted > 0);
|
|
assert(m1.bytesSentControl > 0);
|
|
assert(m1.bytesSentData >= 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.bytesSentData >= 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.bytesSentData >= m1.bytesSentData + dataMsg.byteLength);
|
|
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.bytesSentData >= m1OpWrite.bytesSentData + dataMsg.byteLength,
|
|
);
|
|
assert(m2OpWrite.bytesReceived > m1OpWrite.bytesReceived);
|
|
});
|
|
|
|
unitTest(
|
|
{ perms: { write: true } },
|
|
function metricsUpdatedIfNoResponseSync(): void {
|
|
const filename = Deno.makeTempDirSync() + "/test.txt";
|
|
|
|
const data = new Uint8Array([41, 42, 43]);
|
|
Deno.writeFileSync(filename, data, { mode: 0o666 });
|
|
|
|
const metrics = Deno.metrics();
|
|
assert(metrics.opsDispatched === metrics.opsCompleted);
|
|
assert(metrics.opsDispatchedSync === metrics.opsCompletedSync);
|
|
},
|
|
);
|
|
|
|
unitTest(
|
|
{ perms: { write: true } },
|
|
async function metricsUpdatedIfNoResponseAsync(): Promise<void> {
|
|
const filename = Deno.makeTempDirSync() + "/test.txt";
|
|
|
|
const data = new Uint8Array([41, 42, 43]);
|
|
await Deno.writeFile(filename, data, { mode: 0o666 });
|
|
|
|
const metrics = Deno.metrics();
|
|
assert(metrics.opsDispatched === metrics.opsCompleted);
|
|
assert(metrics.opsDispatchedSync === metrics.opsCompletedSync);
|
|
assert(metrics.opsDispatchedAsync === metrics.opsCompletedAsync);
|
|
},
|
|
);
|