test: parallelize long-running test
Fixes a persistently troublesome failing test by splitting it out into multiple parallel tests. Reviewed By: Evan Lucas <evanlucas@me.com> Reviewed By: Trevor Norris <trev.norris@gmail.com> Reviewed By: James M Snell <jasnell@gmail.com> PR-URL: https://github.com/nodejs/node/pull/3287
This commit is contained in:
parent
b9279aa193
commit
31c971d641
22
test/parallel/test-stringbytes-external-at-max.js
Normal file
22
test/parallel/test-stringbytes-external-at-max.js
Normal file
@ -0,0 +1,22 @@
|
||||
'use strict';
|
||||
|
||||
require('../common');
|
||||
const assert = require('assert');
|
||||
|
||||
// v8 fails silently if string length > v8::String::kMaxLength
|
||||
// v8::String::kMaxLength defined in v8.h
|
||||
const kStringMaxLength = process.binding('buffer').kStringMaxLength;
|
||||
|
||||
try {
|
||||
new Buffer(kStringMaxLength * 3);
|
||||
} catch(e) {
|
||||
assert.equal(e.message, 'Invalid array buffer length');
|
||||
console.log(
|
||||
'1..0 # Skipped: intensive toString tests due to memory confinements');
|
||||
return;
|
||||
}
|
||||
|
||||
const buf = new Buffer(kStringMaxLength);
|
||||
|
||||
const maxString = buf.toString('binary');
|
||||
assert.equal(maxString.length, kStringMaxLength);
|
52
test/parallel/test-stringbytes-external-exceed-max-by-1.js
Normal file
52
test/parallel/test-stringbytes-external-exceed-max-by-1.js
Normal file
@ -0,0 +1,52 @@
|
||||
'use strict';
|
||||
|
||||
require('../common');
|
||||
const assert = require('assert');
|
||||
|
||||
// v8 fails silently if string length > v8::String::kMaxLength
|
||||
// v8::String::kMaxLength defined in v8.h
|
||||
const kStringMaxLength = process.binding('buffer').kStringMaxLength;
|
||||
|
||||
try {
|
||||
new Buffer(kStringMaxLength * 3);
|
||||
} catch(e) {
|
||||
assert.equal(e.message, 'Invalid array buffer length');
|
||||
console.log(
|
||||
'1..0 # Skipped: intensive toString tests due to memory confinements');
|
||||
return;
|
||||
}
|
||||
|
||||
const buf1 = new Buffer(kStringMaxLength + 1);
|
||||
|
||||
assert.throws(function() {
|
||||
buf1.toString();
|
||||
}, /toString failed|Invalid array buffer length/);
|
||||
|
||||
assert.throws(function() {
|
||||
buf1.toString('ascii');
|
||||
}, /toString failed/);
|
||||
|
||||
assert.throws(function() {
|
||||
buf1.toString('utf8');
|
||||
}, /toString failed/);
|
||||
|
||||
assert.throws(function() {
|
||||
buf1.toString('binary');
|
||||
}, /toString failed/);
|
||||
|
||||
assert.throws(function() {
|
||||
buf1.toString('base64');
|
||||
}, /toString failed/);
|
||||
|
||||
assert.throws(function() {
|
||||
buf1.toString('hex');
|
||||
}, /toString failed/);
|
||||
|
||||
var maxString = buf1.toString('binary', 1);
|
||||
assert.equal(maxString.length, kStringMaxLength);
|
||||
maxString = undefined;
|
||||
|
||||
maxString = buf1.toString('binary', 0, kStringMaxLength);
|
||||
assert.equal(maxString.length, kStringMaxLength);
|
||||
// Free the memory early instead of at the end of the next assignment
|
||||
maxString = undefined;
|
22
test/parallel/test-stringbytes-external-exceed-max-by-2.js
Normal file
22
test/parallel/test-stringbytes-external-exceed-max-by-2.js
Normal file
@ -0,0 +1,22 @@
|
||||
'use strict';
|
||||
|
||||
require('../common');
|
||||
const assert = require('assert');
|
||||
|
||||
// v8 fails silently if string length > v8::String::kMaxLength
|
||||
// v8::String::kMaxLength defined in v8.h
|
||||
const kStringMaxLength = process.binding('buffer').kStringMaxLength;
|
||||
|
||||
try {
|
||||
new Buffer(kStringMaxLength * 3);
|
||||
} catch(e) {
|
||||
assert.equal(e.message, 'Invalid array buffer length');
|
||||
console.log(
|
||||
'1..0 # Skipped: intensive toString tests due to memory confinements');
|
||||
return;
|
||||
}
|
||||
|
||||
const buf2 = new Buffer(kStringMaxLength + 2);
|
||||
|
||||
const maxString = buf2.toString('utf16le');
|
||||
assert.equal(maxString.length, (kStringMaxLength + 2) / 2);
|
23
test/parallel/test-stringbytes-external-exceed-max.js
Normal file
23
test/parallel/test-stringbytes-external-exceed-max.js
Normal file
@ -0,0 +1,23 @@
|
||||
'use strict';
|
||||
|
||||
require('../common');
|
||||
const assert = require('assert');
|
||||
|
||||
// v8 fails silently if string length > v8::String::kMaxLength
|
||||
// v8::String::kMaxLength defined in v8.h
|
||||
const kStringMaxLength = process.binding('buffer').kStringMaxLength;
|
||||
|
||||
try {
|
||||
new Buffer(kStringMaxLength * 3);
|
||||
} catch(e) {
|
||||
assert.equal(e.message, 'Invalid array buffer length');
|
||||
console.log(
|
||||
'1..0 # Skipped: intensive toString tests due to memory confinements');
|
||||
return;
|
||||
}
|
||||
|
||||
const buf0 = new Buffer(kStringMaxLength * 2 + 2);
|
||||
|
||||
assert.throws(function() {
|
||||
buf0.toString('utf16le');
|
||||
}, /toString failed/);
|
@ -107,72 +107,3 @@ var PRE_3OF4_APEX = Math.ceil((EXTERN_APEX / 4) * 3) - RADIOS;
|
||||
assert.equal(a, b);
|
||||
assert.equal(b, c);
|
||||
})();
|
||||
|
||||
// v8 fails silently if string length > v8::String::kMaxLength
|
||||
(function() {
|
||||
// v8::String::kMaxLength defined in v8.h
|
||||
const kStringMaxLength = process.binding('buffer').kStringMaxLength;
|
||||
|
||||
try {
|
||||
new Buffer(kStringMaxLength * 3);
|
||||
} catch(e) {
|
||||
assert.equal(e.message, 'Invalid array buffer length');
|
||||
console.log(
|
||||
'1..0 # Skipped: intensive toString tests due to memory confinements');
|
||||
return;
|
||||
}
|
||||
|
||||
const buf0 = new Buffer(kStringMaxLength * 2 + 2);
|
||||
const buf1 = buf0.slice(0, kStringMaxLength + 1);
|
||||
const buf2 = buf0.slice(0, kStringMaxLength);
|
||||
const buf3 = buf0.slice(0, kStringMaxLength + 2);
|
||||
|
||||
assert.throws(function() {
|
||||
buf1.toString();
|
||||
}, /toString failed|Invalid array buffer length/);
|
||||
|
||||
assert.throws(function() {
|
||||
buf1.toString('ascii');
|
||||
}, /toString failed/);
|
||||
|
||||
assert.throws(function() {
|
||||
buf1.toString('utf8');
|
||||
}, /toString failed/);
|
||||
|
||||
assert.throws(function() {
|
||||
buf0.toString('utf16le');
|
||||
}, /toString failed/);
|
||||
|
||||
assert.throws(function() {
|
||||
buf1.toString('binary');
|
||||
}, /toString failed/);
|
||||
|
||||
assert.throws(function() {
|
||||
buf1.toString('base64');
|
||||
}, /toString failed/);
|
||||
|
||||
assert.throws(function() {
|
||||
buf1.toString('hex');
|
||||
}, /toString failed/);
|
||||
|
||||
var maxString = buf2.toString();
|
||||
assert.equal(maxString.length, kStringMaxLength);
|
||||
// Free the memory early instead of at the end of the next assignment
|
||||
maxString = undefined;
|
||||
|
||||
maxString = buf2.toString('binary');
|
||||
assert.equal(maxString.length, kStringMaxLength);
|
||||
maxString = undefined;
|
||||
|
||||
maxString = buf1.toString('binary', 1);
|
||||
assert.equal(maxString.length, kStringMaxLength);
|
||||
maxString = undefined;
|
||||
|
||||
maxString = buf1.toString('binary', 0, kStringMaxLength);
|
||||
assert.equal(maxString.length, kStringMaxLength);
|
||||
maxString = undefined;
|
||||
|
||||
maxString = buf3.toString('utf16le');
|
||||
assert.equal(maxString.length, (kStringMaxLength + 2) / 2);
|
||||
maxString = undefined;
|
||||
})();
|
||||
|
Loading…
x
Reference in New Issue
Block a user