Skip to content

Commit bab555a

Browse files
evanlucasjasnell
authored andcommitted
test: speed up stringbytes-external test
test-stringbytes-external tends to take quite a while on slower hardware. A lot of the time is taken by creating a new buffer that is very large. The improvements come from reusing the same buffer. PR-URL: #3005 Reviewed-By: Brian White <[email protected]> Reviewed-By: Trevor Norris <[email protected]> Reviewed-By: Roman Reiss <[email protected]>
1 parent ddf2583 commit bab555a

File tree

1 file changed

+21
-18
lines changed

1 file changed

+21
-18
lines changed

test/parallel/test-stringbytes-external.js

+21-18
Original file line numberDiff line numberDiff line change
@@ -113,63 +113,66 @@ var PRE_3OF4_APEX = Math.ceil((EXTERN_APEX / 4) * 3) - RADIOS;
113113
// v8::String::kMaxLength defined in v8.h
114114
const kStringMaxLength = process.binding('buffer').kStringMaxLength;
115115

116-
assert.throws(function() {
117-
new Buffer(kStringMaxLength + 1).toString();
118-
}, /toString failed|Invalid array buffer length/);
119-
120116
try {
121-
new Buffer(kStringMaxLength * 4);
117+
new Buffer(kStringMaxLength * 3);
122118
} catch(e) {
123119
assert.equal(e.message, 'Invalid array buffer length');
124120
console.log(
125121
'1..0 # Skipped: intensive toString tests due to memory confinements');
126122
return;
127123
}
128124

125+
const buf0 = new Buffer(kStringMaxLength * 2 + 2);
126+
const buf1 = buf0.slice(0, kStringMaxLength + 1);
127+
const buf2 = buf0.slice(0, kStringMaxLength);
128+
const buf3 = buf0.slice(0, kStringMaxLength + 2);
129+
130+
assert.throws(function() {
131+
buf1.toString();
132+
}, /toString failed|Invalid array buffer length/);
133+
129134
assert.throws(function() {
130-
new Buffer(kStringMaxLength + 1).toString('ascii');
135+
buf1.toString('ascii');
131136
}, /toString failed/);
132137

133138
assert.throws(function() {
134-
new Buffer(kStringMaxLength + 1).toString('utf8');
139+
buf1.toString('utf8');
135140
}, /toString failed/);
136141

137142
assert.throws(function() {
138-
new Buffer(kStringMaxLength * 2 + 2).toString('utf16le');
143+
buf0.toString('utf16le');
139144
}, /toString failed/);
140145

141146
assert.throws(function() {
142-
new Buffer(kStringMaxLength + 1).toString('binary');
147+
buf1.toString('binary');
143148
}, /toString failed/);
144149

145150
assert.throws(function() {
146-
new Buffer(kStringMaxLength + 1).toString('base64');
151+
buf1.toString('base64');
147152
}, /toString failed/);
148153

149154
assert.throws(function() {
150-
new Buffer(kStringMaxLength + 1).toString('hex');
155+
buf1.toString('hex');
151156
}, /toString failed/);
152157

153-
var maxString = new Buffer(kStringMaxLength).toString();
158+
var maxString = buf2.toString();
154159
assert.equal(maxString.length, kStringMaxLength);
155160
// Free the memory early instead of at the end of the next assignment
156161
maxString = undefined;
157162

158-
maxString = new Buffer(kStringMaxLength).toString('binary');
163+
maxString = buf2.toString('binary');
159164
assert.equal(maxString.length, kStringMaxLength);
160165
maxString = undefined;
161166

162-
maxString =
163-
new Buffer(kStringMaxLength + 1).toString('binary', 1);
167+
maxString = buf1.toString('binary', 1);
164168
assert.equal(maxString.length, kStringMaxLength);
165169
maxString = undefined;
166170

167-
maxString =
168-
new Buffer(kStringMaxLength + 1).toString('binary', 0, kStringMaxLength);
171+
maxString = buf1.toString('binary', 0, kStringMaxLength);
169172
assert.equal(maxString.length, kStringMaxLength);
170173
maxString = undefined;
171174

172-
maxString = new Buffer(kStringMaxLength + 2).toString('utf16le');
175+
maxString = buf3.toString('utf16le');
173176
assert.equal(maxString.length, (kStringMaxLength + 2) / 2);
174177
maxString = undefined;
175178
})();

0 commit comments

Comments
 (0)