| #!/usr/bin/env node |
| var assert = require('assert'); |
| var qjob = require('../qjobs'); |
| |
| // maximum number of jobs executed in parallels |
| var maxConcurrency = 5; |
| |
| // delay between each group of maxConcurrency jobs done |
| var interval = 1000; |
| |
| var q = new qjob({ |
| maxConcurrency:maxConcurrency, |
| interval:interval |
| }); |
| |
| // number of total jobs |
| var maxJobs = 20; |
| |
| // tests dedicated variables |
| var testExecutedJobs = 0; |
| var testNbSleep = 0; |
| |
| // warning, if you change maxConcurrency, maxJobs |
| // or interval variable, you will have to review |
| // the testMaxNbSleep value |
| var testMaxNbSleep = 4; |
| |
| var myjob = function(args,next) { |
| setTimeout(function() { |
| testExecutedJobs++; |
| next(); |
| },args[1]); |
| } |
| |
| // Let's add 10 job and add them to the queue |
| for (var i = 0; i<maxJobs; i++) { |
| q.add(myjob,['test'+i,Math.random()*1000]); |
| } |
| |
| q.on('end',function() { |
| assert.equal(testExecutedJobs, maxJobs); |
| assert.equal(testNbSleep, testMaxNbSleep); |
| //console.log('Done'); |
| }); |
| |
| q.on('jobStart',function(args) { |
| //console.log(args[0]+' wait for '+args[1]+' ms'); |
| }); |
| |
| q.on('sleep',function() { |
| testNbSleep++; |
| //console.log('zzZZzzzz for '+interval+'ms',testNbSleep); |
| }); |
| |
| q.on('continu',function() { |
| //console.log('WAKE !'); |
| }); |
| |
| q.run(); |
| |
| |