UNPKG

faastjs

Version:

Serverless batch computing made simple.

59 lines 7.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const ava_1 = tslib_1.__importDefault(require("ava")); const faast = tslib_1.__importStar(require("../index")); const functions = tslib_1.__importStar(require("./fixtures/functions")); const local_faast_1 = require("../src/local/local-faast"); const fs_extra_1 = require("fs-extra"); (0, ava_1.default)("local garbage collector works for functions that are called", async (t) => { // Idea behind this test: create a faast module and make a call. Then // cleanup while leaving the resources in place. Then create another faast // module and set its retention to 0, and intercept the garbage collector // worker to restrict what is cleaned up to the first function only (to // avoid interference with other tests). Verify the first faast module's // resources are cleaned up, which shows that the garbage collector did its // job. const mod = await faast.faastLocal(functions, { description: t.title }); try { await mod.functions.hello("gc-test"); await mod.cleanup({ deleteResources: false }); const mod2 = await faast.faastLocal(functions, { gc: "force", _gcWorker: async (dir) => { if (dir === mod.state.tempDir) { await (0, local_faast_1.defaultGcWorker)(dir); } }, retentionInDays: 0, description: t.title }); await mod2.cleanup(); t.false((0, fs_extra_1.existsSync)(mod.state.tempDir)); } finally { await mod.cleanup(); } }); (0, ava_1.default)("local garbage collector works for functions that are never called", async (t) => { const mod = await faast.faastLocal(functions, { description: t.title }); try { await mod.cleanup({ deleteResources: false }); const mod2 = await faast.faastLocal(functions, { gc: "force", _gcWorker: async (dir) => { if (dir === mod.state.tempDir) { await (0, local_faast_1.defaultGcWorker)(dir); } }, retentionInDays: 0, description: t.title }); await mod2.cleanup(); t.false((0, fs_extra_1.existsSync)(mod.state.tempDir)); } finally { await mod.cleanup(); } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtZ2MudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3Rlc3QvbG9jYWwtZ2MudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxzREFBdUI7QUFDdkIsd0RBQWtDO0FBQ2xDLHdFQUFrRDtBQUNsRCwwREFBMkQ7QUFDM0QsdUNBQXNDO0FBRXRDLElBQUEsYUFBSSxFQUFDLDZEQUE2RCxFQUFFLEtBQUssRUFBQyxDQUFDLEVBQUMsRUFBRTtJQUMxRSxxRUFBcUU7SUFDckUsMEVBQTBFO0lBQzFFLHlFQUF5RTtJQUN6RSx1RUFBdUU7SUFDdkUsd0VBQXdFO0lBQ3hFLDJFQUEyRTtJQUMzRSxPQUFPO0lBQ1AsTUFBTSxHQUFHLEdBQUcsTUFBTSxLQUFLLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4RSxJQUFJLENBQUM7UUFDRCxNQUFNLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sSUFBSSxHQUFHLE1BQU0sS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUU7WUFDM0MsRUFBRSxFQUFFLE9BQU87WUFDWCxTQUFTLEVBQUUsS0FBSyxFQUFDLEdBQUcsRUFBQyxFQUFFO2dCQUNuQixJQUFJLEdBQUcsS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUM1QixNQUFNLElBQUEsNkJBQWUsRUFBQyxHQUFHLENBQUMsQ0FBQztnQkFDL0IsQ0FBQztZQUNMLENBQUM7WUFDRCxlQUFlLEVBQUUsQ0FBQztZQUNsQixXQUFXLEVBQUUsQ0FBQyxDQUFDLEtBQUs7U0FDdkIsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFBLHFCQUFVLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzNDLENBQUM7WUFBUyxDQUFDO1FBQ1AsTUFBTSxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDeEIsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBQSxhQUFJLEVBQUMsbUVBQW1FLEVBQUUsS0FBSyxFQUFDLENBQUMsRUFBQyxFQUFFO0lBQ2hGLE1BQU0sR0FBRyxHQUFHLE1BQU0sS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDeEUsSUFBSSxDQUFDO1FBQ0QsTUFBTSxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDOUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxLQUFLLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRTtZQUMzQyxFQUFFLEVBQUUsT0FBTztZQUNYLFNBQVMsRUFBRSxLQUFLLEVBQUMsR0FBRyxFQUFDLEVBQUU7Z0JBQ25CLElBQUksR0FBRyxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQzVCLE1BQU0sSUFBQSw2QkFBZSxFQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMvQixDQUFDO1lBQ0wsQ0FBQztZQUNELGVBQWUsRUFBRSxDQUFDO1lBQ2xCLFdBQVcsRUFBRSxDQUFDLENBQUMsS0FBSztTQUN2QixDQUFDLENBQUM7UUFFSCxNQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsS0FBSyxDQUFDLElBQUEscUJBQVUsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztZQUFTLENBQUM7UUFDUCxNQUFNLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN4QixDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdGVzdCBmcm9tIFwiYXZhXCI7XG5pbXBvcnQgKiBhcyBmYWFzdCBmcm9tIFwiLi4vaW5kZXhcIjtcbmltcG9ydCAqIGFzIGZ1bmN0aW9ucyBmcm9tIFwiLi9maXh0dXJlcy9mdW5jdGlvbnNcIjtcbmltcG9ydCB7IGRlZmF1bHRHY1dvcmtlciB9IGZyb20gXCIuLi9zcmMvbG9jYWwvbG9jYWwtZmFhc3RcIjtcbmltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tIFwiZnMtZXh0cmFcIjtcblxudGVzdChcImxvY2FsIGdhcmJhZ2UgY29sbGVjdG9yIHdvcmtzIGZvciBmdW5jdGlvbnMgdGhhdCBhcmUgY2FsbGVkXCIsIGFzeW5jIHQgPT4ge1xuICAgIC8vIElkZWEgYmVoaW5kIHRoaXMgdGVzdDogY3JlYXRlIGEgZmFhc3QgbW9kdWxlIGFuZCBtYWtlIGEgY2FsbC4gVGhlblxuICAgIC8vIGNsZWFudXAgd2hpbGUgbGVhdmluZyB0aGUgcmVzb3VyY2VzIGluIHBsYWNlLiBUaGVuIGNyZWF0ZSBhbm90aGVyIGZhYXN0XG4gICAgLy8gbW9kdWxlIGFuZCBzZXQgaXRzIHJldGVudGlvbiB0byAwLCBhbmQgaW50ZXJjZXB0IHRoZSBnYXJiYWdlIGNvbGxlY3RvclxuICAgIC8vIHdvcmtlciB0byByZXN0cmljdCB3aGF0IGlzIGNsZWFuZWQgdXAgdG8gdGhlIGZpcnN0IGZ1bmN0aW9uIG9ubHkgKHRvXG4gICAgLy8gYXZvaWQgaW50ZXJmZXJlbmNlIHdpdGggb3RoZXIgdGVzdHMpLiBWZXJpZnkgdGhlIGZpcnN0IGZhYXN0IG1vZHVsZSdzXG4gICAgLy8gcmVzb3VyY2VzIGFyZSBjbGVhbmVkIHVwLCB3aGljaCBzaG93cyB0aGF0IHRoZSBnYXJiYWdlIGNvbGxlY3RvciBkaWQgaXRzXG4gICAgLy8gam9iLlxuICAgIGNvbnN0IG1vZCA9IGF3YWl0IGZhYXN0LmZhYXN0TG9jYWwoZnVuY3Rpb25zLCB7IGRlc2NyaXB0aW9uOiB0LnRpdGxlIH0pO1xuICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IG1vZC5mdW5jdGlvbnMuaGVsbG8oXCJnYy10ZXN0XCIpO1xuICAgICAgICBhd2FpdCBtb2QuY2xlYW51cCh7IGRlbGV0ZVJlc291cmNlczogZmFsc2UgfSk7XG4gICAgICAgIGNvbnN0IG1vZDIgPSBhd2FpdCBmYWFzdC5mYWFzdExvY2FsKGZ1bmN0aW9ucywge1xuICAgICAgICAgICAgZ2M6IFwiZm9yY2VcIixcbiAgICAgICAgICAgIF9nY1dvcmtlcjogYXN5bmMgZGlyID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZGlyID09PSBtb2Quc3RhdGUudGVtcERpcikge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBkZWZhdWx0R2NXb3JrZXIoZGlyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmV0ZW50aW9uSW5EYXlzOiAwLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHQudGl0bGVcbiAgICAgICAgfSk7XG4gICAgICAgIGF3YWl0IG1vZDIuY2xlYW51cCgpO1xuICAgICAgICB0LmZhbHNlKGV4aXN0c1N5bmMobW9kLnN0YXRlLnRlbXBEaXIpKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgICBhd2FpdCBtb2QuY2xlYW51cCgpO1xuICAgIH1cbn0pO1xuXG50ZXN0KFwibG9jYWwgZ2FyYmFnZSBjb2xsZWN0b3Igd29ya3MgZm9yIGZ1bmN0aW9ucyB0aGF0IGFyZSBuZXZlciBjYWxsZWRcIiwgYXN5bmMgdCA9PiB7XG4gICAgY29uc3QgbW9kID0gYXdhaXQgZmFhc3QuZmFhc3RMb2NhbChmdW5jdGlvbnMsIHsgZGVzY3JpcHRpb246IHQudGl0bGUgfSk7XG4gICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgbW9kLmNsZWFudXAoeyBkZWxldGVSZXNvdXJjZXM6IGZhbHNlIH0pO1xuICAgICAgICBjb25zdCBtb2QyID0gYXdhaXQgZmFhc3QuZmFhc3RMb2NhbChmdW5jdGlvbnMsIHtcbiAgICAgICAgICAgIGdjOiBcImZvcmNlXCIsXG4gICAgICAgICAgICBfZ2NXb3JrZXI6IGFzeW5jIGRpciA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGRpciA9PT0gbW9kLnN0YXRlLnRlbXBEaXIpIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgZGVmYXVsdEdjV29ya2VyKGRpcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJldGVudGlvbkluRGF5czogMCxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0LnRpdGxlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGF3YWl0IG1vZDIuY2xlYW51cCgpO1xuICAgICAgICB0LmZhbHNlKGV4aXN0c1N5bmMobW9kLnN0YXRlLnRlbXBEaXIpKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgICBhd2FpdCBtb2QuY2xlYW51cCgpO1xuICAgIH1cbn0pO1xuIl19