UNPKG

@aws-cdk-testing/cli-integ

Version:

Integration tests for the AWS CDK CLI

45 lines 5.27 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parallelShell = parallelShell; const p_queue_1 = require("p-queue"); const aws_1 = require("../aws"); const corking_1 = require("../corking"); /** * Run a function in parallel with cached output */ async function parallelShell(inputs, block, swallowError) { // Limit to 10 for now, too many instances of Maven exhaust the CodeBuild instance memory const q = new p_queue_1.default({ concurrency: Number(process.env.CONCURRENCY) || 10 }); await q.addAll(inputs.map(input => async () => { let attempts = 10; let sleepMs = 500; while (true) { const output = new corking_1.MemoryStream(); try { await block(input, output); return; } catch (e) { switch (swallowError === null || swallowError === void 0 ? void 0 : swallowError(input, output.toString())) { case 'skip': return; case 'retry': if (--attempts > 0) { await (0, aws_1.sleep)(Math.floor(Math.random() * sleepMs)); sleepMs *= 2; continue; } break; case 'fail': case undefined: break; } // eslint-disable-next-line no-console console.error(output.toString()); throw e; } } })); await q.onEmpty(); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYWxsZWwtc2hlbGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwYXJhbGxlbC1zaGVsbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVNBLHNDQXlDQztBQWxERCxxQ0FBNkI7QUFDN0IsZ0NBQStCO0FBQy9CLHdDQUEwQztBQUkxQzs7R0FFRztBQUNJLEtBQUssVUFBVSxhQUFhLENBQ2pDLE1BQVcsRUFDWCxLQUE2RCxFQUM3RCxZQUFzRDtJQUV0RCx5RkFBeUY7SUFDekYsTUFBTSxDQUFDLEdBQUcsSUFBSSxpQkFBTSxDQUFDLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDN0UsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLElBQUksRUFBRTtRQUM1QyxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxPQUFPLEdBQUcsR0FBRyxDQUFDO1FBQ2xCLE9BQU8sSUFBSSxFQUFFLENBQUM7WUFDWixNQUFNLE1BQU0sR0FBRyxJQUFJLHNCQUFZLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUMzQixPQUFPO1lBQ1QsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1gsUUFBUSxZQUFZLGFBQVosWUFBWSx1QkFBWixZQUFZLENBQUcsS0FBSyxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUM7b0JBQ2pELEtBQUssTUFBTTt3QkFDVCxPQUFPO29CQUVULEtBQUssT0FBTzt3QkFDVixJQUFJLEVBQUUsUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDOzRCQUNuQixNQUFNLElBQUEsV0FBSyxFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUM7NEJBQ2pELE9BQU8sSUFBSSxDQUFDLENBQUM7NEJBQ2IsU0FBUzt3QkFDWCxDQUFDO3dCQUNELE1BQU07b0JBRVIsS0FBSyxNQUFNLENBQUM7b0JBQ1osS0FBSyxTQUFTO3dCQUNaLE1BQU07Z0JBQ1YsQ0FBQztnQkFFRCxzQ0FBc0M7Z0JBQ3RDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQ2pDLE1BQU0sQ0FBQyxDQUFDO1lBQ1YsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRUosTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQUXVldWUgZnJvbSAncC1xdWV1ZSc7XG5pbXBvcnQgeyBzbGVlcCB9IGZyb20gJy4uL2F3cyc7XG5pbXBvcnQgeyBNZW1vcnlTdHJlYW0gfSBmcm9tICcuLi9jb3JraW5nJztcblxuZXhwb3J0IHR5cGUgRXJyb3JSZXNwb25zZSA9ICdmYWlsJyB8ICdza2lwJyB8ICdyZXRyeSc7XG5cbi8qKlxuICogUnVuIGEgZnVuY3Rpb24gaW4gcGFyYWxsZWwgd2l0aCBjYWNoZWQgb3V0cHV0XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwYXJhbGxlbFNoZWxsPEE+KFxuICBpbnB1dHM6IEFbXSxcbiAgYmxvY2s6ICh4OiBBLCBvdXRwdXQ6IE5vZGVKUy5Xcml0YWJsZVN0cmVhbSkgPT4gUHJvbWlzZTx2b2lkPixcbiAgc3dhbGxvd0Vycm9yPzogKHg6IEEsIG91dHB1dDogc3RyaW5nKSA9PiBFcnJvclJlc3BvbnNlLFxuKSB7XG4gIC8vIExpbWl0IHRvIDEwIGZvciBub3csIHRvbyBtYW55IGluc3RhbmNlcyBvZiBNYXZlbiBleGhhdXN0IHRoZSBDb2RlQnVpbGQgaW5zdGFuY2UgbWVtb3J5XG4gIGNvbnN0IHEgPSBuZXcgUFF1ZXVlKHsgY29uY3VycmVuY3k6IE51bWJlcihwcm9jZXNzLmVudi5DT05DVVJSRU5DWSkgfHwgMTAgfSk7XG4gIGF3YWl0IHEuYWRkQWxsKGlucHV0cy5tYXAoaW5wdXQgPT4gYXN5bmMgKCkgPT4ge1xuICAgIGxldCBhdHRlbXB0cyA9IDEwO1xuICAgIGxldCBzbGVlcE1zID0gNTAwO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBjb25zdCBvdXRwdXQgPSBuZXcgTWVtb3J5U3RyZWFtKCk7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBibG9jayhpbnB1dCwgb3V0cHV0KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBzd2l0Y2ggKHN3YWxsb3dFcnJvcj8uKGlucHV0LCBvdXRwdXQudG9TdHJpbmcoKSkpIHtcbiAgICAgICAgICBjYXNlICdza2lwJzpcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICAgIGNhc2UgJ3JldHJ5JzpcbiAgICAgICAgICAgIGlmICgtLWF0dGVtcHRzID4gMCkge1xuICAgICAgICAgICAgICBhd2FpdCBzbGVlcChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBzbGVlcE1zKSk7XG4gICAgICAgICAgICAgIHNsZWVwTXMgKj0gMjtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ2ZhaWwnOlxuICAgICAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLmVycm9yKG91dHB1dC50b1N0cmluZygpKTtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9XG4gIH0pKTtcblxuICBhd2FpdCBxLm9uRW1wdHkoKTtcbn1cbiJdfQ==