Search in sources :

Example 6 with EventListener

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

Example 7 with EventListener

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

Example 8 with EventListener

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);
}
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 9 with EventListener

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);
}
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 10 with EventListener

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

Aggregations

AppServer (org.mobicents.tools.sip.balancer.AppServer)37 EventListener (org.mobicents.tools.sip.balancer.EventListener)37 Test (org.junit.Test)35 SipURI (javax.sip.address.SipURI)16 SinglePointTest (org.mobicents.tools.sip.balancer.SinglePointTest)7 SipException (javax.sip.SipException)2 BalancerRunner (org.mobicents.tools.sip.balancer.BalancerRunner)2 ListeningPoint (javax.sip.ListeningPoint)1 Node (org.mobicents.tools.heartbeat.api.Node)1