package org.mobicents.javax.media.mscontrol;
import java.io.Reader;
import java.io.StringReader;
import java.util.Properties;
import javax.media.mscontrol.MediaConfig;
import javax.media.mscontrol.MediaConfigException;
import javax.media.mscontrol.MediaSession;
import javax.media.mscontrol.MsControlException;
import javax.media.mscontrol.MsControlFactory;
import javax.media.mscontrol.Parameters;
import javax.media.mscontrol.SupportedFeatures;
import javax.media.mscontrol.mediagroup.MediaGroup;
import junit.framework.TestCase;
import org.mobicents.javax.media.mscontrol.resource.ExtendedParameter;
import org.mobicents.jsr309.mgcp.MgcpStackFactory;
/**
*
* @author amit bhayani
*
*/
public class MsControlFactoryImplTest extends TestCase {
private MsControlFactory msControlFactory = null;
private javax.media.mscontrol.spi.Driver driver = null;
public void setUp() throws Exception {
driver = new org.mobicents.javax.media.mscontrol.spi.DriverImpl();
msControlFactory = driver.getFactory(null);
}
public void tearDown() throws Exception {
MgcpStackFactory mgcpStackFactory = MgcpStackFactory.getInstance();
mgcpStackFactory.clearMgcpStackProvider(null);
}
public void testMediaSessionFactoryImpl() {
assertNotNull(msControlFactory);
}
public void testCreateParameters() {
Parameters parameters = msControlFactory.createParameters();
assertNotNull(parameters);
}
public void testcreateMediaSession() throws MsControlException {
MediaSession mediaSession = msControlFactory.createMediaSession();
assertNotNull(mediaSession);
Object o = new Object();
mediaSession.setAttribute("ATT1", o);
Object o1 = mediaSession.getAttribute("ATT1");
assertEquals(o, o1);
}
public void testPropertyChange() throws Exception {
// Property key for the Unique MGCP stack name for this application
String MGCP_STACK_NAME = "mgcp.stack.name";
// Property key for the IP address where CA MGCP Stack (SIP Servlet
// Container) is bound
String MGCP_STACK_IP = "mgcp.stack.ip";
// Property key for the port where CA MGCP Stack is bound
String MGCP_STACK_PORT = "mgcp.stack.port";
// Property key for the IP address where MGW MGCP Stack (MMS) is bound
String MGCP_PEER_IP = "mgcp.stack.peer.ip";
// Property key for the port where MGW MGCP Stack is bound
String MGCP_PEER_PORT = "mgcp.stack.peer.port";
String PEER_ADDRESS = "127.0.0.1";
String LOCAL_ADDRESS = "127.0.0.1";
String CA_PORT = "4727";
String MGW_PORT = "5427";
Properties property = new Properties();
property.put(MGCP_STACK_NAME, "Test");
property.put(MGCP_PEER_IP, PEER_ADDRESS);
property.put(MGCP_PEER_PORT, MGW_PORT);
property.put(MGCP_STACK_IP, LOCAL_ADDRESS);
property.put(MGCP_STACK_PORT, CA_PORT);
MsControlFactory msControlFactorytemp = driver.getFactory(property);
assertNotNull(msControlFactorytemp);
MgcpStackFactory mgcpStackFactory = MgcpStackFactory.getInstance();
mgcpStackFactory.clearMgcpStackProvider(property);
}
public void testMediaConfigCreation() throws MediaConfigException {
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><resource-container><parameter><key>ENDPOINT_LOCAL_NAME</key><value>/lla/laa/laa</value></parameter><player><signal><mgcp-event>ann</mgcp-event><mgcp-package>A</mgcp-package><on-endpoint>true</on-endpoint></signal><event><mgcp-event>oc</mgcp-event><mgcp-package>A</mgcp-package><on-endpoint>true</on-endpoint><media-event>PLAY_COMPLETED</media-event></event><event><mgcp-event>of</mgcp-event><mgcp-package>A</mgcp-package><on-endpoint>true</on-endpoint><media-event>PLAY_COMPLETED</media-event></event></player><signal-detector><signal><mgcp-event>dtmf0</mgcp-event><mgcp-package>D</mgcp-package><on-endpoint>false</on-endpoint></signal><event><mgcp-event>dtmf0</mgcp-event><mgcp-package>D</mgcp-package><on-endpoint>true</on-endpoint><media-event>SIGNAL_DETECTED</media-event></event></signal-detector></resource-container>";
Reader xmlDoc = new StringReader(xml);
MediaConfigImpl config = (MediaConfigImpl) msControlFactory.getMediaConfig(xmlDoc);
assertNotNull(config);
}
public void testMediaConfigClone() throws MediaConfigException {
MediaConfig playerConfig = msControlFactory.getMediaConfig(MediaGroup.PLAYER_RECORDER_SIGNALDETECTOR);
assertNotNull(playerConfig);
SupportedFeatures supFet = playerConfig.getSupportedFeatures();
assertNotNull(supFet);
Parameters pNew = msControlFactory.createParameters();
assertNotNull(pNew);
pNew.put(ExtendedParameter.ENDPOINT_LOCAL_NAME, "/thisis/new/endpointname/1");
MediaConfigImpl clone = (MediaConfigImpl) playerConfig.createCustomizedClone(pNew);
assertNotNull(clone);
assertEquals("/thisis/new/endpointname/1", (String) clone.getParameters().get(
ExtendedParameter.ENDPOINT_LOCAL_NAME));
assertTrue(clone.isPlayer());
assertTrue(clone.isRecorder());
assertTrue(clone.isSignaldetector());
assertFalse(clone.isSignalgenerator());
}
}