1'use strict'; 2// Flags: --expose-gc 3// Like test-gc-http-client.js, but with a timeout set. 4 5const common = require('../common'); 6const onGC = require('../common/ongc'); 7const http = require('http'); 8 9function serverHandler(req, res) { 10 setTimeout(function() { 11 req.resume(); 12 res.writeHead(200); 13 res.end('hello\n'); 14 }, 100); 15} 16 17const numRequests = 128; 18let done = 0; 19let countGC = 0; 20 21const server = http.createServer(serverHandler); 22server.listen(0, common.mustCall(() => { 23 getAll(numRequests); 24})); 25 26function getAll(requestsRemaining) { 27 if (requestsRemaining <= 0) 28 return; 29 30 const req = http.get({ 31 hostname: 'localhost', 32 pathname: '/', 33 port: server.address().port 34 }, cb); 35 36 req.setTimeout(10, common.mustCall()); 37 38 onGC(req, { ongc }); 39 40 setImmediate(getAll, requestsRemaining - 1); 41} 42 43function cb(res) { 44 res.resume(); 45 done += 1; 46} 47 48function ongc() { 49 countGC++; 50} 51 52setImmediate(status); 53 54function status() { 55 if (done > 0) { 56 global.gc(); 57 console.log(`done/collected/total: ${done}/${countGC}/${numRequests}`); 58 if (countGC === numRequests) { 59 server.close(); 60 return; 61 } 62 } 63 64 setImmediate(status); 65} 66