lifetime-timeout.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. 'use strict'
  2. const co = require('co')
  3. const expect = require('expect.js')
  4. const describe = require('mocha').describe
  5. const it = require('mocha').it
  6. const Pool = require('../')
  7. describe('lifetime timeout', () => {
  8. it('connection lifetime should expire and remove the client', (done) => {
  9. const pool = new Pool({ maxLifetimeSeconds: 1 })
  10. pool.query('SELECT NOW()')
  11. pool.on('remove', () => {
  12. console.log('expired while idle - on-remove event')
  13. expect(pool.expiredCount).to.equal(0)
  14. expect(pool.totalCount).to.equal(0)
  15. done()
  16. })
  17. })
  18. it('connection lifetime should expire and remove the client after the client is done working', (done) => {
  19. const pool = new Pool({ maxLifetimeSeconds: 1 })
  20. pool.query('SELECT pg_sleep(1.4)')
  21. pool.on('remove', () => {
  22. console.log('expired while busy - on-remove event')
  23. expect(pool.expiredCount).to.equal(0)
  24. expect(pool.totalCount).to.equal(0)
  25. done()
  26. })
  27. })
  28. it(
  29. 'can remove expired clients and recreate them',
  30. co.wrap(function* () {
  31. const pool = new Pool({ maxLifetimeSeconds: 1 })
  32. let query = pool.query('SELECT pg_sleep(1.4)')
  33. expect(pool.expiredCount).to.equal(0)
  34. expect(pool.totalCount).to.equal(1)
  35. yield query
  36. yield new Promise((resolve) => setTimeout(resolve, 100))
  37. expect(pool.expiredCount).to.equal(0)
  38. expect(pool.totalCount).to.equal(0)
  39. yield pool.query('SELECT NOW()')
  40. expect(pool.expiredCount).to.equal(0)
  41. expect(pool.totalCount).to.equal(1)
  42. })
  43. )
  44. })