UNPKG

7.65 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const ava_1 = require("ava");
4const faast = require("../index");
5const functions = require("./fixtures/functions");
6const local_faast_1 = require("../src/local/local-faast");
7const fs_extra_1 = require("fs-extra");
8(0, ava_1.default)("local garbage collector works for functions that are called", async (t) => {
9 // Idea behind this test: create a faast module and make a call. Then
10 // cleanup while leaving the resources in place. Then create another faast
11 // module and set its retention to 0, and intercept the garbage collector
12 // worker to restrict what is cleaned up to the first function only (to
13 // avoid interference with other tests). Verify the first faast module's
14 // resources are cleaned up, which shows that the garbage collector did its
15 // job.
16 const mod = await faast.faastLocal(functions, { description: t.title });
17 try {
18 await mod.functions.hello("gc-test");
19 await mod.cleanup({ deleteResources: false });
20 const mod2 = await faast.faastLocal(functions, {
21 gc: "force",
22 _gcWorker: async (dir) => {
23 if (dir === mod.state.tempDir) {
24 await (0, local_faast_1.defaultGcWorker)(dir);
25 }
26 },
27 retentionInDays: 0,
28 description: t.title
29 });
30 await mod2.cleanup();
31 t.false((0, fs_extra_1.existsSync)(mod.state.tempDir));
32 }
33 finally {
34 await mod.cleanup();
35 }
36});
37(0, ava_1.default)("local garbage collector works for functions that are never called", async (t) => {
38 const mod = await faast.faastLocal(functions, { description: t.title });
39 try {
40 await mod.cleanup({ deleteResources: false });
41 const mod2 = await faast.faastLocal(functions, {
42 gc: "force",
43 _gcWorker: async (dir) => {
44 if (dir === mod.state.tempDir) {
45 await (0, local_faast_1.defaultGcWorker)(dir);
46 }
47 },
48 retentionInDays: 0,
49 description: t.title
50 });
51 await mod2.cleanup();
52 t.false((0, fs_extra_1.existsSync)(mod.state.tempDir));
53 }
54 finally {
55 await mod.cleanup();
56 }
57});
58//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtZ2MudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3Rlc3QvbG9jYWwtZ2MudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDZCQUF1QjtBQUN2QixrQ0FBa0M7QUFDbEMsa0RBQWtEO0FBQ2xELDBEQUEyRDtBQUMzRCx1Q0FBc0M7QUFFdEMsSUFBQSxhQUFJLEVBQUMsNkRBQTZELEVBQUUsS0FBSyxFQUFDLENBQUMsRUFBQyxFQUFFO0lBQzFFLHFFQUFxRTtJQUNyRSwwRUFBMEU7SUFDMUUseUVBQXlFO0lBQ3pFLHVFQUF1RTtJQUN2RSx3RUFBd0U7SUFDeEUsMkVBQTJFO0lBQzNFLE9BQU87SUFDUCxNQUFNLEdBQUcsR0FBRyxNQUFNLEtBQUssQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLElBQUk7UUFDQSxNQUFNLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sSUFBSSxHQUFHLE1BQU0sS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUU7WUFDM0MsRUFBRSxFQUFFLE9BQU87WUFDWCxTQUFTLEVBQUUsS0FBSyxFQUFDLEdBQUcsRUFBQyxFQUFFO2dCQUNuQixJQUFJLEdBQUcsS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRTtvQkFDM0IsTUFBTSxJQUFBLDZCQUFlLEVBQUMsR0FBRyxDQUFDLENBQUM7aUJBQzlCO1lBQ0wsQ0FBQztZQUNELGVBQWUsRUFBRSxDQUFDO1lBQ2xCLFdBQVcsRUFBRSxDQUFDLENBQUMsS0FBSztTQUN2QixDQUFDLENBQUM7UUFDSCxNQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsS0FBSyxDQUFDLElBQUEscUJBQVUsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7S0FDMUM7WUFBUztRQUNOLE1BQU0sR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO0tBQ3ZCO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFBLGFBQUksRUFBQyxtRUFBbUUsRUFBRSxLQUFLLEVBQUMsQ0FBQyxFQUFDLEVBQUU7SUFDaEYsTUFBTSxHQUFHLEdBQUcsTUFBTSxLQUFLLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4RSxJQUFJO1FBQ0EsTUFBTSxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDOUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxLQUFLLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRTtZQUMzQyxFQUFFLEVBQUUsT0FBTztZQUNYLFNBQVMsRUFBRSxLQUFLLEVBQUMsR0FBRyxFQUFDLEVBQUU7Z0JBQ25CLElBQUksR0FBRyxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFO29CQUMzQixNQUFNLElBQUEsNkJBQWUsRUFBQyxHQUFHLENBQUMsQ0FBQztpQkFDOUI7WUFDTCxDQUFDO1lBQ0QsZUFBZSxFQUFFLENBQUM7WUFDbEIsV0FBVyxFQUFFLENBQUMsQ0FBQyxLQUFLO1NBQ3ZCLENBQUMsQ0FBQztRQUVILE1BQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBQSxxQkFBVSxFQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztLQUMxQztZQUFTO1FBQ04sTUFBTSxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7S0FDdkI7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0ZXN0IGZyb20gXCJhdmFcIjtcbmltcG9ydCAqIGFzIGZhYXN0IGZyb20gXCIuLi9pbmRleFwiO1xuaW1wb3J0ICogYXMgZnVuY3Rpb25zIGZyb20gXCIuL2ZpeHR1cmVzL2Z1bmN0aW9uc1wiO1xuaW1wb3J0IHsgZGVmYXVsdEdjV29ya2VyIH0gZnJvbSBcIi4uL3NyYy9sb2NhbC9sb2NhbC1mYWFzdFwiO1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gXCJmcy1leHRyYVwiO1xuXG50ZXN0KFwibG9jYWwgZ2FyYmFnZSBjb2xsZWN0b3Igd29ya3MgZm9yIGZ1bmN0aW9ucyB0aGF0IGFyZSBjYWxsZWRcIiwgYXN5bmMgdCA9PiB7XG4gICAgLy8gSWRlYSBiZWhpbmQgdGhpcyB0ZXN0OiBjcmVhdGUgYSBmYWFzdCBtb2R1bGUgYW5kIG1ha2UgYSBjYWxsLiBUaGVuXG4gICAgLy8gY2xlYW51cCB3aGlsZSBsZWF2aW5nIHRoZSByZXNvdXJjZXMgaW4gcGxhY2UuIFRoZW4gY3JlYXRlIGFub3RoZXIgZmFhc3RcbiAgICAvLyBtb2R1bGUgYW5kIHNldCBpdHMgcmV0ZW50aW9uIHRvIDAsIGFuZCBpbnRlcmNlcHQgdGhlIGdhcmJhZ2UgY29sbGVjdG9yXG4gICAgLy8gd29ya2VyIHRvIHJlc3RyaWN0IHdoYXQgaXMgY2xlYW5lZCB1cCB0byB0aGUgZmlyc3QgZnVuY3Rpb24gb25seSAodG9cbiAgICAvLyBhdm9pZCBpbnRlcmZlcmVuY2Ugd2l0aCBvdGhlciB0ZXN0cykuIFZlcmlmeSB0aGUgZmlyc3QgZmFhc3QgbW9kdWxlJ3NcbiAgICAvLyByZXNvdXJjZXMgYXJlIGNsZWFuZWQgdXAsIHdoaWNoIHNob3dzIHRoYXQgdGhlIGdhcmJhZ2UgY29sbGVjdG9yIGRpZCBpdHNcbiAgICAvLyBqb2IuXG4gICAgY29uc3QgbW9kID0gYXdhaXQgZmFhc3QuZmFhc3RMb2NhbChmdW5jdGlvbnMsIHsgZGVzY3JpcHRpb246IHQudGl0bGUgfSk7XG4gICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgbW9kLmZ1bmN0aW9ucy5oZWxsbyhcImdjLXRlc3RcIik7XG4gICAgICAgIGF3YWl0IG1vZC5jbGVhbnVwKHsgZGVsZXRlUmVzb3VyY2VzOiBmYWxzZSB9KTtcbiAgICAgICAgY29uc3QgbW9kMiA9IGF3YWl0IGZhYXN0LmZhYXN0TG9jYWwoZnVuY3Rpb25zLCB7XG4gICAgICAgICAgICBnYzogXCJmb3JjZVwiLFxuICAgICAgICAgICAgX2djV29ya2VyOiBhc3luYyBkaXIgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChkaXIgPT09IG1vZC5zdGF0ZS50ZW1wRGlyKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGRlZmF1bHRHY1dvcmtlcihkaXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXRlbnRpb25JbkRheXM6IDAsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogdC50aXRsZVxuICAgICAgICB9KTtcbiAgICAgICAgYXdhaXQgbW9kMi5jbGVhbnVwKCk7XG4gICAgICAgIHQuZmFsc2UoZXhpc3RzU3luYyhtb2Quc3RhdGUudGVtcERpcikpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAgIGF3YWl0IG1vZC5jbGVhbnVwKCk7XG4gICAgfVxufSk7XG5cbnRlc3QoXCJsb2NhbCBnYXJiYWdlIGNvbGxlY3RvciB3b3JrcyBmb3IgZnVuY3Rpb25zIHRoYXQgYXJlIG5ldmVyIGNhbGxlZFwiLCBhc3luYyB0ID0+IHtcbiAgICBjb25zdCBtb2QgPSBhd2FpdCBmYWFzdC5mYWFzdExvY2FsKGZ1bmN0aW9ucywgeyBkZXNjcmlwdGlvbjogdC50aXRsZSB9KTtcbiAgICB0cnkge1xuICAgICAgICBhd2FpdCBtb2QuY2xlYW51cCh7IGRlbGV0ZVJlc291cmNlczogZmFsc2UgfSk7XG4gICAgICAgIGNvbnN0IG1vZDIgPSBhd2FpdCBmYWFzdC5mYWFzdExvY2FsKGZ1bmN0aW9ucywge1xuICAgICAgICAgICAgZ2M6IFwiZm9yY2VcIixcbiAgICAgICAgICAgIF9nY1dvcmtlcjogYXN5bmMgZGlyID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZGlyID09PSBtb2Quc3RhdGUudGVtcERpcikge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBkZWZhdWx0R2NXb3JrZXIoZGlyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmV0ZW50aW9uSW5EYXlzOiAwLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHQudGl0bGVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgYXdhaXQgbW9kMi5jbGVhbnVwKCk7XG4gICAgICAgIHQuZmFsc2UoZXhpc3RzU3luYyhtb2Quc3RhdGUudGVtcERpcikpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAgIGF3YWl0IG1vZC5jbGVhbnVwKCk7XG4gICAgfVxufSk7XG4iXX0=
\No newline at end of file