test: guard write to proxy client if proxy connection is ended · nodejs/node@8f32746
@@ -21,9 +21,10 @@ const server = https.createServer({
2121cert: fixtures.readKey('agent8-cert.pem'),
2222key: fixtures.readKey('agent8-key.pem'),
2323}, (req, res) => {
24+console.log(`[Upstream server] responding to request for ${inspect(req.url)}`);
2425requests.add(`https://localhost:${server.address().port}${req.url}`);
2526res.writeHead(200, { 'Content-Type': 'text/plain' });
26-res.end(`Response for ${req.url}`);
27+res.end(`Response for ${inspect(req.url)}`);
2728});
28292930server.listen(0);
@@ -54,7 +55,7 @@ https.globalAgent = new https.Agent({
54555556const severHost = `localhost:${server.address().port}`;
565757-let counter = testCases.length;
58+let counter = 0;
5859const expectedUrls = new Set();
5960const expectedProxyLogs = new Set();
6061for (const testCase of testCases) {
@@ -69,15 +70,20 @@ for (const testCase of testCases) {
6970https.request(url, (res) => {
7071res.on('error', common.mustNotCall());
7172res.setEncoding('utf8');
72-res.on('data', () => {});
73-res.on('end', common.mustCall(() => {
74-console.log(`#${counter--} eneded response for: ${inspect(url)}`);
73+res.on('data', (data) => {
74+console.log(`[Proxy client] Received response from server for ${inspect(url)}: ${data.toString()}`);
75+});
76+res.on('close', common.mustCall(() => {
77+console.log(`[Proxy client] #${++counter} closed request for: ${inspect(url)}`);
7578// Finished all test cases.
76-if (counter === 0) {
77-proxy.close();
78-server.close();
79-assert.deepStrictEqual(requests, expectedUrls);
80-assert.deepStrictEqual(new Set(logs), expectedProxyLogs);
79+if (counter === testCases.length) {
80+setImmediate(() => {
81+console.log('All requests completed, shutting down.');
82+proxy.close();
83+server.close();
84+assert.deepStrictEqual(requests, expectedUrls);
85+assert.deepStrictEqual(new Set(logs), expectedProxyLogs);
86+});
8187}
8288}));
8389}).on('error', common.mustNotCall()).end();