| 'use strict'; |
| |
| const common = require('../common'); |
| |
| const assert = require('assert'); |
| const http = require('http'); |
| |
| let time = Date.now(); |
| let intervalWasInvoked = false; |
| const TIMEOUT = common.platformTimeout(200); |
| |
| const server = http.createServer((req, res) => { |
| server.close(); |
| |
| res.writeHead(200); |
| res.flushHeaders(); |
| |
| req.setTimeout(TIMEOUT, () => { |
| if (!intervalWasInvoked) |
| return common.skip('interval was not invoked quickly enough for test'); |
| assert.fail('Request timeout should not fire'); |
| }); |
| |
| req.resume(); |
| req.once('end', () => { |
| res.end(); |
| }); |
| }); |
| |
| server.listen(0, common.mustCall(() => { |
| const req = http.request({ |
| port: server.address().port, |
| method: 'POST' |
| }, (res) => { |
| const interval = setInterval(() => { |
| intervalWasInvoked = true; |
| // If machine is busy enough that the interval takes more than TIMEOUT ms |
| // to be invoked, skip the test. |
| const now = Date.now(); |
| if (now - time > TIMEOUT) |
| return common.skip('interval is not invoked quickly enough for test'); |
| time = now; |
| req.write('a'); |
| }, common.platformTimeout(25)); |
| setTimeout(() => { |
| clearInterval(interval); |
| req.end(); |
| }, TIMEOUT); |
| }); |
| req.write('.'); |
| })); |