1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- const tap = require("tap");
- const createPool = require("../").createPool;
- const utils = require("./utils");
- const ResourceFactory = utils.ResourceFactory;
- class ResourceFactoryDelayCreateEachSecond {
- constructor() {
- this.callCreate = 0;
- this.created = 0;
- this.destroyed = 0;
- this.bin = [];
- }
- create() {
- const that = this;
- console.log(`** create call ${that.callCreate}`);
- return new Promise(resolve => {
- if (that.callCreate % 2 === 0) {
- setTimeout(function() {
- console.log(`** created ${that.created}`);
- resolve({ id: that.created++ });
- }, 10);
- } else {
- console.log(`** created ${that.created}`);
- resolve({ id: that.created++ });
- }
- that.callCreate++;
- });
- }
- validate() {
- return Promise.resolve(true);
- }
- destroy(resource) {
- console.log(`** destroying ${resource.id}`);
- this.destroyed++;
- this.bin.push(resource);
- return Promise.resolve();
- }
- }
- tap.test("tests drain clear with autostart and min > 0", function(t) {
- const count = 5;
- let acquired = 0;
- const resourceFactory = new ResourceFactoryDelayCreateEachSecond();
- const config = {
- max: 10,
- min: 1,
- evictionRunIntervalMillis: 500,
- idleTimeoutMillis: 30000,
- testOnBorrow: true,
- autostart: true
- };
- const pool = createPool(resourceFactory, config);
- return pool
- .drain()
- .then(function() {
- console.log("** pool drained");
- return pool.clear();
- })
- .then(function() {
- console.log("** pool cleared");
- t.equal(resourceFactory.created, resourceFactory.destroyed);
- })
- .then(function() {
- t.end();
- });
- });
|