diff --git a/lib/SusiRali.js b/lib/SusiRali.js index 73d24e2..ee73133 100644 --- a/lib/SusiRali.js +++ b/lib/SusiRali.js @@ -141,4 +141,4 @@ class SusiRali { } -module.exports = SusiRali; +export default SusiRali; diff --git a/package-lock.json b/package-lock.json index 7dda48d..d3346c0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4280,4 +4280,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/package.json b/package.json index 052d470..63ad519 100644 --- a/package.json +++ b/package.json @@ -3,37 +3,23 @@ "version": "0.1.5", "description": "super simple rate limiter nodejs", "main": "./lib/SusiRali.js", + "type": "module", "scripts": { "preinstall": "npm-force-resolutions", "manual": "mocha --timeout 120000 tests/manual/*.test.js", "test": "mocha --timeout 120000 tests/*.test.js", + "testS": "mocha --timeout 120000 tests/susi-rali.test.js", + "testP": "mocha --timeout 120000 tests/susi-rali-parallel.test.js", "cover": "nyc --reporter text --reporter cobertura --reporter html --reporter=lcov --lines 66 mocha --timeout 120000 --exit --unhandled-rejections=strict tests/*.test.js", "ci-test": "echo linux ci-test&& nyc --reporter text --reporter cobertura --reporter html --reporter=lcov --lines 66 mocha --timeout 120000 --exit --unhandled-rejections=strict tests/*.test.js" }, "private": false, "author": "Boly38 ", "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/creharmony/susi-rali.git" - }, - "bugs": { - "url": "https://github.com/creharmony/susi-rali/issues" - }, - "keywords": [ - "node", - "rate", - "limit", - "javascript", - "ratelimiter" - ], - "copyright": { - "title": "susi-rali", - "years": [ - 2021 - ], - "author": "Brice Vandeputte" - }, + "repository": {"type": "git", "url": "https://github.com/creharmony/susi-rali.git"}, + "bugs": { "url": "https://github.com/creharmony/susi-rali/issues"}, + "keywords": ["node", "rate", "limit", "javascript", "ratelimiter"], + "copyright": { "title": "susi-rali", "years": [2021, 2022], "author": "Brice Vandeputte"}, "dependencies": {}, "devDependencies": { "chai": "^4.3.4", diff --git a/tests/TestHelper.js b/tests/TestHelper.js index 466a404..75905e2 100644 --- a/tests/TestHelper.js +++ b/tests/TestHelper.js @@ -49,6 +49,4 @@ class TestHelper { } } -makeHelper = function() { return new TestHelper(); } - -module.exports = makeHelper; \ No newline at end of file +export default TestHelper; \ No newline at end of file diff --git a/tests/susi-rali-parallel.test.js b/tests/susi-rali-parallel.test.js index b4a7665..62d2035 100644 --- a/tests/susi-rali-parallel.test.js +++ b/tests/susi-rali-parallel.test.js @@ -1,7 +1,13 @@ -const assert = require('assert').strict; -const expect = require('chai').expect -const SusiRali = require('../lib/SusiRali.js'); -const TestHelper = require('./TestHelper')(); +import SusiRali from '../lib/SusiRali.js'; +import TestHelperJs from './TestHelper.js'; +import { strict as assert } from 'assert'; +import chai from 'chai'; +const should = chai.should; +const expect = chai.expect; +should(); + +const testHelper = new TestHelperJs(); + const debugEnabled=true; const warnEnabled=true; @@ -11,7 +17,7 @@ describe("Test SusiRali parallel", function() { async function testParallelPromise(batchCount, counterWindows) { const start = new Date(); - await TestHelper.countEachWindow(start, counterWindows, batchCount, susi); + await testHelper.countEachWindow(start, counterWindows, batchCount, susi); console.log(`PARALLEL LAUNCH`) @@ -19,13 +25,13 @@ describe("Test SusiRali parallel", function() { for (var k=0;kTestHelper.businessCode(businessArg, 200)).then((result)=>console.log(">" + result)) + susi.limitedCall(()=>testHelper.businessCode(businessArg, 200)).then((result)=>console.log(">" + result)) ); } - await Promise.allSettled(promises).catch(TestHelper._expectNoError); + await Promise.allSettled(promises).catch(testHelper._expectNoError); const duration = new Date() - start; - console.log(`parallel duration: ${duration}ms ${TestHelper.nbDone} / ${TestHelper.nbDoneAll}`); + console.log(`parallel duration: ${duration}ms ${testHelper.nbDone} / ${testHelper.nbDoneAll}`); return duration; } @@ -36,14 +42,14 @@ describe("Test SusiRali parallel", function() { const maxProcessingPerWindow=9; const nbEntries = 100; - TestHelper.reset(); + testHelper.reset(); const susi = new SusiRali({windowsMs, maxQueryPerWindow, maxProcessingPerWindow, debugEnabled, warnEnabled}); var duration = await testParallelPromise(nbEntries, counterWindows); - expect(TestHelper.maxQ).to.be.lte(maxQueryPerWindow); - expect(TestHelper.maxP).to.be.lte(maxProcessingPerWindow); - await TestHelper.sleep(counterWindows*4);// end of counter must be reached to start next + expect(testHelper.maxQ).to.be.lte(maxQueryPerWindow); + expect(testHelper.maxP).to.be.lte(maxProcessingPerWindow); + await testHelper.sleep(counterWindows*4);// end of counter must be reached to start next }); @@ -51,7 +57,7 @@ describe("Test SusiRali parallel", function() { async function testParallelPromise(batchCount, counterWindows) { const start = new Date(); - await TestHelper.countEachWindow(start, counterWindows, batchCount, susi); + await testHelper.countEachWindow(start, counterWindows, batchCount, susi); console.log(`PARALLEL LAUNCH`) @@ -59,13 +65,13 @@ describe("Test SusiRali parallel", function() { for (var k=0;kTestHelper.businessCode(businessArg, 200)).then((result)=>console.log(">" + result)) + susi.limitedCall(()=>testHelper.businessCode(businessArg, 200)).then((result)=>console.log(">" + result)) ); } - await Promise.allSettled(promises).catch(TestHelper._expectNoError); + await Promise.allSettled(promises).catch(testHelper._expectNoError); const duration = new Date() - start; - console.log(`parallel duration: ${duration}ms ${TestHelper.nbDone} / ${TestHelper.nbDoneAll}`); + console.log(`parallel duration: ${duration}ms ${testHelper.nbDone} / ${testHelper.nbDoneAll}`); return duration; } @@ -76,14 +82,14 @@ describe("Test SusiRali parallel", function() { const maxProcessingPerWindow=10; const nbEntries = 20; - TestHelper.reset(); + testHelper.reset(); const susi = new SusiRali({windowsMs, maxQueryPerWindow, maxProcessingPerWindow, debugEnabled, warnEnabled}); var duration = await testParallelPromise(nbEntries, counterWindows); - expect(TestHelper.maxQ).to.be.lte(maxQueryPerWindow); - expect(TestHelper.maxP).to.be.lte(maxProcessingPerWindow); - await TestHelper.sleep(counterWindows*4);// end of counter must be reached to start next + expect(testHelper.maxQ).to.be.lte(maxQueryPerWindow); + expect(testHelper.maxP).to.be.lte(maxProcessingPerWindow); + await testHelper.sleep(counterWindows*4);// end of counter must be reached to start next }); }); diff --git a/tests/susi-rali.test.js b/tests/susi-rali.test.js index e858356..bea5ff8 100644 --- a/tests/susi-rali.test.js +++ b/tests/susi-rali.test.js @@ -1,7 +1,12 @@ -const assert = require('assert').strict; -const expect = require('chai').expect -const SusiRali = require('../lib/SusiRali.js'); -const TestHelper = require('./TestHelper')(); +import SusiRali from '../lib/SusiRali.js'; +import TestHelperJs from './TestHelper.js'; +import { strict as assert } from 'assert'; +import chai from 'chai'; +const should = chai.should; +const expect = chai.expect; +should(); + +const testHelper = new TestHelperJs(); describe("Test SusiRali pause and restart", function() { @@ -9,20 +14,20 @@ describe("Test SusiRali pause and restart", function() { async function testPromise(batchCount, sleepTimeMs, counterWindows) { const start = new Date(); - await TestHelper.countEachWindow(start, counterWindows, batchCount*2, susi); + await testHelper.countEachWindow(start, counterWindows, batchCount*2, susi); console.log(`FIRST LAUNCH`) for (var i=0;i TestHelper.businessCode("First"+i,0)) + await susi.limitedCall(() => testHelper.businessCode("First"+i,0)) .then((result)=>console.log(">" + result)); } var duration = new Date() - start; - console.log(`DD duration: ${duration}ms ${TestHelper.nbDone} / ${TestHelper.nbDoneAll}`); - await TestHelper.sleep(sleepTimeMs); + console.log(`DD duration: ${duration}ms ${testHelper.nbDone} / ${testHelper.nbDoneAll}`); + await testHelper.sleep(sleepTimeMs); console.log(`SECOND LAUNCH`) for (var j=0;j TestHelper.businessCode("Second"+j,0)) + await susi.limitedCall(() => testHelper.businessCode("Second"+j,0)) .then((result)=>console.log(">" + result)); } var duration = new Date() - start; @@ -38,15 +43,15 @@ describe("Test SusiRali pause and restart", function() { const nbEntries = 50; const sleepTimeMs = 2000; - TestHelper.reset(); + testHelper.reset(); const susi = new SusiRali({windowsMs, maxQueryPerWindow, debugEnabled}); var duration = await testPromise(nbEntries, sleepTimeMs, counterWindows); - expect(TestHelper.maxQ).to.be.lt(maxQueryPerWindow); - expect(TestHelper.maxP).to.be.lt(maxQueryPerWindow); + expect(testHelper.maxQ).to.be.lt(maxQueryPerWindow); + expect(testHelper.maxP).to.be.lt(maxQueryPerWindow); - await TestHelper.sleep(counterWindows*4);// end of counter must be reached to start next + await testHelper.sleep(counterWindows*4);// end of counter must be reached to start next });