events.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #!/usr/bin/env node
  2. var assert = require('assert');
  3. var qjob = require('../qjobs');
  4. var maxConcurrency = 2;
  5. var q = new qjob({maxConcurrency:maxConcurrency});
  6. var testExecutedJobs = 0;
  7. var testStartFired = false;
  8. var testEndFired = false;
  9. var testJobsStartFired = 0;
  10. var testJobsEndFired = 0;
  11. var testConcurrency = 0;
  12. var myjob = function(args,next) {
  13. setTimeout(function() {
  14. testExecutedJobs++;
  15. next();
  16. },50);
  17. }
  18. // Let's add 10 job and add them to the queue
  19. for (var i = 0; i<10; i++) {
  20. q.add(myjob,['test'+i]);
  21. }
  22. q.on('start',function() {
  23. testStartFired = true;
  24. });
  25. q.on('jobStart',function() {
  26. var running = q.stats()._jobsRunning;
  27. if (running>testConcurrency) testConcurrency = running;
  28. testJobsStartFired++;
  29. });
  30. q.on('jobEnd',function() {
  31. testJobsEndFired++;
  32. });
  33. q.on('end',function() {
  34. testEndFired = true;
  35. assert.equal(testExecutedJobs, 10);
  36. assert.equal(testJobsStartFired,10);
  37. assert.equal(testJobsEndFired,10);
  38. assert.equal(testConcurrency,maxConcurrency);
  39. assert.ok(testStartFired);
  40. });
  41. var running = q.stats()._jobsRunning;
  42. assert.equal(testExecutedJobs,0);
  43. assert.equal(testJobsStartFired,0);
  44. assert.equal(testJobsEndFired,0);
  45. assert.equal(running,0);
  46. assert.ok(!testStartFired);
  47. assert.ok(!testEndFired);
  48. q.run();