Наша топология Apache Storm прослушивает сообщения от Kafka с помощью KafkaSpout и после выполнения большого количества сопоставлений/уменьшения/обогащения/агрегации и т. д. и т. д. и т. д., наконец, вставляет данные в Cassandra. Есть еще один вход kafka, где мы получаем пользовательские запросы на данные, если топология находит ответ, а затем отправляет его в третью тему kafka. Теперь мы хотим написать тест E2E с помощью Junit, в котором мы можем напрямую программно вставлять данные в топологию, а затем, вставляя сообщение пользовательского запроса, мы можем утверждать в третьем пункте, что ответ, полученный на наш запрос, правильный.
Чтобы добиться этого, мы решили запустить EmbeddedKafka и CassandraUnit, а затем заменить ими настоящие Kafka и Cassandra, а затем мы можем начать топологию в контексте этого единственного теста Junit.
Прежде чем мы начнем настоящий тест, мы создадим топологию и отправим ее в LocalCluster. Он запускает топологию в другом потоке, выходит из Before и начинает выполнять наш тест. До этого времени топология не готова, потому что требуется некоторое время, чтобы быть готовой к обработке. Есть ли какой-либо java API, который может сообщить нам, когда топология готова к обработке (означает готовность прочитать первое сообщение от Spout)?