|
|
|
@ -1,20 +1,21 @@
|
|
|
|
|
var assert = require('assert')
|
|
|
|
|
var gonna = require('gonna')
|
|
|
|
|
|
|
|
|
|
var concat = require('concat-stream')
|
|
|
|
|
var _ = require('lodash')
|
|
|
|
|
var async = require('async')
|
|
|
|
|
var concat = require('concat-stream')
|
|
|
|
|
var pg = require('pg.js')
|
|
|
|
|
|
|
|
|
|
var testRange = function(top) {
|
|
|
|
|
var client = function() {
|
|
|
|
|
var client = new pg.Client()
|
|
|
|
|
client.connect()
|
|
|
|
|
return client
|
|
|
|
|
}
|
|
|
|
|
var copy = require('../').to
|
|
|
|
|
|
|
|
|
|
var fromClient = client()
|
|
|
|
|
var copy = require('../').to
|
|
|
|
|
var client = function() {
|
|
|
|
|
var client = new pg.Client()
|
|
|
|
|
client.connect()
|
|
|
|
|
return client
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var testRange = function(top) {
|
|
|
|
|
var fromClient = client()
|
|
|
|
|
var txt = 'COPY (SELECT * from generate_series(0, ' + (top - 1) + ')) TO STDOUT'
|
|
|
|
|
|
|
|
|
|
var stream = fromClient.query(copy(txt))
|
|
|
|
@ -32,3 +33,27 @@ var testRange = function(top) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
testRange(10000)
|
|
|
|
|
|
|
|
|
|
var testLeak = function(rounds) {
|
|
|
|
|
var fromClient = client()
|
|
|
|
|
var txt = 'COPY (SELECT 10) TO STDOUT'
|
|
|
|
|
|
|
|
|
|
var runStream = function(num, callback) {
|
|
|
|
|
var stream = fromClient.query(copy(txt))
|
|
|
|
|
stream.on('data', function(data) {
|
|
|
|
|
// Just throw away the data.
|
|
|
|
|
})
|
|
|
|
|
stream.on('end', callback)
|
|
|
|
|
stream.on('error', callback)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async.timesSeries(rounds, runStream, function(err) {
|
|
|
|
|
assert.equal(err, null)
|
|
|
|
|
assert.equal(fromClient.connection.stream.listeners('data').length, 1)
|
|
|
|
|
assert.equal(fromClient.connection.stream.listeners('end').length, 2)
|
|
|
|
|
assert.equal(fromClient.connection.stream.listeners('close').length, 0)
|
|
|
|
|
fromClient.end()
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
testLeak(5)
|
|
|
|
|