Spaces:
Sleeping
Sleeping
| /* eslint-env mocha */ | |
| var times = require('lowscore/times') | |
| var limiter = require('..') | |
| var expect = require('chai').expect | |
| var max = require('./max') | |
| describe('promise-limit memory usage', function () { | |
| var memoryProfile | |
| beforeEach(function () { | |
| memoryProfile = [] | |
| }) | |
| function checkMemory () { | |
| var memory = process.memoryUsage().heapUsed | |
| memoryProfile.push(memory) | |
| } | |
| function load (i) { | |
| checkMemory() | |
| return new Promise(function (resolve, reject) { | |
| setTimeout(resolve, 10) | |
| }).then(function () { | |
| checkMemory() | |
| var array = new Array(1024 * 1024) | |
| return { | |
| i: i, | |
| array: array | |
| } | |
| }) | |
| } | |
| it("doesn't use too much memory", function () { | |
| this.timeout(20000) | |
| var limit = limiter(5) | |
| return Promise.all(times(1000, function (i) { | |
| return limit(function () { | |
| return load(i).then(function () {}) | |
| }) | |
| })).then(function () { | |
| var maxMemoryUsage = max(memoryProfile) | |
| expect(maxMemoryUsage).to.be.lessThan(2000 * 1024 * 1024) | |
| }) | |
| }) | |
| }) | |