Skip to content

Commit 31c971d

Browse files
Trottjasnell
authored andcommitted
test: parallelize long-running test
Fixes a persistently troublesome failing test by splitting it out into multiple parallel tests. Reviewed By: Evan Lucas <[email protected]> Reviewed By: Trevor Norris <[email protected]> Reviewed By: James M Snell <[email protected]> PR-URL: #3287
1 parent b9279aa commit 31c971d

5 files changed

+119
-69
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
'use strict';
2+
3+
require('../common');
4+
const assert = require('assert');
5+
6+
// v8 fails silently if string length > v8::String::kMaxLength
7+
// v8::String::kMaxLength defined in v8.h
8+
const kStringMaxLength = process.binding('buffer').kStringMaxLength;
9+
10+
try {
11+
new Buffer(kStringMaxLength * 3);
12+
} catch(e) {
13+
assert.equal(e.message, 'Invalid array buffer length');
14+
console.log(
15+
'1..0 # Skipped: intensive toString tests due to memory confinements');
16+
return;
17+
}
18+
19+
const buf = new Buffer(kStringMaxLength);
20+
21+
const maxString = buf.toString('binary');
22+
assert.equal(maxString.length, kStringMaxLength);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
'use strict';
2+
3+
require('../common');
4+
const assert = require('assert');
5+
6+
// v8 fails silently if string length > v8::String::kMaxLength
7+
// v8::String::kMaxLength defined in v8.h
8+
const kStringMaxLength = process.binding('buffer').kStringMaxLength;
9+
10+
try {
11+
new Buffer(kStringMaxLength * 3);
12+
} catch(e) {
13+
assert.equal(e.message, 'Invalid array buffer length');
14+
console.log(
15+
'1..0 # Skipped: intensive toString tests due to memory confinements');
16+
return;
17+
}
18+
19+
const buf1 = new Buffer(kStringMaxLength + 1);
20+
21+
assert.throws(function() {
22+
buf1.toString();
23+
}, /toString failed|Invalid array buffer length/);
24+
25+
assert.throws(function() {
26+
buf1.toString('ascii');
27+
}, /toString failed/);
28+
29+
assert.throws(function() {
30+
buf1.toString('utf8');
31+
}, /toString failed/);
32+
33+
assert.throws(function() {
34+
buf1.toString('binary');
35+
}, /toString failed/);
36+
37+
assert.throws(function() {
38+
buf1.toString('base64');
39+
}, /toString failed/);
40+
41+
assert.throws(function() {
42+
buf1.toString('hex');
43+
}, /toString failed/);
44+
45+
var maxString = buf1.toString('binary', 1);
46+
assert.equal(maxString.length, kStringMaxLength);
47+
maxString = undefined;
48+
49+
maxString = buf1.toString('binary', 0, kStringMaxLength);
50+
assert.equal(maxString.length, kStringMaxLength);
51+
// Free the memory early instead of at the end of the next assignment
52+
maxString = undefined;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
'use strict';
2+
3+
require('../common');
4+
const assert = require('assert');
5+
6+
// v8 fails silently if string length > v8::String::kMaxLength
7+
// v8::String::kMaxLength defined in v8.h
8+
const kStringMaxLength = process.binding('buffer').kStringMaxLength;
9+
10+
try {
11+
new Buffer(kStringMaxLength * 3);
12+
} catch(e) {
13+
assert.equal(e.message, 'Invalid array buffer length');
14+
console.log(
15+
'1..0 # Skipped: intensive toString tests due to memory confinements');
16+
return;
17+
}
18+
19+
const buf2 = new Buffer(kStringMaxLength + 2);
20+
21+
const maxString = buf2.toString('utf16le');
22+
assert.equal(maxString.length, (kStringMaxLength + 2) / 2);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
'use strict';
2+
3+
require('../common');
4+
const assert = require('assert');
5+
6+
// v8 fails silently if string length > v8::String::kMaxLength
7+
// v8::String::kMaxLength defined in v8.h
8+
const kStringMaxLength = process.binding('buffer').kStringMaxLength;
9+
10+
try {
11+
new Buffer(kStringMaxLength * 3);
12+
} catch(e) {
13+
assert.equal(e.message, 'Invalid array buffer length');
14+
console.log(
15+
'1..0 # Skipped: intensive toString tests due to memory confinements');
16+
return;
17+
}
18+
19+
const buf0 = new Buffer(kStringMaxLength * 2 + 2);
20+
21+
assert.throws(function() {
22+
buf0.toString('utf16le');
23+
}, /toString failed/);

test/parallel/test-stringbytes-external.js

-69
Original file line numberDiff line numberDiff line change
@@ -107,72 +107,3 @@ var PRE_3OF4_APEX = Math.ceil((EXTERN_APEX / 4) * 3) - RADIOS;
107107
assert.equal(a, b);
108108
assert.equal(b, c);
109109
})();
110-
111-
// v8 fails silently if string length > v8::String::kMaxLength
112-
(function() {
113-
// v8::String::kMaxLength defined in v8.h
114-
const kStringMaxLength = process.binding('buffer').kStringMaxLength;
115-
116-
try {
117-
new Buffer(kStringMaxLength * 3);
118-
} catch(e) {
119-
assert.equal(e.message, 'Invalid array buffer length');
120-
console.log(
121-
'1..0 # Skipped: intensive toString tests due to memory confinements');
122-
return;
123-
}
124-
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-
134-
assert.throws(function() {
135-
buf1.toString('ascii');
136-
}, /toString failed/);
137-
138-
assert.throws(function() {
139-
buf1.toString('utf8');
140-
}, /toString failed/);
141-
142-
assert.throws(function() {
143-
buf0.toString('utf16le');
144-
}, /toString failed/);
145-
146-
assert.throws(function() {
147-
buf1.toString('binary');
148-
}, /toString failed/);
149-
150-
assert.throws(function() {
151-
buf1.toString('base64');
152-
}, /toString failed/);
153-
154-
assert.throws(function() {
155-
buf1.toString('hex');
156-
}, /toString failed/);
157-
158-
var maxString = buf2.toString();
159-
assert.equal(maxString.length, kStringMaxLength);
160-
// Free the memory early instead of at the end of the next assignment
161-
maxString = undefined;
162-
163-
maxString = buf2.toString('binary');
164-
assert.equal(maxString.length, kStringMaxLength);
165-
maxString = undefined;
166-
167-
maxString = buf1.toString('binary', 1);
168-
assert.equal(maxString.length, kStringMaxLength);
169-
maxString = undefined;
170-
171-
maxString = buf1.toString('binary', 0, kStringMaxLength);
172-
assert.equal(maxString.length, kStringMaxLength);
173-
maxString = undefined;
174-
175-
maxString = buf3.toString('utf16le');
176-
assert.equal(maxString.length, (kStringMaxLength + 2) / 2);
177-
maxString = undefined;
178-
})();

0 commit comments

Comments
 (0)