61 lines
1.2 KiB
JavaScript
Executable file
61 lines
1.2 KiB
JavaScript
Executable file
#!/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();
|
|
|
|
|