当前位置: 首页 > 知识库问答 >
问题:

如何在Dataflow中进行这种类型的测试(在twitter上称为特性测试)?

金旺
2023-03-14

TLDR中,我们向微服务发送请求(REST POST with body),模拟GCP存储,模拟下游api调用,这样整个微服务就可以重构了。此外,我们可以在测试中不做任何更改的情况下交换我们的平台/库,这使得我们非常敏捷。

我的第一个问题是DataFlow(apache beam)可以接收REST请求来触发作业吗?我看到很多api都围绕着“创建作业”,但我在文档中没有看到“执行作业”,而我看到了get status返回作业执行的状态。我只是看不出有什么方法能触发一个工作

  • 从我的存储api(它是可模仿的,位于GCP前面)读取
  • 希望跨多个节点处理文件
  • 调用下游的API(这也是可模仿的)

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

我们在功能测试中使用apache beam,但不确定它是否与谷歌的dataflow相同:(因为这将是最理想的!!!->嗯,我们能得到一个报告的谷歌dataflow的apache beam版本吗?

谢谢,迪恩

谢谢,迪恩

共有1个答案

长孙文栋
2023-03-14

Apache Beam的DirectRunner应该非常接近DataFlow的环境,我们推荐它进行这种类型的单进程流水线测试。

我的建议是相同的:使用DirectRunner进行特性测试。

您也可以使用Dataflow runner,但这听起来像是一个完整的集成测试。根据数据源/数据接收器的不同,您可以向其传递模拟实用程序。

 类似资料:
  • 上面的链接只针对Java。我很困惑为什么谷歌会指向Java Apache测试。 我希望能够查看两个p集合上的CoGroupByKey联接的结果。我来自Python背景,几乎没有使用beam/dataflow的经验。 下面的代码 打印的内容:

  • 我想在我的项目中测试特定的测试类,因为有很多测试类失败,我只想一次测试一个类。 我在以下文件夹中创建了测试类: 因此,我尝试了以下命令,但均无效: = 有什么帮助吗?谢谢

  • 我想进行压力测试,从预期的用户数开始(或从1个虚拟用户开始),然后逐渐增加负载,例如10个线程、20个线程等等…。100个线程,直到响应时间开始超过可接受的值或开始出现错误。但是对于所有这些测试运行,我应该增加爬升周期(秒),还是所有测试都保持不变?图片如下:

  • 我有一个有时返回非类型值的方法。那么,我如何质疑一个非类型的变量呢?例如,我需要使用if方法 我知道这是错误的方式,我希望你明白我的意思。

  • 我如何测试给定的行为是否发送了我期望的消息? 比如说,三条某种类型的信息,一条接一条... 对于常规参与者(非类型化),有来自常规Akka的TestProbe,方法如: http://doc.akka.io/api/akka/current/index.html#akka.testkit.testprobe 有了Akka型的我还在挠头。有一个叫做EffectfulActorContext的东西,但