aws-cdk
Version:
CDK Toolkit, the command line tool for CDK apps
30 lines • 3.53 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const parallel_1 = require("../../lib/util/parallel");
const util_1 = require("../util");
test('parallelPromises', async () => {
const N = 4;
const J = 100;
let jobsDone = 0;
let concurrent = 0;
let maxConcurrent = 0;
const jobs = range(J).map(() => async () => {
concurrent += 1;
maxConcurrent = Math.max(concurrent, maxConcurrent);
await (0, util_1.sleep)(Math.round(Math.random() * 100));
concurrent -= 1;
jobsDone += 1;
});
await (0, parallel_1.parallelPromises)(N, jobs);
expect(maxConcurrent).toBeLessThanOrEqual(N);
expect(maxConcurrent).toBeGreaterThan(1);
expect(jobsDone).toEqual(J);
});
function range(n) {
const ret = new Array();
for (let i = 0; i < n; i++) {
ret.push(i);
}
return ret;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYWxsZWwudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInBhcmFsbGVsLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxzREFBMkQ7QUFDM0Qsa0NBQWdDO0FBRWhDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLElBQUksRUFBRTtJQUNsQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDWixNQUFNLENBQUMsR0FBRyxHQUFHLENBQUM7SUFFZCxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFDakIsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLElBQUksYUFBYSxHQUFHLENBQUMsQ0FBQztJQUV0QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQ3pDLFVBQVUsSUFBSSxDQUFDLENBQUM7UUFDaEIsYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sSUFBQSxZQUFLLEVBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM3QyxVQUFVLElBQUksQ0FBQyxDQUFDO1FBQ2hCLFFBQVEsSUFBSSxDQUFDLENBQUM7SUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFFSCxNQUFNLElBQUEsMkJBQWdCLEVBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBRWhDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUIsQ0FBQyxDQUFDLENBQUM7QUFFSCxTQUFTLEtBQUssQ0FBQyxDQUFTO0lBQ3RCLE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7SUFDaEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzNCLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDZCxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGFyYWxsZWxQcm9taXNlcyB9IGZyb20gJy4uLy4uL2xpYi91dGlsL3BhcmFsbGVsJztcbmltcG9ydCB7IHNsZWVwIH0gZnJvbSAnLi4vdXRpbCc7XG5cbnRlc3QoJ3BhcmFsbGVsUHJvbWlzZXMnLCBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IE4gPSA0O1xuICBjb25zdCBKID0gMTAwO1xuXG4gIGxldCBqb2JzRG9uZSA9IDA7XG4gIGxldCBjb25jdXJyZW50ID0gMDtcbiAgbGV0IG1heENvbmN1cnJlbnQgPSAwO1xuXG4gIGNvbnN0IGpvYnMgPSByYW5nZShKKS5tYXAoKCkgPT4gYXN5bmMgKCkgPT4ge1xuICAgIGNvbmN1cnJlbnQgKz0gMTtcbiAgICBtYXhDb25jdXJyZW50ID0gTWF0aC5tYXgoY29uY3VycmVudCwgbWF4Q29uY3VycmVudCk7XG4gICAgYXdhaXQgc2xlZXAoTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogMTAwKSk7XG4gICAgY29uY3VycmVudCAtPSAxO1xuICAgIGpvYnNEb25lICs9IDE7XG4gIH0pO1xuXG4gIGF3YWl0IHBhcmFsbGVsUHJvbWlzZXMoTiwgam9icyk7XG5cbiAgZXhwZWN0KG1heENvbmN1cnJlbnQpLnRvQmVMZXNzVGhhbk9yRXF1YWwoTik7XG4gIGV4cGVjdChtYXhDb25jdXJyZW50KS50b0JlR3JlYXRlclRoYW4oMSk7XG4gIGV4cGVjdChqb2JzRG9uZSkudG9FcXVhbChKKTtcbn0pO1xuXG5mdW5jdGlvbiByYW5nZShuOiBudW1iZXIpIHtcbiAgY29uc3QgcmV0ID0gbmV3IEFycmF5PG51bWJlcj4oKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICByZXQucHVzaChpKTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuIl19