From c3672b09eb6c74e6d3acb85302a6f496b5daa99f Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Thu, 8 Oct 2015 13:56:34 -0700 Subject: [PATCH 1/4] test: parallelize long-running test --- .../test-stringbytes-external-at-max.js | 30 ++++++++ ...st-stringbytes-external-exceed-max-by-1.js | 52 ++++++++++++++ ...st-stringbytes-external-exceed-max-by-2.js | 22 ++++++ .../test-stringbytes-external-exceed-max.js | 23 +++++++ test/parallel/test-stringbytes-external.js | 69 ------------------- 5 files changed, 127 insertions(+), 69 deletions(-) create mode 100644 test/parallel/test-stringbytes-external-at-max.js create mode 100644 test/parallel/test-stringbytes-external-exceed-max-by-1.js create mode 100644 test/parallel/test-stringbytes-external-exceed-max-by-2.js create mode 100644 test/parallel/test-stringbytes-external-exceed-max.js diff --git a/test/parallel/test-stringbytes-external-at-max.js b/test/parallel/test-stringbytes-external-at-max.js new file mode 100644 index 00000000000000..2d47726bc37f5e --- /dev/null +++ b/test/parallel/test-stringbytes-external-at-max.js @@ -0,0 +1,30 @@ +'use strict'; + +require('../common'); +const assert = require('assert'); + +// 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 buf = new Buffer(kStringMaxLength); + + var maxString = buf.toString(); + assert.equal(maxString.length, kStringMaxLength); + // Free the memory early instead of at the end of the next assignment + maxString = undefined; + + maxString = buf.toString('binary'); + assert.equal(maxString.length, kStringMaxLength); + maxString = undefined; +})(); diff --git a/test/parallel/test-stringbytes-external-exceed-max-by-1.js b/test/parallel/test-stringbytes-external-exceed-max-by-1.js new file mode 100644 index 00000000000000..8e2a5bf01f2596 --- /dev/null +++ b/test/parallel/test-stringbytes-external-exceed-max-by-1.js @@ -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; diff --git a/test/parallel/test-stringbytes-external-exceed-max-by-2.js b/test/parallel/test-stringbytes-external-exceed-max-by-2.js new file mode 100644 index 00000000000000..879e4ae91dfb60 --- /dev/null +++ b/test/parallel/test-stringbytes-external-exceed-max-by-2.js @@ -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); diff --git a/test/parallel/test-stringbytes-external-exceed-max.js b/test/parallel/test-stringbytes-external-exceed-max.js new file mode 100644 index 00000000000000..0a6f585b66f3ad --- /dev/null +++ b/test/parallel/test-stringbytes-external-exceed-max.js @@ -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/); diff --git a/test/parallel/test-stringbytes-external.js b/test/parallel/test-stringbytes-external.js index ddbbcd599fa4da..ba3f0c5d1d9ade 100644 --- a/test/parallel/test-stringbytes-external.js +++ b/test/parallel/test-stringbytes-external.js @@ -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; -})(); From 3b9e2bee4c1ec328865d5d154d4c225d44560aa7 Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Fri, 9 Oct 2015 15:34:42 -0700 Subject: [PATCH 2/4] fixup: update error message --- .../test-stringbytes-external-at-max.js | 38 +++++++++---------- ...st-stringbytes-external-exceed-max-by-1.js | 2 +- ...st-stringbytes-external-exceed-max-by-2.js | 2 +- .../test-stringbytes-external-exceed-max.js | 2 +- 4 files changed, 21 insertions(+), 23 deletions(-) diff --git a/test/parallel/test-stringbytes-external-at-max.js b/test/parallel/test-stringbytes-external-at-max.js index 2d47726bc37f5e..ffee40793d7da2 100644 --- a/test/parallel/test-stringbytes-external-at-max.js +++ b/test/parallel/test-stringbytes-external-at-max.js @@ -4,27 +4,25 @@ require('../common'); const assert = require('assert'); // v8 fails silently if string length > v8::String::kMaxLength -(function() { - // v8::String::kMaxLength defined in v8.h - const kStringMaxLength = process.binding('buffer').kStringMaxLength; +// 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; - } +try { + new Buffer(kStringMaxLength * 3); +} catch(e) { + assert.equal(e.message, 'Invalid typed array length'); + console.log( + '1..0 # Skipped: intensive toString tests due to memory confinements'); + return; +} - const buf = new Buffer(kStringMaxLength); +const buf = new Buffer(kStringMaxLength); - var maxString = buf.toString(); - assert.equal(maxString.length, kStringMaxLength); - // Free the memory early instead of at the end of the next assignment - maxString = undefined; +var maxString = buf.toString(); +assert.equal(maxString.length, kStringMaxLength); +// Free the memory early instead of at the end of the next assignment +maxString = undefined; - maxString = buf.toString('binary'); - assert.equal(maxString.length, kStringMaxLength); - maxString = undefined; -})(); +maxString = buf.toString('binary'); +assert.equal(maxString.length, kStringMaxLength); +maxString = undefined; diff --git a/test/parallel/test-stringbytes-external-exceed-max-by-1.js b/test/parallel/test-stringbytes-external-exceed-max-by-1.js index 8e2a5bf01f2596..6dc3252e144758 100644 --- a/test/parallel/test-stringbytes-external-exceed-max-by-1.js +++ b/test/parallel/test-stringbytes-external-exceed-max-by-1.js @@ -10,7 +10,7 @@ const kStringMaxLength = process.binding('buffer').kStringMaxLength; try { new Buffer(kStringMaxLength * 3); } catch(e) { - assert.equal(e.message, 'Invalid array buffer length'); + assert.equal(e.message, 'Invalid typed array length'); console.log( '1..0 # Skipped: intensive toString tests due to memory confinements'); return; diff --git a/test/parallel/test-stringbytes-external-exceed-max-by-2.js b/test/parallel/test-stringbytes-external-exceed-max-by-2.js index 879e4ae91dfb60..bcb19adf2f41f8 100644 --- a/test/parallel/test-stringbytes-external-exceed-max-by-2.js +++ b/test/parallel/test-stringbytes-external-exceed-max-by-2.js @@ -10,7 +10,7 @@ const kStringMaxLength = process.binding('buffer').kStringMaxLength; try { new Buffer(kStringMaxLength * 3); } catch(e) { - assert.equal(e.message, 'Invalid array buffer length'); + assert.equal(e.message, 'Invalid typed array length'); console.log( '1..0 # Skipped: intensive toString tests due to memory confinements'); return; diff --git a/test/parallel/test-stringbytes-external-exceed-max.js b/test/parallel/test-stringbytes-external-exceed-max.js index 0a6f585b66f3ad..0adcd58547f7c4 100644 --- a/test/parallel/test-stringbytes-external-exceed-max.js +++ b/test/parallel/test-stringbytes-external-exceed-max.js @@ -10,7 +10,7 @@ const kStringMaxLength = process.binding('buffer').kStringMaxLength; try { new Buffer(kStringMaxLength * 3); } catch(e) { - assert.equal(e.message, 'Invalid array buffer length'); + assert.equal(e.message, 'Invalid typed array length'); console.log( '1..0 # Skipped: intensive toString tests due to memory confinements'); return; From 55a1d94ac2f65bf4780e3df2b8d07a7c83ba351a Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Fri, 9 Oct 2015 15:52:09 -0700 Subject: [PATCH 3/4] fixup --- test/parallel/test-stringbytes-external-at-max.js | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/test/parallel/test-stringbytes-external-at-max.js b/test/parallel/test-stringbytes-external-at-max.js index ffee40793d7da2..4a0efc39e34441 100644 --- a/test/parallel/test-stringbytes-external-at-max.js +++ b/test/parallel/test-stringbytes-external-at-max.js @@ -18,11 +18,5 @@ try { const buf = new Buffer(kStringMaxLength); -var maxString = buf.toString(); +const maxString = buf.toString('binary'); assert.equal(maxString.length, kStringMaxLength); -// Free the memory early instead of at the end of the next assignment -maxString = undefined; - -maxString = buf.toString('binary'); -assert.equal(maxString.length, kStringMaxLength); -maxString = undefined; From 21e054b63c52d0bd85fcedeb3db2fc6af48ed1a1 Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Fri, 9 Oct 2015 22:40:08 -0700 Subject: [PATCH 4/4] fixup: revert error message check --- test/parallel/test-stringbytes-external-at-max.js | 2 +- test/parallel/test-stringbytes-external-exceed-max-by-1.js | 2 +- test/parallel/test-stringbytes-external-exceed-max-by-2.js | 2 +- test/parallel/test-stringbytes-external-exceed-max.js | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/test/parallel/test-stringbytes-external-at-max.js b/test/parallel/test-stringbytes-external-at-max.js index 4a0efc39e34441..6678e5355224b3 100644 --- a/test/parallel/test-stringbytes-external-at-max.js +++ b/test/parallel/test-stringbytes-external-at-max.js @@ -10,7 +10,7 @@ const kStringMaxLength = process.binding('buffer').kStringMaxLength; try { new Buffer(kStringMaxLength * 3); } catch(e) { - assert.equal(e.message, 'Invalid typed array length'); + assert.equal(e.message, 'Invalid array buffer length'); console.log( '1..0 # Skipped: intensive toString tests due to memory confinements'); return; diff --git a/test/parallel/test-stringbytes-external-exceed-max-by-1.js b/test/parallel/test-stringbytes-external-exceed-max-by-1.js index 6dc3252e144758..8e2a5bf01f2596 100644 --- a/test/parallel/test-stringbytes-external-exceed-max-by-1.js +++ b/test/parallel/test-stringbytes-external-exceed-max-by-1.js @@ -10,7 +10,7 @@ const kStringMaxLength = process.binding('buffer').kStringMaxLength; try { new Buffer(kStringMaxLength * 3); } catch(e) { - assert.equal(e.message, 'Invalid typed array length'); + assert.equal(e.message, 'Invalid array buffer length'); console.log( '1..0 # Skipped: intensive toString tests due to memory confinements'); return; diff --git a/test/parallel/test-stringbytes-external-exceed-max-by-2.js b/test/parallel/test-stringbytes-external-exceed-max-by-2.js index bcb19adf2f41f8..879e4ae91dfb60 100644 --- a/test/parallel/test-stringbytes-external-exceed-max-by-2.js +++ b/test/parallel/test-stringbytes-external-exceed-max-by-2.js @@ -10,7 +10,7 @@ const kStringMaxLength = process.binding('buffer').kStringMaxLength; try { new Buffer(kStringMaxLength * 3); } catch(e) { - assert.equal(e.message, 'Invalid typed array length'); + assert.equal(e.message, 'Invalid array buffer length'); console.log( '1..0 # Skipped: intensive toString tests due to memory confinements'); return; diff --git a/test/parallel/test-stringbytes-external-exceed-max.js b/test/parallel/test-stringbytes-external-exceed-max.js index 0adcd58547f7c4..0a6f585b66f3ad 100644 --- a/test/parallel/test-stringbytes-external-exceed-max.js +++ b/test/parallel/test-stringbytes-external-exceed-max.js @@ -10,7 +10,7 @@ const kStringMaxLength = process.binding('buffer').kStringMaxLength; try { new Buffer(kStringMaxLength * 3); } catch(e) { - assert.equal(e.message, 'Invalid typed array length'); + assert.equal(e.message, 'Invalid array buffer length'); console.log( '1..0 # Skipped: intensive toString tests due to memory confinements'); return;