abort.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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 testPause = false;
  13. var testUnpause = false;
  14. var myjob = function(args,next) {
  15. setTimeout(function() {
  16. testExecutedJobs++;
  17. next();
  18. },50);
  19. }
  20. // Let's add 10 job and add them to the queue
  21. for (var i = 0; i<10; i++) {
  22. q.add(myjob,['test'+i]);
  23. }
  24. q.on('start',function() {
  25. testStartFired = true;
  26. });
  27. q.on('jobStart',function() {
  28. var running = q.stats()._jobsRunning;
  29. if (running>testConcurrency) testConcurrency = running;
  30. testJobsStartFired++;
  31. if (testJobsStartFired == 5) {
  32. q.abort();
  33. }
  34. });
  35. q.on('jobEnd',function() {
  36. testJobsEndFired++;
  37. });
  38. q.on('end',function() {
  39. testEndFired = true;
  40. assert.equal(testExecutedJobs, 5);
  41. assert.equal(testJobsStartFired,5);
  42. assert.equal(testJobsEndFired,5);
  43. assert.equal(testConcurrency,maxConcurrency);
  44. assert.ok(testStartFired);
  45. });
  46. var running = q.stats()._jobsRunning;
  47. assert.equal(testExecutedJobs,0);
  48. assert.equal(testJobsStartFired,0);
  49. assert.equal(testJobsEndFired,0);
  50. assert.equal(running,0);
  51. assert.ok(!testStartFired);
  52. assert.ok(!testEndFired);
  53. q.run();