【问题标题】:Apache Storm 1.1.0阿帕奇风暴 1.1.0
【发布时间】:2019-06-01 16:23:16
【问题描述】:

我有一个使用 Apache Storm 创建的拓扑。我已经创建了不同的螺栓和喷嘴来执行各种活动。不过,我正计划创建一个自动化测试套件来测试拓扑的功能。

如果您做过类似的事情或向我推荐一种可以帮助我实现它的工具/语言,可以帮助我吗?目前,我的拓扑是 Java。

【问题讨论】:

    标签: apache-storm


    【解决方案1】:

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

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

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

    只是想知道LocalCluster 提供什么:

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

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

    【讨论】:

    • 嗨@Stig Rohde Døssing,谢谢。真的很有帮助。
    猜你喜欢
    • 1970-01-01
    • 2014-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多