2016-11-30 4 views
1

매분마다 집계를 계산하는 스톰 토폴로지가 있습니다. 자바 단위 테스트로 응용 프로그램을 다루고 싶습니다만 일부 Java 단위 테스트의 작동 예제를 찾을 수 없습니다.Apache Storm에서 시뮬레이트 된 시간을 사용하여 Java unit test를 작성하는 방법은 무엇입니까?

시간의 변화를 시뮬레이트하고 토폴로지 출력을 가져 와서 테스트해야합니다.

+0

아마도 도움이됩니다. https://github.com/mjsax/aeolus/tree/master/queries/lrb/src/test/java/de/hub/cs/dbis/lrb/operators –

+0

감사합니다. 테스트는 각 볼트를 개별적으로 테스트합니다. 하나의 테스트에서 전체 토폴로지를 테스트하고 싶습니다. "테스트"클래스를 사용해야한다고 생각합니다. –

+0

'LocalCluster'를 사용해 보셨습니까? –

답변

0

이 솔루션은 것 같습니다 :

함께 Time 클래스와 그 도움이 매뉴얼 시간 발전 방법과 (알수없는 모든 Javadoc과에서 누락)을 Testing 클래스를 활용
Testing.withSimulatedTimeLocalCluster(new TestJob() { 
    public void run(Cluster cluster) { 
     // your testing logic here. 
     Time.advanceTime(100); 
    } 
}); 

.

참고 :이 기능은 Storm의 내부 시계가 슬라이딩 윈도우 등으로 사용될 때만 도움이됩니다. 자신의 코드는 시뮬레이트 된 시간도 알고 있어야합니다. Java 세계에서 표준 작업을 수행하는 방법으로는 Clock 클래스 (Java 8 만 해당) 또는 012oda클래스가 있습니다 (Joda-Time이 붙어있는 경우).