heroku-debug
Version:
debugging plugin for the CLI
142 lines (119 loc) • 3.76 kB
JavaScript
var agent = require('../../_agent')()
var test = require('tape')
var http = require('http')
agent.timeout.active = false
test('client-side timeout - call end', function (t) {
agent._instrumentation._queue = []
var clientReq
var server = http.createServer(function (req, res) {
res.on('close', function () {
setTimeout(function () {
t.equal(agent._instrumentation._queue.length, 1, 'should add transactions to queue')
server.close()
t.end()
}, 50)
})
clientReq.abort()
setTimeout(function () {
res.write('Hello') // server emits clientError if written in same tick as abort
setTimeout(function () {
res.end(' World')
}, 10)
}, 10)
})
server.listen(function () {
var port = server.address().port
clientReq = http.get('http://localhost:' + port, function (res) {
t.fail('should not call http.get callback')
})
clientReq.on('error', function (err) {
if (err.code !== 'ECONNRESET') throw err
})
})
})
test('client-side timeout - don\'t call end', function (t) {
agent._instrumentation._queue = []
var clientReq
var server = http.createServer(function (req, res) {
res.on('close', function () {
setTimeout(function () {
t.equal(agent._instrumentation._queue.length, 0, 'should not add transactions to queue')
server.close()
t.end()
}, 50)
})
clientReq.abort()
setTimeout(function () {
res.write('Hello') // server emits clientError if written in same tick as abort
}, 10)
})
server.listen(function () {
var port = server.address().port
clientReq = http.get('http://localhost:' + port, function (res) {
t.fail('should not call http.get callback')
})
clientReq.on('error', function (err) {
if (err.code !== 'ECONNRESET') throw err
})
})
})
test('server-side timeout - call end', function (t) {
agent._instrumentation._queue = []
var timedout = false
var closeEvent = false
var server = http.createServer(function (req, res) {
res.on('close', function () {
closeEvent = true
})
setTimeout(function () {
t.ok(timedout, 'should have closed socket')
t.ok(closeEvent, 'res should emit close event')
res.end('Hello World')
setTimeout(function () {
t.equal(agent._instrumentation._queue.length, 1, 'should not add transactions to queue')
server.close()
t.end()
}, 50)
}, 200)
})
server.setTimeout(100)
server.listen(function () {
var port = server.address().port
var clientReq = http.get('http://localhost:' + port, function (res) {
t.fail('should not call http.get callback')
})
clientReq.on('error', function (err) {
if (err.code !== 'ECONNRESET') throw err
timedout = true
})
})
})
test('server-side timeout - don\'t call end', function (t) {
agent._instrumentation._queue = []
var timedout = false
var closeEvent = false
var server = http.createServer(function (req, res) {
res.on('close', function () {
closeEvent = true
})
setTimeout(function () {
t.ok(timedout, 'should have closed socket')
t.ok(closeEvent, 'res should emit close event')
t.equal(agent._instrumentation._queue.length, 0, 'should not add transactions to queue')
server.close()
t.end()
}, 200)
})
server.setTimeout(100)
server.listen(function () {
var port = server.address().port
var clientReq = http.get('http://localhost:' + port, function (res) {
t.fail('should not call http.get callback')
})
clientReq.on('error', function (err) {
if (err.code !== 'ECONNRESET') throw err
timedout = true
})
})
})