faastjs
Version:
Serverless batch computing made simple.
45 lines • 6.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const ava_1 = tslib_1.__importDefault(require("ava"));
const index_1 = require("../index");
const trace_1 = require("../src/trace");
const funcs = tslib_1.__importStar(require("./fixtures/functions"));
const util_1 = require("./fixtures/util");
function testCancellation(t, provider, options) {
return (0, util_1.withClock)(async () => {
await (0, util_1.sleep)(0); // wait until ava sets its timeout so it doesn't get picked up by async_hooks.
(0, trace_1.startAsyncTracing)();
const faastModule = await (0, index_1.faast)(provider, funcs, {
...options,
childProcess: true,
gc: "off",
description: t.title
});
try {
faastModule.functions.spin(10000).catch(_ => { });
await (0, util_1.sleep)(500); // wait until the request actually starts
}
finally {
await faastModule.cleanup();
}
(0, trace_1.stopAsyncTracing)();
await (0, util_1.sleep)(500);
const leaks = (0, trace_1.detectAsyncLeaks)();
t.true(leaks.length === 0);
(0, trace_1.clearLeakDetector)();
});
}
for (const provider of index_1.providers) {
let configurations = util_1.configs;
if (provider !== "local") {
configurations = util_1.configs.filter(t => t.childProcess === true);
}
for (const config of configurations) {
// Cancellation tests must be run serially because the point is to
// detect async operations started by faast.js that are not completed
// before cleanup returns.
ava_1.default.serial((0, util_1.title)(provider, `cleanup waits for all async operations to complete before returning`, config), testCancellation, provider, config);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuY2VsbGF0aW9uLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90ZXN0L2NhbmNlbGxhdGlvbi50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHNEQUE2QztBQUM3QyxvQ0FBcUU7QUFDckUsd0NBS3NCO0FBQ3RCLG9FQUE4QztBQUM5QywwQ0FBbUU7QUFFbkUsU0FBUyxnQkFBZ0IsQ0FDckIsQ0FBbUIsRUFDbkIsUUFBa0IsRUFDbEIsT0FBdUI7SUFFdkIsT0FBTyxJQUFBLGdCQUFTLEVBQUMsS0FBSyxJQUFJLEVBQUU7UUFDeEIsTUFBTSxJQUFBLFlBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLDhFQUE4RTtRQUM5RixJQUFBLHlCQUFpQixHQUFFLENBQUM7UUFDcEIsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFBLGFBQUssRUFBQyxRQUFRLEVBQUUsS0FBSyxFQUFFO1lBQzdDLEdBQUcsT0FBTztZQUNWLFlBQVksRUFBRSxJQUFJO1lBQ2xCLEVBQUUsRUFBRSxLQUFLO1lBQ1QsV0FBVyxFQUFFLENBQUMsQ0FBQyxLQUFLO1NBQ3ZCLENBQUMsQ0FBQztRQUNILElBQUk7WUFDQSxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQztZQUNqRCxNQUFNLElBQUEsWUFBSyxFQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMseUNBQXlDO1NBQzlEO2dCQUFTO1lBQ04sTUFBTSxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDL0I7UUFDRCxJQUFBLHdCQUFnQixHQUFFLENBQUM7UUFDbkIsTUFBTSxJQUFBLFlBQUssRUFBQyxHQUFHLENBQUMsQ0FBQztRQUNqQixNQUFNLEtBQUssR0FBRyxJQUFBLHdCQUFnQixHQUFFLENBQUM7UUFDakMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzNCLElBQUEseUJBQWlCLEdBQUUsQ0FBQztJQUN4QixDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRCxLQUFLLE1BQU0sUUFBUSxJQUFJLGlCQUFTLEVBQUU7SUFDOUIsSUFBSSxjQUFjLEdBQUcsY0FBTyxDQUFDO0lBQzdCLElBQUksUUFBUSxLQUFLLE9BQU8sRUFBRTtRQUN0QixjQUFjLEdBQUcsY0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLENBQUM7S0FDakU7SUFDRCxLQUFLLE1BQU0sTUFBTSxJQUFJLGNBQWMsRUFBRTtRQUNqQyxrRUFBa0U7UUFDbEUscUVBQXFFO1FBQ3JFLDBCQUEwQjtRQUMxQixhQUFJLENBQUMsTUFBTSxDQUNQLElBQUEsWUFBSyxFQUNELFFBQVEsRUFDUixxRUFBcUUsRUFDckUsTUFBTSxDQUNULEVBQ0QsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixNQUFNLENBQ1QsQ0FBQztLQUNMO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdGVzdCwgeyBFeGVjdXRpb25Db250ZXh0IH0gZnJvbSBcImF2YVwiO1xuaW1wb3J0IHsgQ29tbW9uT3B0aW9ucywgZmFhc3QsIFByb3ZpZGVyLCBwcm92aWRlcnMgfSBmcm9tIFwiLi4vaW5kZXhcIjtcbmltcG9ydCB7XG4gICAgY2xlYXJMZWFrRGV0ZWN0b3IsXG4gICAgZGV0ZWN0QXN5bmNMZWFrcyxcbiAgICBzdGFydEFzeW5jVHJhY2luZyxcbiAgICBzdG9wQXN5bmNUcmFjaW5nXG59IGZyb20gXCIuLi9zcmMvdHJhY2VcIjtcbmltcG9ydCAqIGFzIGZ1bmNzIGZyb20gXCIuL2ZpeHR1cmVzL2Z1bmN0aW9uc1wiO1xuaW1wb3J0IHsgY29uZmlncywgc2xlZXAsIHRpdGxlLCB3aXRoQ2xvY2sgfSBmcm9tIFwiLi9maXh0dXJlcy91dGlsXCI7XG5cbmZ1bmN0aW9uIHRlc3RDYW5jZWxsYXRpb24oXG4gICAgdDogRXhlY3V0aW9uQ29udGV4dCxcbiAgICBwcm92aWRlcjogUHJvdmlkZXIsXG4gICAgb3B0aW9ucz86IENvbW1vbk9wdGlvbnNcbikge1xuICAgIHJldHVybiB3aXRoQ2xvY2soYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCBzbGVlcCgwKTsgLy8gd2FpdCB1bnRpbCBhdmEgc2V0cyBpdHMgdGltZW91dCBzbyBpdCBkb2Vzbid0IGdldCBwaWNrZWQgdXAgYnkgYXN5bmNfaG9va3MuXG4gICAgICAgIHN0YXJ0QXN5bmNUcmFjaW5nKCk7XG4gICAgICAgIGNvbnN0IGZhYXN0TW9kdWxlID0gYXdhaXQgZmFhc3QocHJvdmlkZXIsIGZ1bmNzLCB7XG4gICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgY2hpbGRQcm9jZXNzOiB0cnVlLFxuICAgICAgICAgICAgZ2M6IFwib2ZmXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogdC50aXRsZVxuICAgICAgICB9KTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZhYXN0TW9kdWxlLmZ1bmN0aW9ucy5zcGluKDEwMDAwKS5jYXRjaChfID0+IHt9KTtcbiAgICAgICAgICAgIGF3YWl0IHNsZWVwKDUwMCk7IC8vIHdhaXQgdW50aWwgdGhlIHJlcXVlc3QgYWN0dWFsbHkgc3RhcnRzXG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBhd2FpdCBmYWFzdE1vZHVsZS5jbGVhbnVwKCk7XG4gICAgICAgIH1cbiAgICAgICAgc3RvcEFzeW5jVHJhY2luZygpO1xuICAgICAgICBhd2FpdCBzbGVlcCg1MDApO1xuICAgICAgICBjb25zdCBsZWFrcyA9IGRldGVjdEFzeW5jTGVha3MoKTtcbiAgICAgICAgdC50cnVlKGxlYWtzLmxlbmd0aCA9PT0gMCk7XG4gICAgICAgIGNsZWFyTGVha0RldGVjdG9yKCk7XG4gICAgfSk7XG59XG5cbmZvciAoY29uc3QgcHJvdmlkZXIgb2YgcHJvdmlkZXJzKSB7XG4gICAgbGV0IGNvbmZpZ3VyYXRpb25zID0gY29uZmlncztcbiAgICBpZiAocHJvdmlkZXIgIT09IFwibG9jYWxcIikge1xuICAgICAgICBjb25maWd1cmF0aW9ucyA9IGNvbmZpZ3MuZmlsdGVyKHQgPT4gdC5jaGlsZFByb2Nlc3MgPT09IHRydWUpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGNvbmZpZyBvZiBjb25maWd1cmF0aW9ucykge1xuICAgICAgICAvLyBDYW5jZWxsYXRpb24gdGVzdHMgbXVzdCBiZSBydW4gc2VyaWFsbHkgYmVjYXVzZSB0aGUgcG9pbnQgaXMgdG9cbiAgICAgICAgLy8gZGV0ZWN0IGFzeW5jIG9wZXJhdGlvbnMgc3RhcnRlZCBieSBmYWFzdC5qcyB0aGF0IGFyZSBub3QgY29tcGxldGVkXG4gICAgICAgIC8vIGJlZm9yZSBjbGVhbnVwIHJldHVybnMuXG4gICAgICAgIHRlc3Quc2VyaWFsKFxuICAgICAgICAgICAgdGl0bGUoXG4gICAgICAgICAgICAgICAgcHJvdmlkZXIsXG4gICAgICAgICAgICAgICAgYGNsZWFudXAgd2FpdHMgZm9yIGFsbCBhc3luYyBvcGVyYXRpb25zIHRvIGNvbXBsZXRlIGJlZm9yZSByZXR1cm5pbmdgLFxuICAgICAgICAgICAgICAgIGNvbmZpZ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRlc3RDYW5jZWxsYXRpb24sXG4gICAgICAgICAgICBwcm92aWRlcixcbiAgICAgICAgICAgIGNvbmZpZ1xuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==