node/test/fixtures/test-nodetiming-uvmetricsin...

46 lines
1.3 KiB
JavaScript

// Enforcing strict checks on the order or number of events across different
// platforms can be tricky and unreliable due to various factors.
// As a result, this test relies on the `uv_metrics_info` call instead.
const { performance } = require('node:perf_hooks');
const assert = require('node:assert');
const fs = require('node:fs');
const { nodeTiming } = performance;
function safeMetricsInfo(cb) {
setImmediate(() => {
const info = nodeTiming.uvMetricsInfo;
cb(info);
});
}
{
const info = nodeTiming.uvMetricsInfo;
assert.strictEqual(info.loopCount, 0);
assert.strictEqual(info.events, 0);
// This is the only part of the test that we test events waiting
// Adding checks for this property will make the test flaky
// as it can be highly influenced by race conditions.
assert.strictEqual(info.eventsWaiting, 0);
}
{
// The synchronous call should obviously not affect the uv metrics
const fd = fs.openSync(__filename, 'r');
fs.readFileSync(fd);
const info = nodeTiming.uvMetricsInfo;
assert.strictEqual(info.loopCount, 0);
assert.strictEqual(info.events, 0);
assert.strictEqual(info.eventsWaiting, 0);
}
{
function openFile(info) {
assert.strictEqual(info.loopCount, 1);
fs.open(__filename, 'r', (err) => {
assert.ifError(err);
});
}
safeMetricsInfo(openFile);
}