UNPKG

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