如何在 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 作业执行的状态。我只是看不到触发工作的方法
- 从我的存储中读取 api(可模拟并位于 GCP 前面)
- 希望跨多个节点处理文件
- 在下游调用 apis(这也是可模拟的)
然后,我只是想在我的测试中模拟 http 调用,然后在读取文件时,return 一个真实的客户文件,然后在完成后,我的测试将验证所有正确的请求都已发送到api 下游。
我们在功能测试中使用了 Apache Beam,但不确定它是否与 google 的数据流版本相同 :( 因为那将是最理想的!!! -> 嗯,有没有报告了 google 的数据流的 apache beam 版本我们可以得到吗?
谢谢,
院长
谢谢,
院长
Apache Beam 的DirectRunner 应该和Dataflow 的环境非常接近,我们推荐这种单进程流水线测试。
我的建议是一样的:使用 DirectRunner 进行功能测试。
您也可以使用数据流运行器,但这听起来像是一个完整的集成测试。根据数据源/数据接收器,您可以将模拟实用程序传递给它。
BigQueryIO 就是一个很好的例子。它具有 a withTestServices
method that 可用于传递模拟外部服务行为的对象
我们会像这样进行功能测试 -> 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 作业执行的状态。我只是看不到触发工作的方法
- 从我的存储中读取 api(可模拟并位于 GCP 前面)
- 希望跨多个节点处理文件
- 在下游调用 apis(这也是可模拟的)
然后,我只是想在我的测试中模拟 http 调用,然后在读取文件时,return 一个真实的客户文件,然后在完成后,我的测试将验证所有正确的请求都已发送到api 下游。
我们在功能测试中使用了 Apache Beam,但不确定它是否与 google 的数据流版本相同 :( 因为那将是最理想的!!! -> 嗯,有没有报告了 google 的数据流的 apache beam 版本我们可以得到吗?
谢谢, 院长
谢谢, 院长
Apache Beam 的DirectRunner 应该和Dataflow 的环境非常接近,我们推荐这种单进程流水线测试。
我的建议是一样的:使用 DirectRunner 进行功能测试。
您也可以使用数据流运行器,但这听起来像是一个完整的集成测试。根据数据源/数据接收器,您可以将模拟实用程序传递给它。
BigQueryIO 就是一个很好的例子。它具有 a withTestServices
method that 可用于传递模拟外部服务行为的对象