我们的 Apache Storm 拓扑使用 KafkaSpout 监听来自 Kafka 的消息,并在进行大量映射/减少/丰富/聚合等操作后,最终将数据插入 Cassandra。还有另一个 kafka 输入,如果拓扑找到响应,我们会在其中接收用户对数据的查询,然后将其发送到第三个 kafka 主题。现在我们想使用 Junit 编写 E2E 测试,其中我们可以直接以编程方式将数据插入拓扑,然后通过插入用户查询消息,我们可以在第三点断言我们的查询收到的响应是正确的。
为了实现这一点,我们考虑启动 EmbeddedKafka 和 CassandraUnit,然后用它们替换实际的 Kafka 和 Cassandra,然后我们可以在这个单一的 Junit 测试的上下文中启动拓扑。
但是我们的方法不太适合 JUnit,因为它使这些测试变得过于庞大。启动 kafka、cassandra 和拓扑都需要时间并消耗大量资源。Apache Storm 中有什么东西可以支持我们计划编写的测试吗?