Better test of error handling after initial response.

This commit is contained in:
Dan 2014-09-16 00:24:14 -04:00
parent 4222053744
commit b1b613125f

View File

@ -68,21 +68,29 @@ var testLeak = function(rounds) {
testLeak(5) testLeak(5)
var testInternalPostgresError = function() { var testInternalPostgresError = function() {
var fromClient = client() var cancelClient = client()
// This attempts to make an array that's too large, and should fail. var queryClient = client()
var txt = "COPY (SELECT asdlfsdf AS e) t) TO STDOUT"
var runStream = function(callback) { var runStream = function(callback) {
var stream = fromClient.query(copy(txt)) var txt = "COPY (SELECT pg_sleep(10)) TO STDOUT"
var stream = queryClient.query(copy(txt))
stream.on('data', function(data) { stream.on('data', function(data) {
// Just throw away the data. // Just throw away the data.
}) })
stream.on('error', callback) stream.on('error', callback)
setTimeout(function() {
var cancelQuery = "SELECT pg_cancel_backend(pid) FROM pg_stat_activity WHERE query ~ 'pg_sleep' AND NOT query ~ 'pg_cancel_backend'"
cancelClient.query(cancelQuery)
}, 50)
} }
runStream(function(err) { runStream(function(err) {
assert.notEqual(err, null) assert.notEqual(err, null)
fromClient.end() var expectedMessage = 'canceling statement due to user request'
assert.notEqual(err.toString().indexOf(expectedMessage), -1, 'Error message should mention reason for query failure.')
cancelClient.end()
queryClient.end()
}) })
} }