use of org.mobicents.tools.sip.balancer.BalancerRunner 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.BalancerRunner in project load-balancer by RestComm.
the class SprayTwoPureConsistentHashTest method prepBalancer.
private BalancerRunner prepBalancer(int id) {
BalancerRunner balancer = new BalancerRunner();
LoadBalancerConfiguration lbConfig = new LoadBalancerConfiguration();
int heartbeatPort = 2610 + id;
loadbalancers += "127.0.0.1:" + heartbeatPort;
if (id < balancers.length - 1)
loadbalancers += ",";
HeartbeatConfigHttp heartbeatConfig = new HeartbeatConfigHttp();
heartbeatConfig.setHeartbeatPort(heartbeatPort);
lbConfig.setHeartbeatConfiguration(heartbeatConfig);
lbConfig.getSipStackConfiguration().getSipStackProperies().setProperty("javax.sip.STACK_NAME", "SipBalancerForwarder" + id);
lbConfig.getSipConfiguration().getExternalLegConfiguration().setHost("127.0.0.1");
lbConfig.getSipConfiguration().getInternalLegConfiguration().setHost("127.0.0.1");
lbConfig.getSipConfiguration().getExternalLegConfiguration().setTcpPort(null);
lbConfig.getSipConfiguration().getExternalLegConfiguration().setUdpPort(5060 + id * 100);
lbConfig.getSipConfiguration().getInternalLegConfiguration().setUdpPort(5065 + id * 100);
lbConfig.getHttpConfiguration().setHttpPort(null);
lbConfig.getSmppConfiguration().setSmppPort(null);
lbConfig.getSipConfiguration().getAlgorithmConfiguration().setAlgorithmClass(PureConsistentHashBalancerAlgorithm.class.getName());
ArrayList<String> ipLoadBalancerAddressList = new ArrayList<String>();
ipLoadBalancerAddressList.add("127.0.0.1");
lbConfig.getSipConfiguration().getExternalLegConfiguration().setIpLoadBalancerAddress(ipLoadBalancerAddressList);
lbConfig.getSipConfiguration().getInternalLegConfiguration().setIpLoadBalancerAddress(ipLoadBalancerAddressList);
lbConfig.getSipConfiguration().getExternalLegConfiguration().setIpLoadBalancerUdpPort(9988);
lbConfig.getSipConfiguration().getInternalLegConfiguration().setIpLoadBalancerUdpPort(9922);
balancer.start(lbConfig);
return balancer;
}
use of org.mobicents.tools.sip.balancer.BalancerRunner 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.BalancerRunner in project load-balancer by RestComm.
the class SprayingLoadBalancersWithIPLBAddressInViaHeader method prepBalancer.
private BalancerRunner prepBalancer(int id) {
BalancerRunner balancer = new BalancerRunner();
LoadBalancerConfiguration lbConfig = new LoadBalancerConfiguration();
int heartbeatPort = 2610 + id;
loadbalancers += "127.0.0.1:" + heartbeatPort;
if (id < balancers.length - 1)
loadbalancers += ",";
HeartbeatConfigHttp heartbeatConfig = new HeartbeatConfigHttp();
heartbeatConfig.setHeartbeatPort(heartbeatPort);
lbConfig.setHeartbeatConfiguration(heartbeatConfig);
lbConfig.getSipConfiguration().setUseIpLoadBalancerAddressInViaHeaders(true);
lbConfig.getSipStackConfiguration().getSipStackProperies().setProperty("javax.sip.STACK_NAME", "SipBalancerForwarder" + id);
lbConfig.getSipConfiguration().getExternalLegConfiguration().setHost("127.0.0.1");
lbConfig.getSipConfiguration().getInternalLegConfiguration().setHost("127.0.0.1");
lbConfig.getSipConfiguration().getExternalLegConfiguration().setTcpPort(null);
lbConfig.getSipConfiguration().getExternalLegConfiguration().setUdpPort(5060 + id * 100);
lbConfig.getSipConfiguration().getInternalLegConfiguration().setUdpPort(5065 + id * 100);
lbConfig.getHttpConfiguration().setHttpPort(null);
lbConfig.getSmppConfiguration().setSmppPort(null);
ArrayList<String> ipLoadBalancerAddressList = new ArrayList<String>();
ipLoadBalancerAddressList.add("127.0.0.1");
lbConfig.getSipConfiguration().getAlgorithmConfiguration().setAlgorithmClass(HeaderConsistentHashBalancerAlgorithm.class.getName());
lbConfig.getSipConfiguration().getExternalLegConfiguration().setIpLoadBalancerAddress(ipLoadBalancerAddressList);
lbConfig.getSipConfiguration().getInternalLegConfiguration().setIpLoadBalancerAddress(ipLoadBalancerAddressList);
lbConfig.getSipConfiguration().getExternalLegConfiguration().setIpLoadBalancerUdpPort(9988);
lbConfig.getSipConfiguration().getInternalLegConfiguration().setIpLoadBalancerUdpPort(9922);
balancer.start(lbConfig);
return balancer;
}
use of org.mobicents.tools.sip.balancer.BalancerRunner in project load-balancer by RestComm.
the class SprayingLoadBalancersWithNoInternalPortTest method prepBalancer.
private BalancerRunner prepBalancer(int id) {
BalancerRunner balancer = new BalancerRunner();
LoadBalancerConfiguration lbConfig = new LoadBalancerConfiguration();
int heartbeatPort = 2610 + id;
loadbalancers += "127.0.0.1:" + heartbeatPort;
if (id < balancers.length - 1)
loadbalancers += ",";
HeartbeatConfigHttp heartbeatConfig = new HeartbeatConfigHttp();
heartbeatConfig.setHeartbeatPort(heartbeatPort);
lbConfig.setHeartbeatConfiguration(heartbeatConfig);
lbConfig.getSipStackConfiguration().getSipStackProperies().setProperty("javax.sip.STACK_NAME", "SipBalancerForwarder" + id);
lbConfig.getSipConfiguration().getExternalLegConfiguration().setHost("127.0.0.1");
lbConfig.getSipConfiguration().getExternalLegConfiguration().setTcpPort(null);
lbConfig.getSipConfiguration().getExternalLegConfiguration().setUdpPort(5060 + id * 100);
lbConfig.getHttpConfiguration().setHttpPort(null);
lbConfig.getSmppConfiguration().setSmppPort(null);
lbConfig.getSipConfiguration().getAlgorithmConfiguration().setAlgorithmClass(HeaderConsistentHashBalancerAlgorithm.class.getName());
ArrayList<String> ipLoadBalancerAddressList = new ArrayList<String>();
ipLoadBalancerAddressList.add("127.0.0.1");
lbConfig.getSipConfiguration().getExternalLegConfiguration().setIpLoadBalancerAddress(ipLoadBalancerAddressList);
lbConfig.getSipConfiguration().getExternalLegConfiguration().setIpLoadBalancerUdpPort(9988);
balancer.start(lbConfig);
return balancer;
}
Aggregations