我在 Java 中有一个数据流作业,它从 PubSub 主题读取输入消息,接收每小时刷新一次的辅助输入,将来自辅助输入和 PubSub 消息的信息组合起来,然后写入 BigTable。
如何编写本地测试(使用模拟器)来测试侧输入是否定期刷新?
这就是我打算做的:
Create a test Pub/Sub topic and publish test messages to it: 为了测试你的数据流作业,你需要创建一个测试 Pub/Sub 主题并向它发布测试消息。您可以使用 Pub/Sub 模拟器在您的机器上本地模拟 Pub/Sub 环境。
创建测试 Bigtable 实例:您可以使用 Google Cloud SDK 或使用测试框架(如 Testcontainers)创建测试 Bigtable 实例。这将允许您将测试数据写入 Bigtable 而不会影响您的生产数据。
创建返回测试数据的测试端输入:为了测试您的端输入是否定期刷新,您可以创建一个返回测试数据的测试端输入。这个测试数据应该和生产端输入的数据不一样,这样你就可以很容易的判断出端输入是否刷新了。
Create a mock function that updates the test side input:您可以创建一个模拟函数,用新的测试数据更新测试端输入。此功能可以由计时器或外部事件(例如测试用例)触发。
Create a test pipeline that uses the test side input and test Pub/Sub topic:您可以创建一个使用测试端输入和测试Pub/Sub主题的测试管道,并将测试数据写入测试Bigtable实例。
运行测试管道并验证输出:您可以运行测试管道并验证输出以确保测试数据正确写入Bigtable。您还可以通过检查正在写入 Bigtable 的测试数据来验证测试端输入是否正在定期刷新
但是,有没有更直接的方法来编写这个测试?