mirror of
https://github.com/nodejs/node.git
synced 2024-11-25 16:34:05 +01:00
d51f4f31be
This test is allocating much more memory than necessary to actually reproduce the original problem. Lowering the amount of memory allocated increases performance at least in some cases and makes this test less likely to time out on SmartOS. PR-URL: https://github.com/nodejs/node/pull/11177 Ref: https://github.com/nodejs/node/issues/10166 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Julien Gilli <jgilli@nodejs.org> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
37 lines
880 B
JavaScript
37 lines
880 B
JavaScript
'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 length = 1000;
|
|
const offset = 4294967296; /* 1 << 32 */
|
|
const size = offset + length;
|
|
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);
|