Browse Source

test: move long-running test to sequential

test-buffer-creation-regression is flaky on some SmartOS hosts in CI,
  timing out. Move to sequential so it does not compete with other tests
  for resources. Reduce three test cases to just the one needed to
  identify the regression.

  PR-URL: https://github.com/nodejs/node/pull/10161
  Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
  Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
  Reviewed-By: Italo A. Casas <me@italoacasas.com>

Backport-Of: https://github.com/nodejs/node/pull/10161
PR-URL: https://github.com/nodejs/node/pull/11176
Reviewed-By: James M Snell <jasnell@gmail.com>
v6.x
Rich Trott 8 years ago
committed by Myles Borins
parent
commit
1b85989fb2
No known key found for this signature in database GPG Key ID: 933B01F40B5CA946
  1. 41
      test/parallel/test-buffer-creation-regression.js
  2. 36
      test/sequential/test-buffer-creation-regression.js

41
test/parallel/test-buffer-creation-regression.js

@ -1,41 +0,0 @@
'use strict';
const common = require('../common');
const assert = require('assert');
function test(arrayBuffer, offset, length) {
const uint8Array = new Uint8Array(arrayBuffer, offset, length);
for (let i = 0; i < length; i += 1) {
uint8Array[i] = 1;
}
const buffer = Buffer.from(arrayBuffer, offset, length);
for (let i = 0; i < length; i += 1) {
assert.strictEqual(buffer[i], 1);
}
}
const acceptableOOMErrors = [
'Array buffer allocation failed',
'Invalid array buffer length'
];
const testCases = [
[200, 50, 100],
[4294967296 /* 1 << 32 */, 2147483648 /* 1 << 31 */, 1000],
[8589934592 /* 1 << 33 */, 4294967296 /* 1 << 32 */, 1000]
];
for (let index = 0, arrayBuffer; index < testCases.length; index += 1) {
const [size, offset, length] = testCases[index];
try {
arrayBuffer = new ArrayBuffer(size);
} catch (e) {
if (e instanceof RangeError && acceptableOOMErrors.includes(e.message))
return common.skip(`Unable to allocate ${size} bytes for ArrayBuffer`);
throw e;
}
test(arrayBuffer, offset, length);
}

36
test/sequential/test-buffer-creation-regression.js

@ -0,0 +1,36 @@
'use strict';
const common = require('../common');
const assert = require('assert');
function test(arrayBuffer, offset, length) {
const uint8Array = new Uint8Array(arrayBuffer, offset, length);
for (let i = 0; i < length; i += 1) {
uint8Array[i] = 1;
}
const buffer = Buffer.from(arrayBuffer, offset, length);
for (let i = 0; i < length; i += 1) {
assert.strictEqual(buffer[i], 1);
}
}
const acceptableOOMErrors = [
'Array buffer allocation failed',
'Invalid array buffer length'
];
const size = 8589934592; /* 1 << 33 */
const offset = 4294967296; /* 1 << 32 */
const length = 1000;
let arrayBuffer;
try {
arrayBuffer = new ArrayBuffer(size);
} catch (e) {
if (e instanceof RangeError && acceptableOOMErrors.includes(e.message))
return common.skip(`Unable to allocate ${size} bytes for ArrayBuffer`);
throw e;
}
test(arrayBuffer, offset, length);
Loading…
Cancel
Save