integration-testing - Apache Flink - 端到端测试如何终止输入源

标签 integration-testing apache-flink flink-streaming end-to-end data-stream

我在批处理中使用 apache flink 有一段时间了,但现在我们想将此批处理作业转换为流式作业。我遇到的问题是如何运行端到端测试。

它是如何在批处理作业中工作的

在使用批处理时,我们使用 cucumber 创建了端到端测试。

  • 我们将填满从
  • 读取的 hbase 表。
  • 运行批处理作业
  • 等待它完成
  • 验证结果

  • 流式作业中的问题

    我们想对流式作业做类似的事情,除了流式作业并没有真正完成。

    所以:
  • 填满我们从
  • 读取的消息队列
  • 运行流式作业。
  • 等待它完成(如何?)
  • 验证结果

  • 我们可以在每次测试后等待 5 秒,并假设所有内容都已处理,但这会大大减慢所有内容。

    问题:

    有哪些方法或最佳实践可以在流式 flink 作业上运行端到端测试,而不会在 x 秒后强制终止 flink 作业

    最佳答案

    大多数 Flink DataStream 源,如果它们从有限输入中读取,将在到达末尾时注入(inject)值为 LONG.MAX_VALUE 的水印,之后作业将终止。

    Flink training exercises说明对 Flink 作业进行端到端测试的一种方法。我建议克隆 github repo并查看测试是如何设置的。他们使用 custom source and sink并重定向输入和输出以进行测试。

    documentation 中也讨论了这个主题。 .

    关于integration-testing - Apache Flink - 端到端测试如何终止输入源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51242886/

    相关文章:

    spring-boot - 在Spring Boot中使用不同的弹性指数进行测试

    github - 并行使用 github 操作时拆分测试文件

    apache-kafka - 弗林克 : Window does not process data at end of stream

    scala - flinks DataStream 的模拟对象

    apache-kafka - 斯卡拉 : Cannot resolve overloaded methods (Flink WatermarkStrategy)

    unit-testing - RIA 开发中的测试驱动开发/集成测试

    java - gradle集成测试不起作用,单元测试运行两次

    java - 如何为 Kafka 2.2 实现 FlinkKafkaProducer 序列化器

    java - JpaRepository 不在自定义 RichSinkFunction 中 Autowiring

    apache-flink - Flink Stateful Functions 与现有 Flink 应用程序