Search in sources :

Example 16 with BalancerRunner

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);
}
Also used : AppServer(org.mobicents.tools.sip.balancer.AppServer) BalancerRunner(org.mobicents.tools.sip.balancer.BalancerRunner) EventListener(org.mobicents.tools.sip.balancer.EventListener) SipException(javax.sip.SipException) Test(org.junit.Test)

Example 17 with BalancerRunner

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;
}
Also used : BalancerRunner(org.mobicents.tools.sip.balancer.BalancerRunner) LoadBalancerConfiguration(org.mobicents.tools.configuration.LoadBalancerConfiguration) ArrayList(java.util.ArrayList) HeartbeatConfigHttp(org.mobicents.tools.heartbeat.impl.HeartbeatConfigHttp) PureConsistentHashBalancerAlgorithm(org.mobicents.tools.sip.balancer.PureConsistentHashBalancerAlgorithm) ListeningPoint(javax.sip.ListeningPoint)

Example 18 with BalancerRunner

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);
}
Also used : AppServer(org.mobicents.tools.sip.balancer.AppServer) BalancerRunner(org.mobicents.tools.sip.balancer.BalancerRunner) EventListener(org.mobicents.tools.sip.balancer.EventListener) Test(org.junit.Test)

Example 19 with BalancerRunner

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;
}
Also used : BalancerRunner(org.mobicents.tools.sip.balancer.BalancerRunner) LoadBalancerConfiguration(org.mobicents.tools.configuration.LoadBalancerConfiguration) ArrayList(java.util.ArrayList) HeaderConsistentHashBalancerAlgorithm(org.mobicents.tools.sip.balancer.HeaderConsistentHashBalancerAlgorithm) HeartbeatConfigHttp(org.mobicents.tools.heartbeat.impl.HeartbeatConfigHttp) ListeningPoint(javax.sip.ListeningPoint)

Example 20 with BalancerRunner

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;
}
Also used : BalancerRunner(org.mobicents.tools.sip.balancer.BalancerRunner) LoadBalancerConfiguration(org.mobicents.tools.configuration.LoadBalancerConfiguration) ArrayList(java.util.ArrayList) HeaderConsistentHashBalancerAlgorithm(org.mobicents.tools.sip.balancer.HeaderConsistentHashBalancerAlgorithm) HeartbeatConfigHttp(org.mobicents.tools.heartbeat.impl.HeartbeatConfigHttp) ListeningPoint(javax.sip.ListeningPoint)

Aggregations

BalancerRunner (org.mobicents.tools.sip.balancer.BalancerRunner)75 LoadBalancerConfiguration (org.mobicents.tools.configuration.LoadBalancerConfiguration)50 BeforeClass (org.junit.BeforeClass)34 ListeningPoint (javax.sip.ListeningPoint)30 Before (org.junit.Before)26 AppServer (org.mobicents.tools.sip.balancer.AppServer)26 Shootist (org.mobicents.tools.sip.balancer.operation.Shootist)25 SmppChannelException (com.cloudhopper.smpp.type.SmppChannelException)21 DefaultSmppServer (com.cloudhopper.smpp.impl.DefaultSmppServer)19 WorstCaseUdpTestAffinityAlgorithm (org.mobicents.tools.sip.balancer.WorstCaseUdpTestAffinityAlgorithm)8 ArrayList (java.util.ArrayList)7 Test (org.junit.Test)6 UserBasedAlgorithm (org.mobicents.tools.sip.balancer.UserBasedAlgorithm)6 HeartbeatConfigHttp (org.mobicents.tools.heartbeat.impl.HeartbeatConfigHttp)5 HeaderConsistentHashBalancerAlgorithm (org.mobicents.tools.sip.balancer.HeaderConsistentHashBalancerAlgorithm)5 SinglePointTest (org.mobicents.tools.sip.balancer.SinglePointTest)4 SipException (javax.sip.SipException)3 HeartbeatConfig (org.mobicents.tools.heartbeat.api.HeartbeatConfig)2 HeartbeatConfigRmi (org.mobicents.tools.heartbeat.rmi.HeartbeatConfigRmi)2 ActiveStandbyAlgorithm (org.mobicents.tools.sip.balancer.ActiveStandbyAlgorithm)2