1'use strict'; 2const common = require('../common'); 3const assert = require('assert'); 4const http = require('http'); 5const net = require('net'); 6const dc = require('diagnostics_channel'); 7 8const isHTTPServer = (server) => server instanceof http.Server; 9const isIncomingMessage = (object) => object instanceof http.IncomingMessage; 10const isOutgoingMessage = (object) => object instanceof http.OutgoingMessage; 11const isNetSocket = (socket) => socket instanceof net.Socket; 12 13dc.subscribe('http.client.request.start', common.mustCall(({ request }) => { 14 assert.strictEqual(isOutgoingMessage(request), true); 15})); 16 17dc.subscribe('http.client.response.finish', common.mustCall(({ 18 request, 19 response 20}) => { 21 assert.strictEqual(isOutgoingMessage(request), true); 22 assert.strictEqual(isIncomingMessage(response), true); 23})); 24 25dc.subscribe('http.server.request.start', common.mustCall(({ 26 request, 27 response, 28 socket, 29 server, 30}) => { 31 assert.strictEqual(isIncomingMessage(request), true); 32 assert.strictEqual(isOutgoingMessage(response), true); 33 assert.strictEqual(isNetSocket(socket), true); 34 assert.strictEqual(isHTTPServer(server), true); 35})); 36 37dc.subscribe('http.server.response.finish', common.mustCall(({ 38 request, 39 response, 40 socket, 41 server, 42}) => { 43 assert.strictEqual(isIncomingMessage(request), true); 44 assert.strictEqual(isOutgoingMessage(response), true); 45 assert.strictEqual(isNetSocket(socket), true); 46 assert.strictEqual(isHTTPServer(server), true); 47})); 48 49const server = http.createServer(common.mustCall((req, res) => { 50 res.end('done'); 51})); 52 53server.listen(() => { 54 const { port } = server.address(); 55 http.get(`http://localhost:${port}`, (res) => { 56 res.resume(); 57 res.on('end', () => { 58 server.close(); 59 }); 60 }); 61}); 62