Martin Karkowski
daaa0fd51a
- Added: - helpers.limit: limitedCalls -> Functinality to limit parallel calls. # 1.0.30 - Added: - helpers.limit: getLimitedOptions -> Helper to get the correspondings options - helpers.limit.spec: Adding test cases # 1.0.31 - Modified: - helpers.singleton: Prevent using symbols, to make global version work with local version.
67 lines
1.8 KiB
TypeScript
67 lines
1.8 KiB
TypeScript
/**
|
|
* @author Martin Karkowski
|
|
* @email m.karkowski@zema.de
|
|
* @desc [description]
|
|
*/
|
|
|
|
import { describe, it } from "mocha";
|
|
import { sleep } from "./async";
|
|
import { limitedCalls } from "./limit";
|
|
|
|
describe("limit", function () {
|
|
// Describe the required Test:
|
|
|
|
describe("limitedCalls", function () {
|
|
it("single-call - sync", async () => {
|
|
const f = limitedCalls(sleep, {
|
|
maxParallel: 0,
|
|
});
|
|
const start = Date.now();
|
|
const promises = [f(100), f(100)];
|
|
await Promise.all(promises);
|
|
const end = Date.now();
|
|
if (end - start < 120) {
|
|
throw Error("Failed to call sync");
|
|
}
|
|
});
|
|
it("single-call - parallel", async () => {
|
|
const f = limitedCalls(sleep, {
|
|
maxParallel: 2,
|
|
});
|
|
const start = Date.now();
|
|
const promises = [f(100), f(100)];
|
|
await Promise.all(promises);
|
|
const end = Date.now();
|
|
if (end - start > 120) {
|
|
throw Error("Failed to call parallel");
|
|
}
|
|
});
|
|
it("single-call - between (sync)", async () => {
|
|
const f = limitedCalls<void>(async (...args) => {}, {
|
|
maxParallel: 0,
|
|
callbackBetween: () => sleep(50),
|
|
});
|
|
const start = Date.now();
|
|
const promises = [f(100), f(100)];
|
|
await Promise.all(promises);
|
|
const end = Date.now();
|
|
if (end - start < 50) {
|
|
throw Error("Failed to call callbackBetween");
|
|
}
|
|
});
|
|
it("single-call - between (parallel)", async () => {
|
|
const f = limitedCalls<void>(async (...args) => {}, {
|
|
maxParallel: 10,
|
|
callbackBetween: () => sleep(50),
|
|
});
|
|
const start = Date.now();
|
|
const promises = [f(100), f(100)];
|
|
await Promise.all(promises);
|
|
const end = Date.now();
|
|
if (end - start > 50) {
|
|
throw Error("Failed to call callbackBetween");
|
|
}
|
|
});
|
|
});
|
|
});
|