12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- #!/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();
|