Skip to content

Commit

Permalink
test: increase timeouts on ARM
Browse files Browse the repository at this point in the history
This commit introduces platform-specific test timeouts for the ARM
architectures. ARMv6 is notoriously slow so gets very large timeouts on
both the timeout value for each test, as well as certain problematic
individual tests. ARMv7 and ARMv8 also get slightly increased headroom.

PR-URL: #1366
Fixes: #1343
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
  • Loading branch information
silverwind committed Apr 9, 2015
1 parent d2b62a4 commit 7049d7b
Show file tree
Hide file tree
Showing 12 changed files with 34 additions and 16 deletions.
10 changes: 10 additions & 0 deletions test/common.js
Expand Up @@ -179,6 +179,16 @@ exports.spawnPwd = function(options) {
}
};

exports.platformTimeout = function(ms) {
if (process.arch !== 'arm')
return ms;

if (process.config.variables.arm_version === '6')
return 6 * ms; // ARMv6

return 2 * ms; // ARMv7 and up.
};

var knownGlobals = [setTimeout,
setInterval,
setImmediate,
Expand Down
11 changes: 7 additions & 4 deletions test/parallel/test-child-process-fork-net2.js
Expand Up @@ -128,13 +128,13 @@ if (process.argv[2] === 'child') {

server.listen(common.PORT, '127.0.0.1');

var timeElasped = 0;
var timeElapsed = 0;
var closeServer = function() {
console.error('[m] closeServer');
var startTime = Date.now();
server.on('close', function() {
console.error('[m] emit(close)');
timeElasped = Date.now() - startTime;
timeElapsed = Date.now() - startTime;
});

console.error('[m] calling server.close');
Expand All @@ -149,11 +149,14 @@ if (process.argv[2] === 'child') {
}, 200);
};

var min = 190;
var max = common.platformTimeout(1500);
process.on('exit', function() {
assert.equal(disconnected, count);
assert.equal(connected, count);
assert.ok(closeEmitted);
assert.ok(timeElasped >= 190 && timeElasped <= 1000,
'timeElasped was not between 190 and 1000 ms');
assert.ok(timeElapsed >= min && timeElapsed <= max,
`timeElapsed was not between ${min} and ${max} ms:` +
`${timeElapsed}`);
});
}
2 changes: 1 addition & 1 deletion test/parallel/test-debug-signal-cluster.js
Expand Up @@ -51,7 +51,7 @@ function onNoMoreLines() {

setTimeout(function testTimedOut() {
assert(false, 'test timed out.');
}, 6000).unref();
}, common.platformTimeout(3000)).unref();

process.on('exit', function onExit() {
// Kill processes in reverse order to avoid timing problems on Windows where
Expand Down
4 changes: 2 additions & 2 deletions test/parallel/test-fs-empty-readStream.js
Expand Up @@ -22,7 +22,7 @@ fs.open(emptyFile, 'r', function (error, fd) {

setTimeout(function () {
assert.equal(readEmit, true);
}, 50);
}, common.platformTimeout(50));
});

fs.open(emptyFile, 'r', function (error, fd) {
Expand All @@ -43,5 +43,5 @@ fs.open(emptyFile, 'r', function (error, fd) {

setTimeout(function () {
assert.equal(readEmit, false);
}, 50);
}, common.platformTimeout(50));
});
2 changes: 1 addition & 1 deletion test/parallel/test-http-end-throw-socket-handling.js
Expand Up @@ -32,7 +32,7 @@ server.listen(common.PORT, function() {
setTimeout(function() {
process.removeListener('uncaughtException', catcher);
throw new Error('Taking too long!');
}, 1000).unref();
}, common.platformTimeout(1000)).unref();

process.on('uncaughtException', catcher);
var errors = 0;
Expand Down
2 changes: 1 addition & 1 deletion test/parallel/test-repl-timeout-throw.js
Expand Up @@ -44,7 +44,7 @@ child.stdout.once('data', function() {
' });\n' +
'});"";\n');

setTimeout(child.stdin.end.bind(child.stdin), 200);
setTimeout(child.stdin.end.bind(child.stdin), common.platformTimeout(200));
}
});

Expand Down
2 changes: 1 addition & 1 deletion test/parallel/test-tls-fast-writing.js
Expand Up @@ -22,7 +22,7 @@ var gotDrain = false;
var timer = setTimeout(function() {
console.log('not ok - timed out');
process.exit(1);
}, 500);
}, common.platformTimeout(500));

function onconnection(conn) {
conn.on('data', function(c) {
Expand Down
4 changes: 3 additions & 1 deletion test/parallel/test-tls-wrap-timeout.js
Expand Up @@ -27,7 +27,9 @@ var server = tls.createServer(options, function(c) {

server.listen(common.PORT, function() {
var socket = net.connect(common.PORT, function() {
socket.setTimeout(240, assert.fail);
socket.setTimeout(common.platformTimeout(240), function() {
throw new Error('timeout');
});

var tsocket = tls.connect({
socket: socket,
Expand Down
2 changes: 1 addition & 1 deletion test/sequential/test-force-repl.js
Expand Up @@ -7,7 +7,7 @@ var cp = spawn(process.execPath, ['-i']);
var gotToEnd = false;
var timeoutId = setTimeout(function() {
throw new Error('timeout!');
}, 1000); // give node + the repl 1 second to boot up
}, common.platformTimeout(1000)); // give node + the repl 1 second to boot up

cp.stdout.setEncoding('utf8');

Expand Down
2 changes: 1 addition & 1 deletion test/sequential/test-net-GH-5504.js
Expand Up @@ -72,7 +72,7 @@ function parent() {
setTimeout(function() {
throw new Error('hang');
});
}, 4000).unref();
}, common.platformTimeout(2000)).unref();

var s = spawn(node, [__filename, 'server'], opt);
var c;
Expand Down
5 changes: 3 additions & 2 deletions tools/test.py
Expand Up @@ -729,8 +729,9 @@ def GetTestStatus(self, context, sections, defs):
'debug' : ['--enable-slow-asserts', '--debug-code', '--verify-heap'],
'release' : []}
TIMEOUT_SCALEFACTOR = {
'arm' : { 'debug' : 8, 'release' : 2 }, # The ARM buildbots are slow.
'ia32' : { 'debug' : 4, 'release' : 1 } }
'armv6' : { 'debug' : 12, 'release' : 3 }, # The ARM buildbots are slow.
'arm' : { 'debug' : 8, 'release' : 2 },
'ia32' : { 'debug' : 4, 'release' : 1 } }


class Context(object):
Expand Down
4 changes: 3 additions & 1 deletion tools/utils.py
Expand Up @@ -73,7 +73,9 @@ def GuessOS():
def GuessArchitecture():
id = platform.machine()
id = id.lower() # Windows 7 capitalizes 'AMD64'.
if id.startswith('arm') or id == 'aarch64':
if id.startswith('armv6'): # Can return 'armv6l'.
return 'armv6'
elif id.startswith('arm') or id == 'aarch64':
return 'arm'
elif (not id) or (not re.match('(x|i[3-6])86$', id) is None):
return 'ia32'
Expand Down

0 comments on commit 7049d7b

Please sign in to comment.