【问题标题】:apache storm unit testing a bolt in a live topologyApache Storm 单元在实时拓扑中测试螺栓
【发布时间】:2018-07-20 15:16:50
【问题描述】:

我有一个风暴拓扑,它有一个连接到 kafka 队列的 spout,并将元组转发到我的 bolt 进行处理。我只想对螺栓进行单元测试,而不是 kafka -> spout -> bolt 的整个段。但是,我还想在风暴拓扑实例中测试螺栓,而不仅仅是它的纯粹功能。原因是bolt实际上将处理后的数据发送到了cassandra数据库。

所以我实现这一点的一种方法是制作一个测试喷口,将其连接到螺栓,然后通过测试喷口将测试元组发送到螺栓。但是,这似乎对测试来说工作量太大了。有一个更好的方法吗?比如劫持 test 中的原始 spout 以发送一些测试元组?

【问题讨论】:

    标签: unit-testing apache-storm


    【解决方案1】:

    您可能会考虑用https://storm.apache.org/releases/0.9.6/javadocs/backtype/storm/testing/FixedTupleSpout.htmlhttps://storm.apache.org/releases/0.9.6/javadocs/backtype/storm/testing/FeederSpout.html 替换您的Kafka spout 以进行测试。

    使用 FixedTupleSpout 进行测试的一个好处是它实现了https://github.com/apache/storm/blob/a4afacd9617d620f50cf026fc599821f7ac25c79/storm-client/src/jvm/org/apache/storm/testing/CompletableSpout.java,因此可以与 completeTopology https://github.com/apache/storm/blob/64e29f365c9b5d3e15b33f33ab64e200345333e4/storm-server/src/main/java/org/apache/storm/Testing.java#L405 一起使用。这可以让您编写最初设置一些元组的测试,运行拓扑直到所有元组都被确认/失败,然后让您断言例如该数据被写入 Cassandra 并且所有元组都被确认。

    这里有一个使用完整拓扑的例子https://github.com/xumingming/storm-lib/blob/master/src/jvm/storm/TestingApiDemo.java#L83

    【讨论】:

      猜你喜欢
      • 2014-07-29
      • 1970-01-01
      • 2019-01-23
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多