Skip to content

Commit 1b10c03

Browse files
committed
test: simplify test-gc-{http-client,net}-*
Instead of sending/creating a fixed number of requests/connections, detect when GC has started and stop sending requests/creating connections at that point. Refs: 47ecf2060343 Refs: 7ce8403ef1a6
1 parent bde889b commit 1b10c03

3 files changed

+70
-48
lines changed

test/parallel/test-gc-http-client-connaborted.js

+22-14
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,27 @@
55

66
const common = require('../common');
77
const onGC = require('../common/ongc');
8-
98
const http = require('http');
10-
const todo = 500;
9+
const os = require('os');
10+
11+
const cpus = os.cpus().length;
12+
let createClients = true;
1113
let done = 0;
1214
let count = 0;
1315
let countGC = 0;
1416

15-
console.log(`We should do ${todo} requests`);
16-
1717
function serverHandler(req, res) {
1818
res.connection.destroy();
1919
}
2020

2121
const server = http.createServer(serverHandler);
2222
server.listen(0, common.mustCall(() => {
23-
for (let i = 0; i < 10; i++)
24-
getall();
23+
for (let i = 0; i < cpus; i++)
24+
getAll();
2525
}));
2626

27-
function getall() {
28-
if (count >= todo)
27+
function getAll() {
28+
if (!createClients)
2929
return;
3030

3131
const req = http.get({
@@ -37,7 +37,7 @@ function getall() {
3737
count++;
3838
onGC(req, { ongc });
3939

40-
setImmediate(getall);
40+
setImmediate(getAll);
4141
}
4242

4343
function cb(res) {
@@ -48,11 +48,19 @@ function ongc() {
4848
countGC++;
4949
}
5050

51-
setInterval(status, 100).unref();
51+
setImmediate(status);
5252

5353
function status() {
54-
global.gc();
55-
console.log('Done: %d/%d', done, todo);
56-
console.log('Collected: %d/%d', countGC, count);
57-
if (countGC === todo) server.close();
54+
if (done > 0) {
55+
createClients = false;
56+
global.gc();
57+
console.log(`done/collected/total: ${done}/${countGC}/${count}`);
58+
if (countGC === count) {
59+
server.close();
60+
} else {
61+
setImmediate(status);
62+
}
63+
} else {
64+
setImmediate(status);
65+
}
5866
}

test/parallel/test-gc-http-client-timeout.js

+24-18
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
const common = require('../common');
77
const onGC = require('../common/ongc');
8+
const http = require('http');
9+
const os = require('os');
810

911
function serverHandler(req, res) {
1012
setTimeout(function() {
@@ -14,19 +16,17 @@ function serverHandler(req, res) {
1416
}, 100);
1517
}
1618

17-
const http = require('http');
18-
const todo = 300;
19+
const cpus = os.cpus().length;
20+
let createClients = true;
1921
let done = 0;
2022
let count = 0;
2123
let countGC = 0;
2224

23-
console.log(`We should do ${todo} requests`);
24-
2525
const server = http.createServer(serverHandler);
26-
server.listen(0, common.mustCall(getall));
26+
server.listen(0, common.mustCall(getAll));
2727

28-
function getall() {
29-
if (count >= todo)
28+
function getAll() {
29+
if (!createClients)
3030
return;
3131

3232
const req = http.get({
@@ -35,18 +35,16 @@ function getall() {
3535
port: server.address().port
3636
}, cb);
3737

38-
req.setTimeout(10, function() {
39-
console.log('timeout (expected)');
40-
});
38+
req.setTimeout(10, common.mustCall());
4139

4240
count++;
4341
onGC(req, { ongc });
4442

45-
setImmediate(getall);
43+
setImmediate(getAll);
4644
}
4745

48-
for (let i = 0; i < 10; i++)
49-
getall();
46+
for (let i = 0; i < cpus; i++)
47+
getAll();
5048

5149
function cb(res) {
5250
res.resume();
@@ -57,11 +55,19 @@ function ongc() {
5755
countGC++;
5856
}
5957

60-
setInterval(status, 100).unref();
58+
setImmediate(status);
6159

6260
function status() {
63-
global.gc();
64-
console.log('Done: %d/%d', done, todo);
65-
console.log('Collected: %d/%d', countGC, count);
66-
if (countGC === todo) server.close();
61+
if (done > 0) {
62+
createClients = false;
63+
global.gc();
64+
console.log(`done/collected/total: ${done}/${countGC}/${count}`);
65+
if (countGC === count) {
66+
server.close();
67+
} else {
68+
setImmediate(status);
69+
}
70+
} else {
71+
setImmediate(status);
72+
}
6773
}

test/parallel/test-gc-net-timeout.js

+24-16
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55

66
require('../common');
77
const onGC = require('../common/ongc');
8+
const assert = require('assert');
9+
const net = require('net');
10+
const os = require('os');
811

912
function serverHandler(sock) {
1013
sock.setTimeout(120000);
@@ -23,20 +26,17 @@ function serverHandler(sock) {
2326
}, 100);
2427
}
2528

26-
const net = require('net');
27-
const assert = require('assert');
28-
const todo = 500;
29+
const cpus = os.cpus().length;
30+
let createClients = true;
2931
let done = 0;
3032
let count = 0;
3133
let countGC = 0;
3234

33-
console.log(`We should do ${todo} requests`);
34-
3535
const server = net.createServer(serverHandler);
36-
server.listen(0, getall);
36+
server.listen(0, getAll);
3737

38-
function getall() {
39-
if (count >= todo)
38+
function getAll() {
39+
if (!createClients)
4040
return;
4141

4242
const req = net.connect(server.address().port);
@@ -49,21 +49,29 @@ function getall() {
4949
count++;
5050
onGC(req, { ongc });
5151

52-
setImmediate(getall);
52+
setImmediate(getAll);
5353
}
5454

55-
for (let i = 0; i < 10; i++)
56-
getall();
55+
for (let i = 0; i < cpus; i++)
56+
getAll();
5757

5858
function ongc() {
5959
countGC++;
6060
}
6161

62-
setInterval(status, 100).unref();
62+
setImmediate(status);
6363

6464
function status() {
65-
global.gc();
66-
console.log('Done: %d/%d', done, todo);
67-
console.log('Collected: %d/%d', countGC, count);
68-
if (countGC === todo) server.close();
65+
if (done > 0) {
66+
createClients = false;
67+
global.gc();
68+
console.log(`done/collected/total: ${done}/${countGC}/${count}`);
69+
if (countGC === count) {
70+
server.close();
71+
} else {
72+
setImmediate(status);
73+
}
74+
} else {
75+
setImmediate(status);
76+
}
6977
}

0 commit comments

Comments
 (0)