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