memoryUsageSpec.js 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /* eslint-env mocha */
  2. var times = require('lowscore/times')
  3. var limiter = require('..')
  4. var expect = require('chai').expect
  5. var max = require('./max')
  6. describe('promise-limit memory usage', function () {
  7. var memoryProfile
  8. beforeEach(function () {
  9. memoryProfile = []
  10. })
  11. function checkMemory () {
  12. var memory = process.memoryUsage().heapUsed
  13. memoryProfile.push(memory)
  14. }
  15. function load (i) {
  16. checkMemory()
  17. return new Promise(function (resolve, reject) {
  18. setTimeout(resolve, 10)
  19. }).then(function () {
  20. checkMemory()
  21. var array = new Array(1024 * 1024)
  22. return {
  23. i: i,
  24. array: array
  25. }
  26. })
  27. }
  28. it("doesn't use too much memory", function () {
  29. this.timeout(20000)
  30. var limit = limiter(5)
  31. return Promise.all(times(1000, function (i) {
  32. return limit(function () {
  33. return load(i).then(function () {})
  34. })
  35. })).then(function () {
  36. var maxMemoryUsage = max(memoryProfile)
  37. expect(maxMemoryUsage).to.be.lessThan(2000 * 1024 * 1024)
  38. })
  39. })
  40. })