test: increase timeouts on ARM

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: https://github.com/iojs/io.js/pull/1366
Fixes: https://github.com/iojs/io.js/issues/1343
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
This commit is contained in:
Roman Reiss 2015-04-07 20:41:07 +02:00
Родитель d2b62a4973
Коммит 7049d7b474
12 изменённых файлов: 34 добавлений и 16 удалений

Просмотреть файл

@ -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,

Просмотреть файл

@ -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');
@ -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}`);
});
}

Просмотреть файл

@ -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

Просмотреть файл

@ -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) {
@ -43,5 +43,5 @@ fs.open(emptyFile, 'r', function (error, fd) {
setTimeout(function () {
assert.equal(readEmit, false);
}, 50);
}, common.platformTimeout(50));
});

Просмотреть файл

@ -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;

Просмотреть файл

@ -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));
}
});

Просмотреть файл

@ -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) {

Просмотреть файл

@ -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,

Просмотреть файл

@ -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');

Просмотреть файл

@ -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;

Просмотреть файл

@ -729,7 +729,8 @@ FLAGS = {
'debug' : ['--enable-slow-asserts', '--debug-code', '--verify-heap'],
'release' : []}
TIMEOUT_SCALEFACTOR = {
'arm' : { 'debug' : 8, 'release' : 2 }, # The ARM buildbots are slow.
'armv6' : { 'debug' : 12, 'release' : 3 }, # The ARM buildbots are slow.
'arm' : { 'debug' : 8, 'release' : 2 },
'ia32' : { 'debug' : 4, 'release' : 1 } }

Просмотреть файл

@ -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'