/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.mobicents.media.server.impl.resource.test;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
import org.mobicents.media.server.impl.clock.TimerImpl;
import org.mobicents.media.server.spi.NotificationListener;
import org.mobicents.media.server.spi.Timer;
import org.mobicents.media.server.spi.events.NotifyEvent;
/**
*
* @author kulikov
*/
public class MeanderTest implements NotificationListener {
public final static int TEST_DURATION = 10;
public final static short A = 100;
public final static double T = 0.1;
private Timer timer;
private MeanderGenerator gen;
private MeanderDetector det;
private int outOfSeq;
private int evtCount;
private boolean fmtMissmatch = false;
public MeanderTest() {
}
@BeforeClass
public static void setUpClass() throws Exception {
}
@AfterClass
public static void tearDownClass() throws Exception {
}
@Before
public void setUp() {
timer = new TimerImpl();
gen = new MeanderGenerator("test-gen", timer);
gen.setAmplitude(A);
gen.setPeriod(T);
det = new MeanderDetector("test-det");
det.setAmplitude(A);
det.setPeriod(T);
det.addListener(this);
timer.start();
}
@After
public void tearDown() {
timer.stop();
}
/**
* Test of isAcceptable method, of class MeanderDetector.
*/
@Test
@SuppressWarnings("static-access")
public void testGenerationDetection() throws Exception {
gen.connect(det);
det.start();
gen.start();
Thread.currentThread().sleep(TEST_DURATION * 1000);
assertEquals(0, outOfSeq);
int count = (int)(TEST_DURATION /T/2);
int diff = Math.abs(count - evtCount);
assertTrue("Signal not detected", diff < 2);
assertFalse("Format missmatch detected", this.fmtMissmatch);
}
public void update(NotifyEvent event) {
if (event.getEventID() == MeanderEvent.EVENT_MEANDER) {
evtCount++;
} else if (event.getEventID() == MeanderEvent.EVENT_OUT_OF_SEQUENCE){
outOfSeq++;
} else if (event.getEventID() == MeanderEvent.EVENT_FORMAT_MISSMATCH) {
fmtMissmatch = true;
}
}
}