summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Trott <rtrott@gmail.com>2018-11-07 14:40:35 -0800
committerRich Trott <rtrott@gmail.com>2018-11-07 19:26:32 -0800
commitd8e06b23b047b52c96ee01f7afb436aad4610c71 (patch)
tree78a881b28c8364c31f6556b1013bf99d476f0e57
parent5c596222433166a7c0274251cca1e55f3bf9560f (diff)
downloadandroid-node-v8-d8e06b23b047b52c96ee01f7afb436aad4610c71.tar.gz
android-node-v8-d8e06b23b047b52c96ee01f7afb436aad4610c71.tar.bz2
android-node-v8-d8e06b23b047b52c96ee01f7afb436aad4610c71.zip
test: fix flaky VM timeout test on Raspberry Pi
Increase the timeouts based on platform. This required adjusting common.platformTimeout() to deal with bigint. Fixes: https://github.com/nodejs/node/issues/24120 PR-URL: https://github.com/nodejs/node/pull/24238 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Richard Lau <riclau@uk.ibm.com>
-rw-r--r--test/common/README.md8
-rw-r--r--test/common/index.js16
-rw-r--r--test/known_issues/known_issues.status1
-rw-r--r--test/known_issues/test-vm-timeout-escape-nexttick.js11
4 files changed, 22 insertions, 14 deletions
diff --git a/test/common/README.md b/test/common/README.md
index afc267ba7c..f0bcced82e 100644
--- a/test/common/README.md
+++ b/test/common/README.md
@@ -271,10 +271,12 @@ See `common.expectWarning()` for usage.
Indicates whether 'opensslCli' is supported.
### platformTimeout(ms)
-* `ms` [&lt;number>]
-* return [&lt;number>]
+* `ms` [&lt;number>|&lt;bigint>]
+* return [&lt;number>|&lt;bigint>]
-Platform normalizes timeout.
+Returns a timeout value based on detected conditions. For example, a debug build
+may need extra time so the returned value will be larger than on a release
+build.
### PIPE
* [&lt;string>]
diff --git a/test/common/index.js b/test/common/index.js
index da5027af13..7b668e58c4 100644
--- a/test/common/index.js
+++ b/test/common/index.js
@@ -187,14 +187,20 @@ const pwdCommand = isWindows ?
function platformTimeout(ms) {
+ // ESLint will not support 'bigint' in valid-typeof until it reaches stage 4.
+ // See https://github.com/eslint/eslint/pull/9636.
+ // eslint-disable-next-line valid-typeof
+ const multipliers = typeof ms === 'bigint' ?
+ { two: 2n, four: 4n, seven: 7n } : { two: 2, four: 4, seven: 7 };
+
if (process.features.debug)
- ms = 2 * ms;
+ ms = multipliers.two * ms;
if (global.__coverage__)
- ms = 4 * ms;
+ ms = multipliers.four * ms;
if (isAIX)
- return 2 * ms; // default localhost speed is slower on AIX
+ return multipliers.two * ms; // default localhost speed is slower on AIX
if (process.arch !== 'arm')
return ms;
@@ -202,10 +208,10 @@ function platformTimeout(ms) {
const armv = process.config.variables.arm_version;
if (armv === '6')
- return 7 * ms; // ARMv6
+ return multipliers.seven * ms; // ARMv6
if (armv === '7')
- return 2 * ms; // ARMv7
+ return multipliers.two * ms; // ARMv7
return ms; // ARMv8+
}
diff --git a/test/known_issues/known_issues.status b/test/known_issues/known_issues.status
index 5a1ab28928..2a5514920b 100644
--- a/test/known_issues/known_issues.status
+++ b/test/known_issues/known_issues.status
@@ -9,7 +9,6 @@ prefix known_issues
[$system==win32]
[$system==linux]
-test-vm-timeout-escape-nexttick: PASS,FLAKY
test-vm-timeout-escape-promise: PASS,FLAKY
test-vm-timeout-escape-queuemicrotask: PASS,FLAKY
diff --git a/test/known_issues/test-vm-timeout-escape-nexttick.js b/test/known_issues/test-vm-timeout-escape-nexttick.js
index 8afe2fb8ce..814da178fb 100644
--- a/test/known_issues/test-vm-timeout-escape-nexttick.js
+++ b/test/known_issues/test-vm-timeout-escape-nexttick.js
@@ -4,7 +4,7 @@
// Promises, nextTick, and queueMicrotask allow code to escape the timeout
// set for runInContext, runInNewContext, and runInThisContext
-require('../common');
+const common = require('../common');
const assert = require('assert');
const vm = require('vm');
@@ -13,12 +13,14 @@ const NS_PER_MS = 1000000n;
const hrtime = process.hrtime.bigint;
const nextTick = process.nextTick;
+const waitDuration = common.platformTimeout(100n);
+
function loop() {
const start = hrtime();
while (1) {
const current = hrtime();
const span = (current - start) / NS_PER_MS;
- if (span >= 100n) {
+ if (span >= waitDuration) {
throw new Error(
`escaped timeout at ${span} milliseconds!`);
}
@@ -33,9 +35,8 @@ assert.throws(() => {
nextTick,
loop
},
- { timeout: 5 }
+ { timeout: common.platformTimeout(5) }
);
}, {
- code: 'ERR_SCRIPT_EXECUTION_TIMEOUT',
- message: 'Script execution timed out after 5ms'
+ code: 'ERR_SCRIPT_EXECUTION_TIMEOUT'
});