Apache Storm 1.1.0 - PullRequest
       24

Apache Storm 1.1.0

1 голос
/ 31 мая 2019

У меня есть топология, которая была создана с использованием Apache Storm. Я создал разные болты и носик для выполнения различных действий. Однако я планирую создать автоматизированный набор тестов для тестирования функций топологии.

Может ли кто-нибудь мне помочь, если вы сделали нечто подобное или предложите мне инструмент / язык, который поможет мне достичь этого? В настоящее время моя топология находится на Java.

1 Ответ

2 голосов
/ 31 мая 2019

Самые быстрые тесты будут юнит-тестами. Если вы можете написать большую часть своей бизнес-логики способом, который не связан с API-интерфейсами Storm, вы можете написать свои тесты как обычные тесты JUnit, возможно, с помощью Mockito или аналогичного инструмента для оцепления соавторов. В основном ваши стандартные модульные тесты Java.

Для интеграционного тестирования, когда вам нужно проверить, правильно ли вы используете Storm, или вам нужно выполнить полное тестирование топологии, вы можете обратиться к классу org.apache.storm.Testing, который поможет вам запустить * 1004. *. Есть несколько примеров на https://github.com/xumingming/storm-lib/blob/master/src/jvm/storm/TestingApiDemo.java. Основная идея состоит в том, чтобы загрузить Storm в той же JVM, что и тест, а затем развернуть в нем топологию.

Начиная с 2.0.0, существует класс LocalCluster, который немного упрощает создание экземпляра LocalCluster из Java.

Просто чтобы дать представление о том, что LocalCluster предлагает:

  • Может ли ваша топология работать в том же процессе, что и ваши тесты
  • Вы можете включить отслеживание кортежей , что заставит кластер отслеживать все испущенные кортежи из всех компонентов. Это позволяет вам, например, утверждать, что определенный кортеж был выпущен из определенного компонента.
  • Позволяет заменить носики заглушками. Это позволяет легко вводить определенные кортежи в топологию, например, используя FixedTupleSpout или FeederSpout.
  • Позволяет делать утверждения о том, какие кортежи были взломаны / неудачны
  • Некоторые стабильные носики являются завершаемыми носиками , что означает, что у них есть API, чтобы указывать Storm, когда они выпустили и зафиксировали / провалили все кортежи. Это может позволить вам, например, Запустите топологию в тесте и попросите, чтобы Storm запустил ее, пока все кортежи не будут обработаны. Это облегчает написание тестов, которые не являются ненадежными, поскольку вам не нужно знать, сколько времени потребуется, чтобы завершить обработку ваших кортежей.

Для других примеров использования LocalCluster, вы можете взглянуть на некоторые из наших собственных интеграционных тестов на https://github.com/apache/storm/blob/8f49e06998abb4dfc50f51d78b6784ebd04844fb/storm-core/test/jvm/org/apache/storm/integration/TopologyIntegrationTest.java. Пожалуйста, не обращайте внимания на то, как топологии связаны в этих тестах, вы должны просто использовать TopologyBuilder в ваших собственных тестах.

...