use of org.mobicents.tools.sip.balancer.EventListener in project load-balancer by RestComm.
the class NoInternalAddressTest method testServerActingAsUASKillOneNodeFailoverResponse.
// private void _BAD_testInviteTx() throws Exception {
// ProtocolObjects senderProtocolObjects = new ProtocolObjects("forward-udp-sender",
// "gov.nist", "udp", false, null);
// TestSipListener sender = new TestSipListener(5080, 5060, senderProtocolObjects, true);
// SipProvider senderProvider = sender.createProvider();
//
//
// senderProvider.addSipListener(sender);
//
// senderProtocolObjects.start();
//
// String fromName = "forward-tcp-sender";
// String fromSipAddress = "sip-servlets.com";
// SipURI fromAddress = senderProtocolObjects.addressFactory.createSipURI(
// fromName, fromSipAddress);
//
// String toSipAddress = "sip-servlets.com";
// String toUser = "forward-receiver";
// SipURI toAddress = senderProtocolObjects.addressFactory.createSipURI(
// toUser, toSipAddress);
//
// sender.sendSipRequest("INVITE", fromAddress, toAddress, null, null, false);
// Thread.sleep(20000);
// }
@Test
public void testServerActingAsUASKillOneNodeFailoverResponse() throws Exception {
EventListener failureEventListener = new EventListener() {
boolean once = false;
@Override
public synchronized void uasAfterResponse(int statusCode, final AppServer source) {
if (!once) {
once = true;
new Thread() {
public void run() {
source.stop();
// source.sendCleanShutdownToBalancers();
}
}.start();
}
}
@Override
public void uasAfterRequestReceived(String method, AppServer source) {
// TODO Auto-generated method stub
}
@Override
public void uacAfterRequestSent(String method, AppServer source) {
// TODO Auto-generated method stub
}
@Override
public void uacAfterResponse(int statusCode, AppServer source) {
// TODO Auto-generated method stub
}
};
for (AppServer as : servers) as.setEventListener(failureEventListener);
shootist.callerSendsBye = true;
shootist.sendInitialInvite();
Thread.sleep(10000);
if (balancer.getNodes().size() != 1)
fail("Expected one dead node");
}
use of org.mobicents.tools.sip.balancer.EventListener in project load-balancer by RestComm.
the class NoInternalAddressTest method testASactingAsUAC.
@Test
public void testASactingAsUAC() throws Exception {
EventListener failureEventListener = new EventListener() {
@Override
public void uasAfterResponse(int statusCode, AppServer source) {
}
@Override
public void uasAfterRequestReceived(String method, AppServer source) {
// TODO Auto-generated method stub
}
@Override
public void uacAfterRequestSent(String method, AppServer source) {
// TODO Auto-generated method stub
}
@Override
public void uacAfterResponse(int statusCode, AppServer source) {
if (statusCode == 180) {
ringingAppServer = source;
// source.sendCleanShutdownToBalancers();
source.stop();
} else if (statusCode == 200) {
okAppServer = source;
}
}
};
for (AppServer as : servers) as.setEventListener(failureEventListener);
shootist.callerSendsBye = true;
String fromName = "sender";
String fromHost = "sip-servlets.com";
SipURI fromAddress = servers[0].protocolObjects.addressFactory.createSipURI(fromName, fromHost);
String toUser = "replaces";
String toHost = "sip-servlets.com";
SipURI toAddress = servers[0].protocolObjects.addressFactory.createSipURI(toUser, toHost);
SipURI ruri = servers[0].protocolObjects.addressFactory.createSipURI("usera", "127.0.0.1:5033");
ruri.setLrParam();
SipURI route = servers[0].protocolObjects.addressFactory.createSipURI("lbaddress_noInternalPort", "127.0.0.1:5060");
route.setParameter("node_host", "127.0.0.1");
route.setParameter("node_port", "4060");
route.setLrParam();
shootist.start();
// servers[0].sipListener.sendSipRequest("INVITE", fromAddress, toAddress, null, null, false);
servers[0].sipListener.sendSipRequest("INVITE", fromAddress, toAddress, null, route, false, null, null, ruri);
Thread.sleep(16000);
assertTrue(shootist.inviteRequest.getHeader(RecordRouteHeader.NAME).toString().contains("node_host"));
assertNotSame(ringingAppServer, okAppServer);
assertNotNull(ringingAppServer);
assertNotNull(okAppServer);
}
use of org.mobicents.tools.sip.balancer.EventListener in project load-balancer by RestComm.
the class RollingUpgradeTest method testCallDoesntGoBackToOriginalButUpgradedNode.
@Test
public void testCallDoesntGoBackToOriginalButUpgradedNode() {
EventListener failureEventListener = new EventListener() {
@Override
public void uasAfterResponse(int statusCode, AppServer source) {
}
@Override
public void uasAfterRequestReceived(String method, AppServer source) {
if (method.equals("INVITE")) {
inviteServer = source;
} else if (method.equals("ACK")) {
ackServer = source;
ackServer.stop();
ackServer.version = "2";
ackServer.start();
boolean keepOneOldVersionAlive = true;
for (AppServer srv : servers) {
if (srv != ackServer) {
if (keepOneOldVersionAlive && !srv.getNode().getProperties().get("udpPort").toString().endsWith("0")) {
// make sure it is not the first one to avoid some errors
keepOneOldVersionAlive = false;
oldVersionServer = srv;
System.out.println("We kept alive " + oldVersionServer);
} else {
// everyone else move to new version
srv.stop();
srv.version = "2";
srv.start();
}
}
}
} else {
byeServer = source;
}
}
@Override
public void uacAfterRequestSent(String method, AppServer source) {
// TODO Auto-generated method stub
}
@Override
public void uacAfterResponse(int statusCode, AppServer source) {
}
};
for (AppServer as : servers) as.setEventListener(failureEventListener);
for (BalancerRunner balancer : balancers) {
balancer.setNodeExpiration(15000);
}
shootist.peerHostPort = "127.0.0.1:9988";
shootist.callerSendsBye = true;
shootist.sendInitialInvite();
// servers[0].sendHeartbeat = false;
Helper.sleep(20000);
try {
shootist.sendBye();
} catch (SipException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Helper.sleep(2000);
assertEquals(3, externalIpLoadBalancer.sipMessageWithoutRetrans.size());
assertNotSame(inviteServer, byeServer);
assertSame(inviteServer, ackServer);
assertSame(byeServer, oldVersionServer);
// not same because invite server was upgraded before bye
assertNotSame(byeServer.version, inviteServer.version);
// same because not upgraded before ack
assertEquals(ackServer.version, inviteServer.version);
assertNotNull(byeServer);
assertNotNull(ackServer);
}
use of org.mobicents.tools.sip.balancer.EventListener in project load-balancer by RestComm.
the class SprayTwoPureConsistentHashTest method testSprayingRoundRobinSIPLBsUASCallConsistentHash.
@Test
public void testSprayingRoundRobinSIPLBsUASCallConsistentHash() throws Exception {
EventListener failureEventListener = new EventListener() {
@Override
public void uasAfterResponse(int statusCode, AppServer source) {
}
@Override
public void uasAfterRequestReceived(String method, AppServer source) {
if (method.equals("INVITE")) {
inviteServer = source;
} else if (method.equals("ACK")) {
ackServer = source;
} else {
byeServer = source;
}
}
@Override
public void uacAfterRequestSent(String method, AppServer source) {
// TODO Auto-generated method stub
}
@Override
public void uacAfterResponse(int statusCode, AppServer source) {
}
};
for (AppServer as : servers) as.setEventListener(failureEventListener);
for (BalancerRunner balancer : balancers) {
balancer.setNodeExpiration(15000);
}
Thread.sleep(1000);
shootist.peerHostPort = "127.0.0.1:9988";
shootist.callerSendsBye = true;
shootist.sendInitialInvite();
// servers[0].sendHeartbeat = false;
Thread.sleep(15000);
shootist.sendBye();
Thread.sleep(2000);
assertEquals(3, externalIpLoadBalancer.sipMessageWithoutRetrans.size());
assertSame(inviteServer, byeServer);
assertSame(inviteServer, ackServer);
assertNotNull(byeServer);
assertNotNull(ackServer);
}
use of org.mobicents.tools.sip.balancer.EventListener in project load-balancer by RestComm.
the class SprayingLoadBalancersWithNoInternalPortTest method testSprayingRoundRobinSIPLBsUASCallConsistentHash.
@Test
public void testSprayingRoundRobinSIPLBsUASCallConsistentHash() {
EventListener failureEventListener = new EventListener() {
@Override
public void uasAfterResponse(int statusCode, AppServer source) {
}
@Override
public void uasAfterRequestReceived(String method, AppServer source) {
if (method.equals("INVITE")) {
inviteServer = source;
} else if (method.equals("ACK")) {
ackServer = source;
} else {
byeServer = source;
}
}
@Override
public void uacAfterRequestSent(String method, AppServer source) {
// TODO Auto-generated method stub
}
@Override
public void uacAfterResponse(int statusCode, AppServer source) {
}
};
for (AppServer as : servers) as.setEventListener(failureEventListener);
shootist.peerHostPort = "127.0.0.1:9988";
shootist.callerSendsBye = true;
shootist.sendInitialInvite();
// servers[0].sendHeartbeat = false;
Helper.sleep(10000);
try {
shootist.sendBye();
} catch (SipException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Helper.sleep(2200);
assertEquals(3, externalIpLoadBalancer.sipMessageWithoutRetrans.size());
assertSame(inviteServer, byeServer);
assertSame(inviteServer, ackServer);
assertNotNull(byeServer);
assertNotNull(ackServer);
}
Aggregations