1 | ;
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const ava_1 = require("ava");
|
4 | const index_1 = require("../index");
|
5 | const trace_1 = require("../src/trace");
|
6 | const funcs = require("./fixtures/functions");
|
7 | const util_1 = require("./fixtures/util");
|
8 | function testCancellation(t, provider, options) {
|
9 | return (0, util_1.withClock)(async () => {
|
10 | await (0, util_1.sleep)(0); // wait until ava sets its timeout so it doesn't get picked up by async_hooks.
|
11 | (0, trace_1.startAsyncTracing)();
|
12 | const faastModule = await (0, index_1.faast)(provider, funcs, {
|
13 | ...options,
|
14 | childProcess: true,
|
15 | gc: "off",
|
16 | description: t.title
|
17 | });
|
18 | try {
|
19 | faastModule.functions.spin(10000).catch(_ => { });
|
20 | await (0, util_1.sleep)(500); // wait until the request actually starts
|
21 | }
|
22 | finally {
|
23 | await faastModule.cleanup();
|
24 | }
|
25 | (0, trace_1.stopAsyncTracing)();
|
26 | await (0, util_1.sleep)(500);
|
27 | const leaks = (0, trace_1.detectAsyncLeaks)();
|
28 | t.true(leaks.length === 0);
|
29 | (0, trace_1.clearLeakDetector)();
|
30 | });
|
31 | }
|
32 | for (const provider of index_1.providers) {
|
33 | let configurations = util_1.configs;
|
34 | if (provider !== "local") {
|
35 | configurations = util_1.configs.filter(t => t.childProcess === true);
|
36 | }
|
37 | for (const config of configurations) {
|
38 | // Cancellation tests must be run serially because the point is to
|
39 | // detect async operations started by faast.js that are not completed
|
40 | // before cleanup returns.
|
41 | ava_1.default.serial((0, util_1.title)(provider, `cleanup waits for all async operations to complete before returning`, config), testCancellation, provider, config);
|
42 | }
|
43 | }
|
44 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuY2VsbGF0aW9uLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90ZXN0L2NhbmNlbGxhdGlvbi50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNkJBQTZDO0FBQzdDLG9DQUFxRTtBQUNyRSx3Q0FLc0I7QUFDdEIsOENBQThDO0FBQzlDLDBDQUFtRTtBQUVuRSxTQUFTLGdCQUFnQixDQUNyQixDQUFtQixFQUNuQixRQUFrQixFQUNsQixPQUF1QjtJQUV2QixPQUFPLElBQUEsZ0JBQVMsRUFBQyxLQUFLLElBQUksRUFBRTtRQUN4QixNQUFNLElBQUEsWUFBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsOEVBQThFO1FBQzlGLElBQUEseUJBQWlCLEdBQUUsQ0FBQztRQUNwQixNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUEsYUFBSyxFQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUU7WUFDN0MsR0FBRyxPQUFPO1lBQ1YsWUFBWSxFQUFFLElBQUk7WUFDbEIsRUFBRSxFQUFFLEtBQUs7WUFDVCxXQUFXLEVBQUUsQ0FBQyxDQUFDLEtBQUs7U0FDdkIsQ0FBQyxDQUFDO1FBQ0gsSUFBSTtZQUNBLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2pELE1BQU0sSUFBQSxZQUFLLEVBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyx5Q0FBeUM7U0FDOUQ7Z0JBQVM7WUFDTixNQUFNLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUMvQjtRQUNELElBQUEsd0JBQWdCLEdBQUUsQ0FBQztRQUNuQixNQUFNLElBQUEsWUFBSyxFQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLE1BQU0sS0FBSyxHQUFHLElBQUEsd0JBQWdCLEdBQUUsQ0FBQztRQUNqQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBQSx5QkFBaUIsR0FBRSxDQUFDO0lBQ3hCLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVELEtBQUssTUFBTSxRQUFRLElBQUksaUJBQVMsRUFBRTtJQUM5QixJQUFJLGNBQWMsR0FBRyxjQUFPLENBQUM7SUFDN0IsSUFBSSxRQUFRLEtBQUssT0FBTyxFQUFFO1FBQ3RCLGNBQWMsR0FBRyxjQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUMsQ0FBQztLQUNqRTtJQUNELEtBQUssTUFBTSxNQUFNLElBQUksY0FBYyxFQUFFO1FBQ2pDLGtFQUFrRTtRQUNsRSxxRUFBcUU7UUFDckUsMEJBQTBCO1FBQzFCLGFBQUksQ0FBQyxNQUFNLENBQ1AsSUFBQSxZQUFLLEVBQ0QsUUFBUSxFQUNSLHFFQUFxRSxFQUNyRSxNQUFNLENBQ1QsRUFDRCxnQkFBZ0IsRUFDaEIsUUFBUSxFQUNSLE1BQU0sQ0FDVCxDQUFDO0tBQ0w7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0ZXN0LCB7IEV4ZWN1dGlvbkNvbnRleHQgfSBmcm9tIFwiYXZhXCI7XG5pbXBvcnQgeyBDb21tb25PcHRpb25zLCBmYWFzdCwgUHJvdmlkZXIsIHByb3ZpZGVycyB9IGZyb20gXCIuLi9pbmRleFwiO1xuaW1wb3J0IHtcbiAgICBjbGVhckxlYWtEZXRlY3RvcixcbiAgICBkZXRlY3RBc3luY0xlYWtzLFxuICAgIHN0YXJ0QXN5bmNUcmFjaW5nLFxuICAgIHN0b3BBc3luY1RyYWNpbmdcbn0gZnJvbSBcIi4uL3NyYy90cmFjZVwiO1xuaW1wb3J0ICogYXMgZnVuY3MgZnJvbSBcIi4vZml4dHVyZXMvZnVuY3Rpb25zXCI7XG5pbXBvcnQgeyBjb25maWdzLCBzbGVlcCwgdGl0bGUsIHdpdGhDbG9jayB9IGZyb20gXCIuL2ZpeHR1cmVzL3V0aWxcIjtcblxuZnVuY3Rpb24gdGVzdENhbmNlbGxhdGlvbihcbiAgICB0OiBFeGVjdXRpb25Db250ZXh0LFxuICAgIHByb3ZpZGVyOiBQcm92aWRlcixcbiAgICBvcHRpb25zPzogQ29tbW9uT3B0aW9uc1xuKSB7XG4gICAgcmV0dXJuIHdpdGhDbG9jayhhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IHNsZWVwKDApOyAvLyB3YWl0IHVudGlsIGF2YSBzZXRzIGl0cyB0aW1lb3V0IHNvIGl0IGRvZXNuJ3QgZ2V0IHBpY2tlZCB1cCBieSBhc3luY19ob29rcy5cbiAgICAgICAgc3RhcnRBc3luY1RyYWNpbmcoKTtcbiAgICAgICAgY29uc3QgZmFhc3RNb2R1bGUgPSBhd2FpdCBmYWFzdChwcm92aWRlciwgZnVuY3MsIHtcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICBjaGlsZFByb2Nlc3M6IHRydWUsXG4gICAgICAgICAgICBnYzogXCJvZmZcIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0LnRpdGxlXG4gICAgICAgIH0pO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZmFhc3RNb2R1bGUuZnVuY3Rpb25zLnNwaW4oMTAwMDApLmNhdGNoKF8gPT4ge30pO1xuICAgICAgICAgICAgYXdhaXQgc2xlZXAoNTAwKTsgLy8gd2FpdCB1bnRpbCB0aGUgcmVxdWVzdCBhY3R1YWxseSBzdGFydHNcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGF3YWl0IGZhYXN0TW9kdWxlLmNsZWFudXAoKTtcbiAgICAgICAgfVxuICAgICAgICBzdG9wQXN5bmNUcmFjaW5nKCk7XG4gICAgICAgIGF3YWl0IHNsZWVwKDUwMCk7XG4gICAgICAgIGNvbnN0IGxlYWtzID0gZGV0ZWN0QXN5bmNMZWFrcygpO1xuICAgICAgICB0LnRydWUobGVha3MubGVuZ3RoID09PSAwKTtcbiAgICAgICAgY2xlYXJMZWFrRGV0ZWN0b3IoKTtcbiAgICB9KTtcbn1cblxuZm9yIChjb25zdCBwcm92aWRlciBvZiBwcm92aWRlcnMpIHtcbiAgICBsZXQgY29uZmlndXJhdGlvbnMgPSBjb25maWdzO1xuICAgIGlmIChwcm92aWRlciAhPT0gXCJsb2NhbFwiKSB7XG4gICAgICAgIGNvbmZpZ3VyYXRpb25zID0gY29uZmlncy5maWx0ZXIodCA9PiB0LmNoaWxkUHJvY2VzcyA9PT0gdHJ1ZSk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgY29uZmlnIG9mIGNvbmZpZ3VyYXRpb25zKSB7XG4gICAgICAgIC8vIENhbmNlbGxhdGlvbiB0ZXN0cyBtdXN0IGJlIHJ1biBzZXJpYWxseSBiZWNhdXNlIHRoZSBwb2ludCBpcyB0b1xuICAgICAgICAvLyBkZXRlY3QgYXN5bmMgb3BlcmF0aW9ucyBzdGFydGVkIGJ5IGZhYXN0LmpzIHRoYXQgYXJlIG5vdCBjb21wbGV0ZWRcbiAgICAgICAgLy8gYmVmb3JlIGNsZWFudXAgcmV0dXJucy5cbiAgICAgICAgdGVzdC5zZXJpYWwoXG4gICAgICAgICAgICB0aXRsZShcbiAgICAgICAgICAgICAgICBwcm92aWRlcixcbiAgICAgICAgICAgICAgICBgY2xlYW51cCB3YWl0cyBmb3IgYWxsIGFzeW5jIG9wZXJhdGlvbnMgdG8gY29tcGxldGUgYmVmb3JlIHJldHVybmluZ2AsXG4gICAgICAgICAgICAgICAgY29uZmlnXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGVzdENhbmNlbGxhdGlvbixcbiAgICAgICAgICAgIHByb3ZpZGVyLFxuICAgICAgICAgICAgY29uZmlnXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19 |
\ | No newline at end of file |