Apache Storm 1.1.0

时间:2019-05-31 10:07:46

标签: apache-storm

我有一个使用Apache Storm创建的拓扑。我创建了不同的螺栓和喷口以执行各种活动。但是,我计划创建一个自动测试套件来测试拓扑的功能。

如果您做了类似的事情或向我建议可以帮助我实现目标的工具/语言,是否可以帮助我?目前,我的拓扑是在Java中。

1 个答案:

答案 0 :(得分:0)

最快的测试将是单元测试。如果您可以通过与Storm的API分离的方式来编写大多数业务逻辑,则可以将测试编写为常规JUnit测试,也许可以使用Mockito或类似的工具来对协作者进行存根。基本上就是您的标准Java单元测试。

对于集成测试,需要检查您是否正确使用了Storm,或者需要对拓扑进行完整的端到端测试,可以查看testing_image类,它可以帮助您开始org.apache.storm.Testinghttps://github.com/xumingming/storm-lib/blob/master/src/jvm/storm/TestingApiDemo.java中有一些示例。基本思想是在与测试相同的JVM中启动Storm,然后将拓扑部署到其中。

从2.0.0版开始,有一个LocalCluster构建器类,使从Java实例化LocalCluster变得更加容易。

只想了解LocalCluster提供的内容:

  • 可以在与测试相同的过程中运行拓扑
  • 您可以启用元组跟踪,这将使集群跟踪所有组件发出的所有元组。这使您例如断定某个元组是从某个组件发出的。
  • 可以用存根替换喷口。这可以让您轻松地将特定的元组注入拓扑中,例如使用LocalClusterFixedTupleSpout
  • 让您断言哪些元组被确认/失败
  • 某些存根喷口是可伸缩喷口,这意味着它们具有API,可以在发出和确认/失败所有元组时向Storm指示。这样可以让您在测试中启动一个拓扑,并要求Storm运行它,直到处理完所有的元组为止。这使编写不易出错的测试变得更加容易,因为您不需要知道完成元组处理所花费的时间。

有关如何使用FeederSpout的其他示例,您可以在https://github.com/apache/storm/blob/8f49e06998abb4dfc50f51d78b6784ebd04844fb/storm-core/test/jvm/org/apache/storm/integration/TopologyIntegrationTest.java看一下我们自己的一些集成测试。请忽略在这些测试中连接拓扑的方式,您应该只在自己的测试中使用LocalCluster