如何在 Dataflow 中进行此类测试(在 Twitter 上称为功能测试)?

How to do this type of testing in Dataflow(called feature testing at twitter)?

我们会像这样进行功能测试 -> https://blog.twitter.com/engineering/en_us/topics/insights/2017/the-testing-renaissance.html

那篇文章的 TLDR,我们将请求发送到微服务(REST POST with body),模拟 GCP 存储,模拟下游 api 调用,以便重构整个微服务。此外,我们可以在不改变测试的情况下更换我们的 platforms/libs,这使我们非常敏捷。

我的第一个问题是 DataFlow (apache beam) 可以接收 REST 请求来触发作业吗?我看到很多 api 都在 'create job' 附近,但我在文档中没有看到 'execute job',而我确实看到 get status returns 作业执行的状态。我只是看不到触发工作的方法

然后,我只是想在我的测试中模拟 http 调用,然后在读取文件时,return 一个真实的客户文件,然后在完成后,我的测试将验证所有正确的请求都已发送到api 下游。

我们在功能测试中使用了 Apache Beam,但不确定它是否与 google 的数据流版本相同 :( 因为那将是最理想的!!! -> 嗯,有没有报告了 google 的数据流的 apache beam 版本我们可以得到吗?

谢谢, 院长

谢谢, 院长

A​​pache Beam 的DirectRunner 应该和Dataflow 的环境非常接近,我们推荐这种单进程流水线测试。

我的建议是一样的:使用 DirectRunner 进行功能测试。

您也可以使用数据流运行器,但这听起来像是一个完整的集成测试。根据数据源/数据接收器,您可以将模拟实用程序传递给它。

BigQueryIO 就是一个很好的例子。它具有 a withTestServices method that 可用于传递模拟外部服务行为的对象