UNPKG

aws-cdk

Version:

CDK Toolkit, the command line tool for CDK apps

30 lines 3.53 kB
"use strict"; 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