mirror of
https://github.com/brianc/node-postgres.git
synced 2025-12-08 20:16:25 +00:00
Test cursor with pg-pool
This commit is contained in:
parent
74b6891b20
commit
9c7d2c853e
85
test/pool.js
Normal file
85
test/pool.js
Normal file
@ -0,0 +1,85 @@
|
||||
const assert = require('assert')
|
||||
const Cursor = require('../')
|
||||
const pg = require('pg')
|
||||
|
||||
const text = 'SELECT generate_series as num FROM generate_series(0, 50)'
|
||||
|
||||
function poolQueryPromise(pool, readRowCount) {
|
||||
return new Promise((resolve, reject) => {
|
||||
pool.connect((err, client, done) => {
|
||||
if (err) {
|
||||
done(err)
|
||||
return reject(err)
|
||||
}
|
||||
const cursor = client.query(new Cursor(text))
|
||||
cursor.read(readRowCount, (err, res) => {
|
||||
if (err) {
|
||||
done(err)
|
||||
return reject(err)
|
||||
}
|
||||
cursor.close(err => {
|
||||
if (err) {
|
||||
done(err)
|
||||
return reject(err)
|
||||
}
|
||||
done()
|
||||
resolve()
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
describe('pool', function() {
|
||||
beforeEach(function() {
|
||||
this.pool = new pg.Pool({max: 1})
|
||||
})
|
||||
|
||||
afterEach(function() {
|
||||
this.pool.end()
|
||||
})
|
||||
|
||||
it('closes cursor early, single pool query', function(done) {
|
||||
poolQueryPromise(this.pool, 25)
|
||||
.then(() => done())
|
||||
.catch(err => {
|
||||
assert.ifError(err)
|
||||
done()
|
||||
})
|
||||
})
|
||||
|
||||
it('closes cursor early, saturated pool', function(done) {
|
||||
const promises = []
|
||||
for (let i = 0; i < 10; i++) {
|
||||
promises.push(poolQueryPromise(this.pool, 25))
|
||||
}
|
||||
Promise.all(promises)
|
||||
.then(() => done())
|
||||
.catch(err => {
|
||||
assert.ifError(err)
|
||||
done()
|
||||
})
|
||||
})
|
||||
|
||||
it('closes exhausted cursor, single pool query', function(done) {
|
||||
poolQueryPromise(this.pool, 100)
|
||||
.then(() => done())
|
||||
.catch(err => {
|
||||
assert.ifError(err)
|
||||
done()
|
||||
})
|
||||
})
|
||||
|
||||
it('closes exhausted cursor, saturated pool', function(done) {
|
||||
const promises = []
|
||||
for (let i = 0; i < 10; i++) {
|
||||
promises.push(poolQueryPromise(this.pool, 100))
|
||||
}
|
||||
Promise.all(promises)
|
||||
.then(() => done())
|
||||
.catch(err => {
|
||||
assert.ifError(err)
|
||||
done()
|
||||
})
|
||||
})
|
||||
})
|
||||
Loading…
x
Reference in New Issue
Block a user