diff --git a/test/async-hooks/test-crypto-pbkdf2.js b/test/async-hooks/test-crypto-pbkdf2.js index ed7270d191e9..4788ce4a5806 100644 --- a/test/async-hooks/test-crypto-pbkdf2.js +++ b/test/async-hooks/test-crypto-pbkdf2.js @@ -7,7 +7,7 @@ if (!common.isMainThread) common.skip('Worker bootstrapping works differently -> different async IDs'); const assert = require('assert'); -const tick = require('./tick'); +const tick = require('../common/tick'); const initHooks = require('./init-hooks'); const { checkInvocations } = require('./hook-checks'); const crypto = require('crypto'); diff --git a/test/async-hooks/test-crypto-randomBytes.js b/test/async-hooks/test-crypto-randomBytes.js index 67f5221a5e0b..88cd4643ab66 100644 --- a/test/async-hooks/test-crypto-randomBytes.js +++ b/test/async-hooks/test-crypto-randomBytes.js @@ -7,7 +7,7 @@ if (!common.isMainThread) common.skip('Worker bootstrapping works differently -> different async IDs'); const assert = require('assert'); -const tick = require('./tick'); +const tick = require('../common/tick'); const initHooks = require('./init-hooks'); const { checkInvocations } = require('./hook-checks'); const crypto = require('crypto'); diff --git a/test/async-hooks/test-embedder.api.async-resource.js b/test/async-hooks/test-embedder.api.async-resource.js index 89a889b20192..6f71a3e98cbf 100644 --- a/test/async-hooks/test-embedder.api.async-resource.js +++ b/test/async-hooks/test-embedder.api.async-resource.js @@ -2,7 +2,7 @@ const common = require('../common'); const assert = require('assert'); -const tick = require('./tick'); +const tick = require('../common/tick'); const async_hooks = require('async_hooks'); const { AsyncResource } = async_hooks; diff --git a/test/async-hooks/test-enable-disable.js b/test/async-hooks/test-enable-disable.js index df093da608c2..c14a125688d0 100644 --- a/test/async-hooks/test-enable-disable.js +++ b/test/async-hooks/test-enable-disable.js @@ -85,7 +85,7 @@ const common = require('../common'); const assert = require('assert'); -const tick = require('./tick'); +const tick = require('../common/tick'); const initHooks = require('./init-hooks'); const { checkInvocations } = require('./hook-checks'); diff --git a/test/async-hooks/test-fseventwrap.js b/test/async-hooks/test-fseventwrap.js index 56ada05b760e..8608075c822d 100644 --- a/test/async-hooks/test-fseventwrap.js +++ b/test/async-hooks/test-fseventwrap.js @@ -3,7 +3,7 @@ const common = require('../common'); const assert = require('assert'); const initHooks = require('./init-hooks'); -const tick = require('./tick'); +const tick = require('../common/tick'); const { checkInvocations } = require('./hook-checks'); const fs = require('fs'); diff --git a/test/async-hooks/test-fsreqwrap-access.js b/test/async-hooks/test-fsreqwrap-access.js index 2b31f2512d6b..3a6ce123bd16 100644 --- a/test/async-hooks/test-fsreqwrap-access.js +++ b/test/async-hooks/test-fsreqwrap-access.js @@ -2,7 +2,7 @@ const common = require('../common'); const assert = require('assert'); -const tick = require('./tick'); +const tick = require('../common/tick'); const initHooks = require('./init-hooks'); const { checkInvocations } = require('./hook-checks'); const fs = require('fs'); diff --git a/test/async-hooks/test-fsreqwrap-readFile.js b/test/async-hooks/test-fsreqwrap-readFile.js index 064cd80a4827..ec58b7d78e81 100644 --- a/test/async-hooks/test-fsreqwrap-readFile.js +++ b/test/async-hooks/test-fsreqwrap-readFile.js @@ -2,7 +2,7 @@ const common = require('../common'); const assert = require('assert'); -const tick = require('./tick'); +const tick = require('../common/tick'); const initHooks = require('./init-hooks'); const { checkInvocations } = require('./hook-checks'); const fs = require('fs'); diff --git a/test/async-hooks/test-getaddrinforeqwrap.js b/test/async-hooks/test-getaddrinforeqwrap.js index bb5bf04849b4..f2a978d76406 100644 --- a/test/async-hooks/test-getaddrinforeqwrap.js +++ b/test/async-hooks/test-getaddrinforeqwrap.js @@ -2,7 +2,7 @@ const common = require('../common'); const assert = require('assert'); -const tick = require('./tick'); +const tick = require('../common/tick'); const initHooks = require('./init-hooks'); const { checkInvocations } = require('./hook-checks'); const dns = require('dns'); diff --git a/test/async-hooks/test-getnameinforeqwrap.js b/test/async-hooks/test-getnameinforeqwrap.js index f0425ee3dc85..9e06cbf9cbf1 100644 --- a/test/async-hooks/test-getnameinforeqwrap.js +++ b/test/async-hooks/test-getnameinforeqwrap.js @@ -2,7 +2,7 @@ const common = require('../common'); const assert = require('assert'); -const tick = require('./tick'); +const tick = require('../common/tick'); const initHooks = require('./init-hooks'); const { checkInvocations } = require('./hook-checks'); const dns = require('dns'); diff --git a/test/async-hooks/test-httpparser.request.js b/test/async-hooks/test-httpparser.request.js index c6e18be5a63d..7ff99da66c42 100644 --- a/test/async-hooks/test-httpparser.request.js +++ b/test/async-hooks/test-httpparser.request.js @@ -2,7 +2,7 @@ const common = require('../common'); const assert = require('assert'); -const tick = require('./tick'); +const tick = require('../common/tick'); const initHooks = require('./init-hooks'); const { checkInvocations } = require('./hook-checks'); diff --git a/test/async-hooks/test-httpparser.response.js b/test/async-hooks/test-httpparser.response.js index d56e3e1fecae..14a257bf6d6b 100644 --- a/test/async-hooks/test-httpparser.response.js +++ b/test/async-hooks/test-httpparser.response.js @@ -2,7 +2,7 @@ const common = require('../common'); const assert = require('assert'); -const tick = require('./tick'); +const tick = require('../common/tick'); const initHooks = require('./init-hooks'); const { checkInvocations } = require('./hook-checks'); diff --git a/test/async-hooks/test-immediate.js b/test/async-hooks/test-immediate.js index 3ef782eb5fa6..7b51902f77cb 100644 --- a/test/async-hooks/test-immediate.js +++ b/test/async-hooks/test-immediate.js @@ -2,7 +2,7 @@ const common = require('../common'); const assert = require('assert'); -const tick = require('./tick'); +const tick = require('../common/tick'); const initHooks = require('./init-hooks'); const { checkInvocations } = require('./hook-checks'); diff --git a/test/async-hooks/test-pipeconnectwrap.js b/test/async-hooks/test-pipeconnectwrap.js index df4b8110e67e..6c68186e2f23 100644 --- a/test/async-hooks/test-pipeconnectwrap.js +++ b/test/async-hooks/test-pipeconnectwrap.js @@ -2,7 +2,7 @@ const common = require('../common'); const assert = require('assert'); -const tick = require('./tick'); +const tick = require('../common/tick'); const initHooks = require('./init-hooks'); const { checkInvocations } = require('./hook-checks'); diff --git a/test/async-hooks/test-pipewrap.js b/test/async-hooks/test-pipewrap.js index d4df64d74306..a632115d228d 100644 --- a/test/async-hooks/test-pipewrap.js +++ b/test/async-hooks/test-pipewrap.js @@ -5,7 +5,7 @@ const common = require('../common'); const assert = require('assert'); -const tick = require('./tick'); +const tick = require('../common/tick'); const initHooks = require('./init-hooks'); const { checkInvocations } = require('./hook-checks'); const { spawn } = require('child_process'); diff --git a/test/async-hooks/test-querywrap.js b/test/async-hooks/test-querywrap.js index 7d71a1831308..f6e7e12e81e9 100644 --- a/test/async-hooks/test-querywrap.js +++ b/test/async-hooks/test-querywrap.js @@ -3,7 +3,7 @@ const common = require('../common'); const assert = require('assert'); -const tick = require('./tick'); +const tick = require('../common/tick'); const initHooks = require('./init-hooks'); const { checkInvocations } = require('./hook-checks'); const dns = require('dns'); diff --git a/test/async-hooks/test-tcpwrap.js b/test/async-hooks/test-tcpwrap.js index f3100aba0f0a..a01a1fc4fe21 100644 --- a/test/async-hooks/test-tcpwrap.js +++ b/test/async-hooks/test-tcpwrap.js @@ -6,7 +6,7 @@ if (!common.hasIPv6) common.skip('IPv6 support required'); const assert = require('assert'); -const tick = require('./tick'); +const tick = require('../common/tick'); const initHooks = require('./init-hooks'); const { checkInvocations } = require('./hook-checks'); const net = require('net'); diff --git a/test/async-hooks/test-timers.setTimeout.js b/test/async-hooks/test-timers.setTimeout.js index 8f1d3222ddf6..748fa5565eee 100644 --- a/test/async-hooks/test-timers.setTimeout.js +++ b/test/async-hooks/test-timers.setTimeout.js @@ -2,7 +2,7 @@ const common = require('../common'); const assert = require('assert'); -const tick = require('./tick'); +const tick = require('../common/tick'); const initHooks = require('./init-hooks'); const { checkInvocations } = require('./hook-checks'); const TIMEOUT = common.platformTimeout(100); diff --git a/test/async-hooks/test-timerwrap.setInterval.js b/test/async-hooks/test-timerwrap.setInterval.js index 058f2c9a9d14..d2fae9538907 100644 --- a/test/async-hooks/test-timerwrap.setInterval.js +++ b/test/async-hooks/test-timerwrap.setInterval.js @@ -2,7 +2,7 @@ const common = require('../common'); const assert = require('assert'); -const tick = require('./tick'); +const tick = require('../common/tick'); const initHooks = require('./init-hooks'); const { checkInvocations } = require('./hook-checks'); const TIMEOUT = 1; diff --git a/test/async-hooks/test-timerwrap.setTimeout.js b/test/async-hooks/test-timerwrap.setTimeout.js index 9c873125d044..e633b759773c 100644 --- a/test/async-hooks/test-timerwrap.setTimeout.js +++ b/test/async-hooks/test-timerwrap.setTimeout.js @@ -2,7 +2,7 @@ const common = require('../common'); const assert = require('assert'); -const tick = require('./tick'); +const tick = require('../common/tick'); const initHooks = require('./init-hooks'); const { checkInvocations } = require('./hook-checks'); const TIMEOUT = common.platformTimeout(100); diff --git a/test/async-hooks/test-tlswrap.js b/test/async-hooks/test-tlswrap.js index 79cf1ab689e9..354cd7ad0cd9 100644 --- a/test/async-hooks/test-tlswrap.js +++ b/test/async-hooks/test-tlswrap.js @@ -8,7 +8,7 @@ const assert = require('assert'); const fixtures = require('../common/fixtures'); const tls = require('tls'); -const tick = require('./tick'); +const tick = require('../common/tick'); const initHooks = require('./init-hooks'); const { checkInvocations } = require('./hook-checks'); diff --git a/test/async-hooks/test-ttywrap.readstream.js b/test/async-hooks/test-ttywrap.readstream.js index 65853da1f7ab..bf81a3266c1f 100644 --- a/test/async-hooks/test-ttywrap.readstream.js +++ b/test/async-hooks/test-ttywrap.readstream.js @@ -4,7 +4,7 @@ const common = require('../common'); const assert = require('assert'); // general hook test setup -const tick = require('./tick'); +const tick = require('../common/tick'); const initHooks = require('./init-hooks'); const { checkInvocations } = require('./hook-checks'); diff --git a/test/async-hooks/test-ttywrap.writestream.js b/test/async-hooks/test-ttywrap.writestream.js index d8a453e7be27..44f32e80f015 100644 --- a/test/async-hooks/test-ttywrap.writestream.js +++ b/test/async-hooks/test-ttywrap.writestream.js @@ -4,7 +4,7 @@ const common = require('../common'); const assert = require('assert'); // general hook test setup -const tick = require('./tick'); +const tick = require('../common/tick'); const initHooks = require('./init-hooks'); const { checkInvocations } = require('./hook-checks'); diff --git a/test/async-hooks/test-udpwrap.js b/test/async-hooks/test-udpwrap.js index 5770ac060edc..0a0e03c5d514 100644 --- a/test/async-hooks/test-udpwrap.js +++ b/test/async-hooks/test-udpwrap.js @@ -2,7 +2,7 @@ const common = require('../common'); const assert = require('assert'); -const tick = require('./tick'); +const tick = require('../common/tick'); const initHooks = require('./init-hooks'); const { checkInvocations } = require('./hook-checks'); const dgram = require('dgram'); diff --git a/test/common/README.md b/test/common/README.md index 63b7905113f5..afc267ba7cb1 100644 --- a/test/common/README.md +++ b/test/common/README.md @@ -13,6 +13,7 @@ This directory contains modules used to test the Node.js implementation. * [Heap dump checker module](#heap-dump-checker-module) * [HTTP2 module](#http2-module) * [Internet module](#internet-module) +* [tick module](#tick-module) * [tmpdir module](#tmpdir-module) * [WPT module](#wpt-module) @@ -744,6 +745,16 @@ a full `setImmediate()` invocation passes. should not be in scope when `listener.ongc()` is created. +## tick Module + +The `tick` module provides a helper function that can be used to call a callback +after a given number of event loop "ticks". + +### tick(x, cb) + +* `x` [<number>] Number of event loop "ticks". +* `cb` [<Function>] A callback function. + ## tmpdir Module The `tmpdir` module supports the use of a temporary directory for testing. diff --git a/test/async-hooks/tick.js b/test/common/tick.js similarity index 100% rename from test/async-hooks/tick.js rename to test/common/tick.js diff --git a/test/parallel/test-http2-session-gc-while-write-scheduled.js b/test/parallel/test-http2-session-gc-while-write-scheduled.js index bb23760cebf9..aef9d9571d55 100644 --- a/test/parallel/test-http2-session-gc-while-write-scheduled.js +++ b/test/parallel/test-http2-session-gc-while-write-scheduled.js @@ -6,6 +6,7 @@ if (!common.hasCrypto) common.skip('missing crypto'); const http2 = require('http2'); const makeDuplexPair = require('../common/duplexpair'); +const tick = require('../common/tick'); // This tests that running garbage collection while an Http2Session has // a write *scheduled*, it will survive that garbage collection. @@ -25,8 +26,3 @@ const makeDuplexPair = require('../common/duplexpair'); global.gc(); }); } - -function tick(n, cb) { - if (n--) setImmediate(tick, n, cb); - else cb(); -} diff --git a/test/parallel/test-worker-message-port-transfer-self.js b/test/parallel/test-worker-message-port-transfer-self.js index c6f29163dfc6..6b8addf0229e 100644 --- a/test/parallel/test-worker-message-port-transfer-self.js +++ b/test/parallel/test-worker-message-port-transfer-self.js @@ -5,6 +5,7 @@ const common = require('../common'); const assert = require('assert'); const util = require('util'); const { MessageChannel } = require('worker_threads'); +const tick = require('../common/tick'); const { port1, port2 } = new MessageChannel(); @@ -42,10 +43,3 @@ port2.onmessage = common.mustCall((message) => { }); }); port1.postMessage(2); - -function tick(n, cb) { - if (n > 0) - setImmediate(() => tick(n - 1, cb)); - else - cb(); -}