1
我有Storm計算每分鐘聚合的拓撲。 我想通過Java單元測試來覆蓋應用程序,但我無法找到任何有關Java單元測試的工作示例。如何在Apache Storm中用模擬時間編寫Java單元測試?
我需要模擬時間的變化,獲得拓撲的輸出並測試它。
我有Storm計算每分鐘聚合的拓撲。 我想通過Java單元測試來覆蓋應用程序,但我無法找到任何有關Java單元測試的工作示例。如何在Apache Storm中用模擬時間編寫Java單元測試?
我需要模擬時間的變化,獲得拓撲的輸出並測試它。
的解決方案似乎是:
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問題。
也許這有助於:https://github.com/mjsax/aeolus/tree/master/queries/lrb/src/test/java/de/hub/cs/dbis/lrb/operators –
謝謝。測試正在分別測試每個螺栓。我想在一個測試中測試整個拓撲。我認爲它需要使用「測試」類。 –
你嘗試過使用'LocalCluster'嗎? –