【问题标题】:running tests via lambda (serverless)通过 lambda 运行测试(无服务器)
【发布时间】:2021-05-26 04:18:42
【问题描述】:

假设我有一个代码 sn-p 并测试覆盖该代码(这里只是一个例子)。

有没有可能

将测试定义为 lambda/cloud 函数:

const sum = require('./sum');

test('adds 1 + 2 to equal 3', () => {
  expect(sum(1, 2)).toBe(3);
});

并且被截断的代码会登陆 s3/gcp 云存储:

function sum(a, b) {
  return a + b;
}
module.exports = sum;

该函数将监听一个事件(文件存储在特定文件夹中)并执行测试代码。

输出将存储回 s3/GCP 云存储上的文件或通过 API 发送。

我的问题:是否可以使用无服务器(lambda/云函数)实现此场景,是的,从哪里开始。 (任何示例、链接、材料)。

谢谢。

【问题讨论】:

  • 嗨,只是想让事情变得更清楚一些。您的“特定文件夹”存储在哪里,是否在存储桶中?什么样的事件会触发该功能?这是一个链接,可以了解有关 Cloud Functions 中的触发器和事件的更多信息cloud.google.com/functions/docs/concepts/events-triggers
  • 是的,在存储桶中。我认为这是最直接的方法,但如果用例有更好的选择,请分享。

标签: aws-lambda architecture google-cloud-functions serverless


【解决方案1】:

据我了解,您的函数将从存储桶中获取代码。这会引入更多延迟,因为代码在启动时加载并且从其他来源(如存储桶)动态获取代码会增加额外的延迟,所以我不推荐它。在无服务器上,您应该始终以尽可能快地完成请求为目标。

有可能吗?是的,正如我从其他人那里问过的,并说 Javascript 足够动态,可以做到这一点。但话又说回来,请注意后果。除非你有一个非常具体的用例,否则如果我是你,这不是一个非常理想的方法。

但是,这就是我想出的。您可以尝试使用客户端库将 Cloud Storage 中的代码 download 放在 /tmp 上:

请注意,这是您可以write files 的唯一目录,它会将其存储在内存中。

然后从您的无服务器函数加载下载的资源。我还没有完全测试过如何做到这一点,但是 here's a thread 向你展示了如何做到这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-10
    • 2017-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多