如何使用定期刷新的辅助输入在本地测试我的数据流作业?

问题描述 投票:0回答:0

我在 Java 中有一个数据流作业,它从 PubSub 主题读取输入消息,接收每小时刷新一次的辅助输入,将来自辅助输入和 PubSub 消息的信息组合起来,然后写入 BigTable。

如何编写本地测试(使用模拟器)来测试侧输入是否定期刷新?

这就是我打算做的:

  1. Create a test Pub/Sub topic and publish test messages to it: 为了测试你的数据流作业,你需要创建一个测试 Pub/Sub 主题并向它发布测试消息。您可以使用 Pub/Sub 模拟器在您的机器上本地模拟 Pub/Sub 环境。

  2. 创建测试 Bigtable 实例:您可以使用 Google Cloud SDK 或使用测试框架(如 Testcontainers)创建测试 Bigtable 实例。这将允许您将测试数据写入 Bigtable 而不会影响您的生产数据。

  3. 创建返回测试数据的测试端输入:为了测试您的端输入是否定期刷新,您可以创建一个返回测试数据的测试端输入。这个测试数据应该和生产端输入的数据不一样,这样你就可以很容易的判断出端输入是否刷新了。

  4. Create a mock function that updates the test side input:您可以创建一个模拟函数,用新的测试数据更新测试端输入。此功能可以由计时器或外部事件(例如测试用例)触发。

  5. Create a test pipeline that uses the test side input and test Pub/Sub topic:您可以创建一个使用测试端输入和测试Pub/Sub主题的测试管道,并将测试数据写入测试Bigtable实例。

  6. 运行测试管道并验证输出:您可以运行测试管道并验证输出以确保测试数据正确写入Bigtable。您还可以通过检查正在写入 Bigtable 的测试数据来验证测试端输入是否正在定期刷新

但是,有没有更直接的方法来编写这个测试?

unit-testing google-cloud-dataflow apache-beam emulation google-cloud-bigtable
© www.soinside.com 2019 - 2024. All rights reserved.