/** * */ package test.unit.gov.nist.javax.sip.stack.forkedinvitedialogtimeout; import java.util.HashSet; import javax.sip.SipProvider; import junit.framework.TestCase; import org.apache.log4j.Appender; import org.apache.log4j.ConsoleAppender; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; import org.apache.log4j.SimpleLayout; /** * @author M. Ranganathan * */ public class InviteTest extends TestCase { protected Shootist shootist; private static Logger logger = Logger.getLogger("test.tck"); protected static final Appender console = new ConsoleAppender(new SimpleLayout()); private static int forkCount = 2; protected HashSet<Shootme> shootme = new HashSet<Shootme>(); private Proxy proxy; // private Appender appender; public InviteTest() { super("forkedInviteTest"); } public void setUp() { try { super.setUp(); } catch (Exception ex) { fail("unexpected exception "); } } public void tearDown() { try { } catch (Exception ex) { ex.printStackTrace(); logger.error("unexpected exception", ex); fail("unexpected exception "); } } public void testSendInviteDialogTimeoutEventSeen() throws Exception { try { shootist = new Shootist(6050, 5070, "on", true); SipProvider shootistProvider = shootist.createSipProvider(); shootistProvider.addSipListener(shootist); Shootme shootmeUa = new Shootme(5080, true, 4000, 4000); SipProvider shootmeProvider = shootmeUa.createProvider(); shootmeProvider.addSipListener(shootmeUa); this.shootme.add(shootmeUa); shootmeUa = new Shootme(5081, true, 5000, 4000); shootmeProvider = shootmeUa.createProvider(); shootmeProvider.addSipListener(shootmeUa); this.shootme.add(shootmeUa); this.proxy = new Proxy(5070, forkCount); SipProvider provider = proxy.createSipProvider(); provider.addSipListener(proxy); logger.debug("setup completed"); this.shootist.sendInvite(forkCount); Thread.sleep(69000); this.shootist.checkStateForDialogTimeoutEvent(); int ackCount = 0; for (Shootme shootme : this.shootme) { shootme.checkState(); if (shootme.isAckSeen()) { ackCount++; } } assertEquals("ACK count must be exactly 1", 1, ackCount); } finally { this.shootist.stop(); for (Shootme shootme : this.shootme) { shootme.stop(); } if (this.proxy != null) { this.proxy.stop(); } } } public void testSendInviteEarlyDialogTimeoutEventSeen() throws Exception { try { shootist = new Shootist(6050, 5070, "on", true); SipProvider shootistProvider = shootist.createSipProvider(); shootistProvider.addSipListener(shootist); Shootme shootmeUa = new Shootme(5080, true, 4000, 4000); SipProvider shootmeProvider = shootmeUa.createProvider(); shootmeProvider.addSipListener(shootmeUa); this.shootme.add(shootmeUa); // Never send an OK. Just send RINGING. shootmeUa = new Shootme(5081, true, 5000, -1); shootmeProvider = shootmeUa.createProvider(); shootmeProvider.addSipListener(shootmeUa); this.shootme.add(shootmeUa); this.proxy = new Proxy(5070, forkCount); SipProvider provider = proxy.createSipProvider(); provider.addSipListener(proxy); logger.debug("setup completed"); this.shootist.sendInvite(forkCount); Thread.sleep(185 * 1000); this.shootist.checkStateForDialogTimeoutEvent(); int ackCount = 0; for (Shootme shootme : this.shootme) { shootme.checkState(); if (shootme.isAckSeen()) { ackCount++; } } assertEquals("ACK count must be exactly 1", 1, ackCount); } finally { this.shootist.stop(); for (Shootme shootme : this.shootme) { shootme.stop(); } if ( this.proxy != null ) { this.proxy.stop(); } } } }