123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- /* 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)
- })
- })
- })
|