faastjs
Version:
Serverless batch computing made simple.
59 lines • 7.83 kB
JavaScript
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
;