pause.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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.pause(true);
  33. }
  34. });
  35. q.on('jobEnd',function() {
  36. testJobsEndFired++;
  37. });
  38. q.on('end',function() {
  39. testEndFired = true;
  40. assert.equal(testExecutedJobs, 10);
  41. assert.equal(testJobsStartFired,10);
  42. assert.equal(testJobsEndFired,10);
  43. assert.equal(testConcurrency,maxConcurrency);
  44. assert.ok(testStartFired);
  45. assert.ok(testPause);
  46. assert.ok(testUnpause);
  47. });
  48. q.on('pause',function(since) {
  49. testPause = true;
  50. if (since>2000) {
  51. q.pause(false);
  52. }
  53. });
  54. q.on('unpause',function() {
  55. testUnpause = true;
  56. });
  57. var running = q.stats()._jobsRunning;
  58. assert.equal(testExecutedJobs,0);
  59. assert.equal(testJobsStartFired,0);
  60. assert.equal(testJobsEndFired,0);
  61. assert.equal(running,0);
  62. assert.ok(!testStartFired);
  63. assert.ok(!testEndFired);
  64. assert.ok(!testPause);
  65. assert.ok(!testUnpause);
  66. q.run();