package org.jgroups.tests; import org.jgroups.Global; import org.jgroups.util.TimeScheduler; import org.jgroups.util.TimeScheduler3; import org.jgroups.util.TimeService; import org.jgroups.util.Util; import org.testng.annotations.*; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; /** * Tests {@TimeService} * @author Bela Ban * @since 3.5 */ @Test(groups=Global.FUNCTIONAL,singleThreaded=true) public class TimeServiceTest { protected TimeScheduler timer; protected TimeService time_service; @BeforeClass public void init() {timer=new TimeScheduler3();} @BeforeMethod public void start() {time_service=new TimeService(timer).start();} @AfterMethod public void stop() {time_service.stop();} @AfterClass public void destroy() {timer.stop();} public void testSimpleGetTime() { List<Long> times=new ArrayList<>(20); for(int i=0; i < 20; i++) times.add(time_service.timestamp()); System.out.println("times=" + times); Set<Long> set=new HashSet<>(times); System.out.println("set = " + set); assert set.size() < times.size(); assert times.size() <= 20; set.clear(); time_service.stop().interval(50).start(); for(int i=0; i < 20; i++) { set.add(time_service.timestamp()); Util.sleep(200); } System.out.println("set=" + set); assert set.size() >= 15; } public void testChangeInterval() { time_service.interval(1000).start(); assert time_service.interval() == 1000; } public void testStartStop() { assert time_service.running(); time_service.stop(); Util.sleep(2000); assert !time_service.running(); } }