From eb7c3fb2f4512b828024651bd01c425055485043 Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Sun, 11 Oct 2015 20:53:31 -0700 Subject: [PATCH] test: split up buffer tests for reliability The Pi 1's in CI don't always fail on the buffer.toString() tests. But they time out sometimes, so let's split the tests up so they don't. PR-URL: https://github.com/nodejs/node/pull/3323 Reviewed By: Evan Lucas Reviewed-By: Brian White Reviewed By: Trevor Norris --- ...ingbytes-external-exceed-max-by-1-ascii.js | 23 ++++++++++++++ ...ngbytes-external-exceed-max-by-1-base64.js | 23 ++++++++++++++ ...gbytes-external-exceed-max-by-1-binary.js} | 31 +++---------------- ...tringbytes-external-exceed-max-by-1-hex.js | 23 ++++++++++++++ ...ringbytes-external-exceed-max-by-1-utf8.js | 27 ++++++++++++++++ 5 files changed, 101 insertions(+), 26 deletions(-) create mode 100644 test/parallel/test-stringbytes-external-exceed-max-by-1-ascii.js create mode 100644 test/parallel/test-stringbytes-external-exceed-max-by-1-base64.js rename test/parallel/{test-stringbytes-external-exceed-max-by-1.js => test-stringbytes-external-exceed-max-by-1-binary.js} (54%) create mode 100644 test/parallel/test-stringbytes-external-exceed-max-by-1-hex.js create mode 100644 test/parallel/test-stringbytes-external-exceed-max-by-1-utf8.js diff --git a/test/parallel/test-stringbytes-external-exceed-max-by-1-ascii.js b/test/parallel/test-stringbytes-external-exceed-max-by-1-ascii.js new file mode 100644 index 00000000000000..e982cf9eb092fd --- /dev/null +++ b/test/parallel/test-stringbytes-external-exceed-max-by-1-ascii.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 buf = new Buffer(kStringMaxLength + 1); + +assert.throws(function() { + buf.toString('ascii'); +}, /toString failed/); diff --git a/test/parallel/test-stringbytes-external-exceed-max-by-1-base64.js b/test/parallel/test-stringbytes-external-exceed-max-by-1-base64.js new file mode 100644 index 00000000000000..43a3358759e249 --- /dev/null +++ b/test/parallel/test-stringbytes-external-exceed-max-by-1-base64.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 buf = new Buffer(kStringMaxLength + 1); + +assert.throws(function() { + buf.toString('base64'); +}, /toString failed/); diff --git a/test/parallel/test-stringbytes-external-exceed-max-by-1.js b/test/parallel/test-stringbytes-external-exceed-max-by-1-binary.js similarity index 54% rename from test/parallel/test-stringbytes-external-exceed-max-by-1.js rename to test/parallel/test-stringbytes-external-exceed-max-by-1-binary.js index 8e2a5bf01f2596..9d0d2c3e897057 100644 --- a/test/parallel/test-stringbytes-external-exceed-max-by-1.js +++ b/test/parallel/test-stringbytes-external-exceed-max-by-1-binary.js @@ -16,37 +16,16 @@ try { return; } -const buf1 = new Buffer(kStringMaxLength + 1); +const buf = 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'); + buf.toString('binary'); }, /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); +var maxString = buf.toString('binary', 1); assert.equal(maxString.length, kStringMaxLength); +// Free the memory early instead of at the end of the next assignment maxString = undefined; -maxString = buf1.toString('binary', 0, kStringMaxLength); +maxString = buf.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-1-hex.js b/test/parallel/test-stringbytes-external-exceed-max-by-1-hex.js new file mode 100644 index 00000000000000..2937b4aab85813 --- /dev/null +++ b/test/parallel/test-stringbytes-external-exceed-max-by-1-hex.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 buf = new Buffer(kStringMaxLength + 1); + +assert.throws(function() { + buf.toString('hex'); +}, /toString failed/); diff --git a/test/parallel/test-stringbytes-external-exceed-max-by-1-utf8.js b/test/parallel/test-stringbytes-external-exceed-max-by-1-utf8.js new file mode 100644 index 00000000000000..ee297a880dacbd --- /dev/null +++ b/test/parallel/test-stringbytes-external-exceed-max-by-1-utf8.js @@ -0,0 +1,27 @@ +'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 + 1); + +assert.throws(function() { + buf.toString(); +}, /toString failed|Invalid array buffer length/); + +assert.throws(function() { + buf.toString('utf8'); +}, /toString failed/);