/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package org.mobicents.media.server.impl.clock; import java.io.IOException; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.Semaphore; import java.util.concurrent.TimeUnit; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.mobicents.media.Buffer; import org.mobicents.media.Format; import org.mobicents.media.Inlet; import org.mobicents.media.MediaSink; import org.mobicents.media.MediaSource; import org.mobicents.media.server.impl.AbstractSink; import org.mobicents.media.server.impl.AbstractSource; import static org.junit.Assert.*; import org.mobicents.media.server.spi.Connection; import org.mobicents.media.server.spi.Endpoint; import org.mobicents.media.server.spi.NotificationListener; import org.mobicents.media.server.spi.SyncSource; /** * * @author kulikov */ public class TimerImplTest { public TimerImplTest() { } @BeforeClass public static void setUpClass() throws Exception { } @AfterClass public static void tearDownClass() throws Exception { } @Before public void setUp() { } @After public void tearDown() { } /** * Test of getHeartBeat method, of class TimerImpl. */ @Test public void testTimer() throws Exception { TimerImpl timer = new TimerImpl(); TestTask t1 = new TestTask("1"); TestTask t2 = new TestTask("2"); TestSink s1 = new TestSink("1"); TestSink s2 = new TestSink("2"); t1.connect(s1); t2.connect(s2); t1.setSyncSource(timer); t2.setSyncSource(timer); timer.start(); timer.sync(t1); timer.sync(t2); Semaphore semaphore = new Semaphore(0); semaphore.tryAcquire(5, TimeUnit.SECONDS); timer.unsync(t1); timer.unsync(t2); int c1 = t1.getCountor(); int c2 = t2.getCountor(); assertEquals(true, c1 > 0); assertEquals(true, c2 > 0); semaphore.tryAcquire(5, TimeUnit.SECONDS); assertEquals(true, (t1.getCountor() - c1) <= 1); assertEquals(true, (t2.getCountor() - c2) <= 1); t1.disconnect(s1); t2.disconnect(s2); timer.stop(); } private class TestTask extends AbstractSource { private int countor; public TestTask(String name) { super(name); } public int getCountor() { return countor; } @Override public void evolve(Buffer buffer, long timestamp, long sequenceNumber) { System.out.println("tick"); countor++; } public Format[] getFormats() { throw new UnsupportedOperationException("Not supported yet."); } } private class TestSink extends AbstractSink { public TestSink(String name) { super(name); } @Override public void onMediaTransfer(Buffer buffer) throws IOException { } public Format[] getFormats() { return new Format[0]; } public boolean isAcceptable(Format format) { return true; } } }