| 'use strict'; |
| const common = require('../common'); |
| const assert = require('assert'); |
| const http = require('http'); |
| const MakeDuplexPair = require('../common/duplexpair'); |
| |
| // Test 1: Simple HTTP test, no keep-alive. |
| { |
| const testData = 'Hello, World!\n'; |
| const server = http.createServer(common.mustCall((req, res) => { |
| res.statusCode = 200; |
| res.setHeader('Content-Type', 'text/plain'); |
| res.end(testData); |
| })); |
| |
| const { clientSide, serverSide } = MakeDuplexPair(); |
| server.emit('connection', serverSide); |
| |
| const req = http.request({ |
| createConnection: common.mustCall(() => clientSide) |
| }, common.mustCall((res) => { |
| res.setEncoding('utf8'); |
| res.on('data', common.mustCall((data) => { |
| assert.strictEqual(data, testData); |
| })); |
| })); |
| req.end(); |
| } |
| |
| // Test 2: Keep-alive for 2 requests. |
| { |
| const testData = 'Hello, World!\n'; |
| const server = http.createServer(common.mustCall((req, res) => { |
| res.statusCode = 200; |
| res.setHeader('Content-Type', 'text/plain'); |
| res.end(testData); |
| }, 2)); |
| |
| const { clientSide, serverSide } = MakeDuplexPair(); |
| server.emit('connection', serverSide); |
| |
| function doRequest(cb) { |
| const req = http.request({ |
| createConnection: common.mustCall(() => clientSide), |
| headers: { Connection: 'keep-alive' } |
| }, common.mustCall((res) => { |
| res.setEncoding('utf8'); |
| res.on('data', common.mustCall((data) => { |
| assert.strictEqual(data, testData); |
| })); |
| res.on('end', common.mustCall(cb)); |
| })); |
| req.shouldKeepAlive = true; |
| req.end(); |
| } |
| |
| doRequest(() => { |
| doRequest(); |
| }); |
| } |