'use strict'; require('../common'); const assert = require('assert'); const http = require('http'); const debug = require('util').debuglog('test'); const testResBody = 'other stuff!\n'; const kMessageCount = 2; const server = http.createServer((req, res) => { for (let i = 0; i < kMessageCount; i++) { debug(`Server sending informational message #${i}...`); res.writeProcessing(); } debug('Server sending full response...'); res.writeHead(200, { 'Content-Type': 'text/plain', 'ABCD': '1' }); res.end(testResBody); }); server.listen(0, function() { const req = http.request({ port: this.address().port, path: '/world' }); req.end(); debug('Client sending request...'); let body = ''; let infoCount = 0; req.on('information', () => { infoCount++; }); req.on('response', function(res) { // Check that all 102 Processing received before full response received. assert.strictEqual(infoCount, kMessageCount); assert.strictEqual(res.statusCode, 200, `Final status code was ${res.statusCode}, not 200.`); res.setEncoding('utf8'); res.on('data', function(chunk) { body += chunk; }); res.on('end', function() { debug('Got full response.'); assert.strictEqual(body, testResBody); assert.ok('abcd' in res.headers); server.close(); }); }); });