2016-11-30 65 views
1

我有Storm計算每分鐘聚合的拓撲。 我想通過Java單元測試來覆蓋應用程序,但我無法找到任何有關Java單元測試的工作示例。如何在Apache Storm中用模擬時間編寫Java單元測試?

我需要模擬時間的變化,獲得拓撲的輸出並測試它。

+0

也許這有助於:https://github.com/mjsax/aeolus/tree/master/queries/lrb/src/test/java/de/hub/cs/dbis/lrb/operators –

+0

謝謝。測試正在分別測試每個螺栓。我想在一個測試中測試整個拓撲。我認爲它需要使用「測試」類。 –

+0

你嘗試過使用'LocalCluster'嗎? –

回答

0

的解決方案似乎是:

Testing.withSimulatedTimeLocalCluster(new TestJob() { 
    public void run(Cluster cluster) { 
     // your testing logic here. 
     Time.advanceTime(100); 
    } 
}); 

它利用了Testing類(所有的Javadoc莫名失蹤)與Time類,樂於助人的手動推進時間方法一起使用。

但請注意,這隻能幫助您使用Storm的內部時鐘,用於滑動窗口等。您自己的代碼也需要了解模擬時間。在Java世界中執行此操作的標準方法包括Clock類(僅限Java 8)或DateTimeUtils類,如果您遇到Joda-Time問題。

相關問題