- Migrated all pages from Next.js to Astro - Added PDPA-compliant Privacy Policy (Thai) - Added PDPA-compliant Terms & Conditions (Thai) - Added Cookie Policy with disclosure (Thai) - Implemented cookie consent banner (client-side) - Integrated Umami Analytics placeholder - Blog system with 3 posts - Optimized Docker configuration for production - Static site build (184KB, 11 pages) - Ready for Easypanel deployment Backup: /Users/kunthawatgreethong/Gitea/dealplustech-backup-nextjs-20260309.tar.gz
49 lines
1.0 KiB
JavaScript
49 lines
1.0 KiB
JavaScript
/* 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)
|
|
})
|
|
})
|
|
})
|