Revision: 16162
Author: vladimir.ralev
Date: Tue Jan  4 21:05:17 2011
Log: Update Issue 2250
IPLB in via, single IPLB mode, 4 SIP LB nodes, IPLB stress testing + fixes
http://code.google.com/p/mobicents/source/detail?r=16162

Added:
 /trunk/tools/sip-balancer/jar/src/test/java/log4j.xml
/trunk/tools/sip-balancer/jar/src/test/java/org/mobicents/tools/sip/balancer/operation/NoInternalAddressTest.java /trunk/tools/sip-balancer/jar/src/test/java/org/mobicents/tools/sip/balancer/scalability/SprayingLoadBalancersWithIPLBAddressInViaHeader.java /trunk/tools/sip-balancer/jar/src/test/java/org/mobicents/tools/sip/balancer/scalability/SprayingLoadBalancersWithNoInternalPortTest.java
Deleted:
/trunk/tools/sip-balancer/jar/src/test/java/org/mobicents/tools/sip/balancer/log4j.xml
Modified:
/trunk/tools/sip-balancer/jar/src/main/java/org/mobicents/tools/sip/balancer/BalancerContext.java /trunk/tools/sip-balancer/jar/src/main/java/org/mobicents/tools/sip/balancer/BalancerRunner.java /trunk/tools/sip-balancer/jar/src/main/java/org/mobicents/tools/sip/balancer/SIPBalancerForwarder.java /trunk/tools/sip-balancer/jar/src/test/java/org/mobicents/tools/sip/balancer/NodeRegisterTest.java /trunk/tools/sip-balancer/jar/src/test/java/org/mobicents/tools/sip/balancer/TestSipListener.java /trunk/tools/sip-balancer/jar/src/test/java/org/mobicents/tools/sip/balancer/algorithms/HeaderConsistentHashAlgorithmTest.java /trunk/tools/sip-balancer/jar/src/test/java/org/mobicents/tools/sip/balancer/algorithms/WorstCaseAffinityTest.java /trunk/tools/sip-balancer/jar/src/test/java/org/mobicents/tools/sip/balancer/operation/InviteTransactionFailover.java /trunk/tools/sip-balancer/jar/src/test/java/org/mobicents/tools/sip/balancer/operation/Shootist.java /trunk/tools/sip-balancer/jar/src/test/java/org/mobicents/tools/sip/balancer/scalability/SprayingTwoLoadBalancersTest.java

=======================================
--- /dev/null
+++ /trunk/tools/sip-balancer/jar/src/test/java/log4j.xml Tue Jan 4 21:05:17 2011
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/";>
+ <appender name="rolling-file" class="org.apache.log4j.RollingFileAppender">
+    <param name="file" value="logs/sip-server.log"/>
+    <param name="MaxFileSize" value="2000KB"/>
+    <!-- Keep one backup file -->
+    <param name="MaxBackupIndex" value="20"/>
+    <layout class="org.apache.log4j.PatternLayout">
+      <param name="ConversionPattern" value="%d %p %t %l - %m%n"/>
+    </layout>
+  </appender>
+
+  <appender name="console" class="org.apache.log4j.ConsoleAppender">
+    <param name="Target" value="System.out"/>
+    <layout class="org.apache.log4j.PatternLayout">
+      <param name="ConversionPattern" value="%d %p %t - %m%n"/>
+    </layout>
+  </appender>
+  <root>
+    <priority value ="INFO" />
+    <appender-ref ref="console" />
+  </root>
+</log4j:configuration>
=======================================
--- /dev/null
+++ /trunk/tools/sip-balancer/jar/src/test/java/org/mobicents/tools/sip/balancer/operation/NoInternalAddressTest.java Tue Jan 4 21:05:17 2011
@@ -0,0 +1,225 @@
+package org.mobicents.tools.sip.balancer.operation;
+
+import java.util.Properties;
+
+import javax.sip.address.SipURI;
+import javax.sip.header.RecordRouteHeader;
+
+import junit.framework.TestCase;
+
+import org.mobicents.tools.sip.balancer.AppServer;
+import org.mobicents.tools.sip.balancer.BalancerRunner;
+import org.mobicents.tools.sip.balancer.EventListener;
+
+public class NoInternalAddressTest extends TestCase{
+       BalancerRunner balancer;
+       int numNodes = 2;
+       AppServer[] servers = new AppServer[numNodes];
+       Shootist shootist;
+
+
+       /* (non-Javadoc)
+        * @see junit.framework.TestCase#setUp()
+        */
+       protected void setUp() throws Exception {
+               super.setUp();
+               shootist = new Shootist();
+
+               balancer = new BalancerRunner();
+               Properties properties = new Properties();
+               properties.setProperty("javax.sip.STACK_NAME", 
"SipBalancerForwarder");
+               properties.setProperty("javax.sip.AUTOMATIC_DIALOG_SUPPORT", 
"off");
+               // You need 16 for logging traces. 32 for debug + traces.
+               // Your code will limp at 32 but it is best for debugging.
+               properties.setProperty("gov.nist.javax.sip.TRACE_LEVEL", 
"LOG4J");
+               properties.setProperty("gov.nist.javax.sip.DEBUG_LOG",
+                               "logs/sipbalancerforwarderdebug.txt");
+               properties.setProperty("gov.nist.javax.sip.SERVER_LOG",
+                               "logs/sipbalancerforwarder.xml");
+               properties.setProperty("gov.nist.javax.sip.THREAD_POOL_SIZE", 
"2");
+               properties.setProperty("gov.nist.javax.sip.REENTRANT_LISTENER", 
"true");
+ properties.setProperty("gov.nist.javax.sip.CANCEL_CLIENT_TRANSACTION_CHECKED", "false");
+
+               properties.setProperty("externalHost", "127.0.0.1");
+               properties.setProperty("internalPort", "5065");
+               properties.setProperty("externalPort", "5060");
+               balancer.start(properties);
+
+
+               for(int q=0;q<servers.length;q++) {
+ servers[q] = new AppServer("node" + q,4060+q, "127.0.0.1", 2000, 5060, 5060);
+                       servers[q].start();
+               }
+               Thread.sleep(5000);
+       }
+
+       /* (non-Javadoc)
+        * @see junit.framework.TestCase#tearDown()
+        */
+       protected void tearDown() throws Exception {
+               super.tearDown();
+               for(int q=0;q<servers.length;q++) {
+                       servers[q].stop();
+               }
+               shootist.stop();
+               balancer.stop();
+       }
+
+       public void testFailDetection() throws Exception {
+
+                       String[] nodes = balancer.getNodeList();
+                       assertEquals(numNodes, nodes.length);
+                       servers[0].sendHeartbeat = false;
+                       Thread.sleep(10000);
+                       nodes = balancer.getNodeList();
+                       assertEquals(numNodes-1, nodes.length);
+       }
+
+       public void testAllNodesDead() throws Exception {
+               for(AppServer as:servers) {
+                       as.sendCleanShutdownToBalancers();
+                       as.sendHeartbeat=false;
+               }
+               Thread.sleep(1000);
+               shootist.callerSendsBye = true;
+               shootist.sendInitialInvite();
+
+               Thread.sleep(5000);
+               assertEquals(500, shootist.responses.get(0).getStatusCode());
+       }
+
+//     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);
+//     }
+
+ 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;
+                                       System.out.println("HERE " + once);
+                                       new Thread() {
+                                               public void run() {
+                                                       
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");
+       }
+       AppServer ringingAppServer;
+       AppServer okAppServer;
+       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();
+                               } else {
+                                       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);
+       }
+
+}
=======================================
--- /dev/null
+++ /trunk/tools/sip-balancer/jar/src/test/java/org/mobicents/tools/sip/balancer/scalability/SprayingLoadBalancersWithIPLBAddressInViaHeader.java Tue Jan 4 21:05:17 2011
@@ -0,0 +1,158 @@
+package org.mobicents.tools.sip.balancer.scalability;
+
+import java.util.Properties;
+
+import javax.sip.SipException;
+
+import junit.framework.TestCase;
+
+import org.mobicents.tools.sip.balancer.AppServer;
+import org.mobicents.tools.sip.balancer.BalancerRunner;
+import org.mobicents.tools.sip.balancer.EventListener;
+import org.mobicents.tools.sip.balancer.HeaderConsistentHashBalancerAlgorithm;
+import org.mobicents.tools.sip.balancer.UDPPacketForwarder;
+import org.mobicents.tools.sip.balancer.operation.Shootist;
+
+public class SprayingLoadBalancersWithIPLBAddressInViaHeader extends TestCase {
+       int numBalancers = 4;
+       BalancerRunner[] balancers = new BalancerRunner[numBalancers];
+       int numNodes = 10;
+       AppServer[] servers = new AppServer[numNodes];
+       Shootist shootist;
+
+       UDPPacketForwarder externalIpLoadBalancer;
+       UDPPacketForwarder internalIpLoadBalancer;
+
+       private BalancerRunner prepBalancer(String id) {
+               BalancerRunner balancer = new BalancerRunner();
+               Properties properties = new Properties();
+ properties.setProperty("javax.sip.STACK_NAME", "SipBalancerForwarder" + id);
+               properties.setProperty("javax.sip.AUTOMATIC_DIALOG_SUPPORT", 
"off");
+               // You need 16 for logging traces. 32 for debug + traces.
+               // Your code will limp at 32 but it is best for debugging.
+               properties.setProperty("gov.nist.javax.sip.TRACE_LEVEL", 
"LOG4J");
+               properties.setProperty("gov.nist.javax.sip.DEBUG_LOG",
+                               "logs/sipbalancerforwarderdebug.txt");
+               properties.setProperty("gov.nist.javax.sip.SERVER_LOG",
+                               "logs/sipbalancerforwarder.xml");
+               properties.setProperty("gov.nist.javax.sip.THREAD_POOL_SIZE", 
"2");
+               properties.setProperty("gov.nist.javax.sip.REENTRANT_LISTENER", 
"true");
+ properties.setProperty("gov.nist.javax.sip.CANCEL_CLIENT_TRANSACTION_CHECKED", "false");
+
+               properties.setProperty("useIpLoadBalancerAddressInViaHeaders", 
"true");
+               properties.setProperty("externalHost", "127.0.0.1");
+               properties.setProperty("internalHost", "127.0.0.1");
+               properties.setProperty("internalPort", "5"+id+"65");
+               properties.setProperty("externalPort", "5"+id+"60");
+               properties.setProperty("rmiRegistryPort", "2" + id +"00");
+               properties.setProperty("httpPort", "2" + id +"80");
+               properties.setProperty("jmxHtmlAdapterPort", "8" + id +"00");
+ properties.setProperty("algorithmClass", HeaderConsistentHashBalancerAlgorithm.class.getName());
+               properties.setProperty("externalIpLoadBalancerAddress", 
"127.0.0.1");
+               properties.setProperty("externalIpLoadBalancerPort", "9988");
+               properties.setProperty("internalIpLoadBalancerAddress", 
"127.0.0.1");
+               properties.setProperty("internalIpLoadBalancerPort", "9922");
+               balancer.start(properties);
+               return balancer;
+       }
+
+       protected void setUp() throws Exception {
+               super.setUp();
+               shootist = new Shootist();
+               String balancerString = "";
+               String externalIpLBString = "";
+               String internalIpLBString = "";
+               for(Integer q=0;q<numBalancers;q++) {
+                       balancers[q] = prepBalancer(q.toString());
+                       balancerString += "127.0.0.1:"+2+q+"00,";
+                       externalIpLBString += "127.0.0.1:"+5+q+"60,";
+                       internalIpLBString += "127.0.0.1:"+5+q+"65,";
+               }
+               for(int q=0;q<servers.length;q++) {
+                       servers[q] = new AppServer("node" + q,4060+q);
+                       servers[q].start();
+                       servers[q].setBalancers(balancerString);
+               }
+
+ externalIpLoadBalancer = new UDPPacketForwarder(9988, externalIpLBString, "127.0.0.1");
+               externalIpLoadBalancer.start();
+ internalIpLoadBalancer = new UDPPacketForwarder(9922, internalIpLBString, "127.0.0.1");
+               internalIpLoadBalancer.start();
+               Thread.sleep(5000);
+       }
+       /* (non-Javadoc)
+        * @see junit.framework.TestCase#tearDown()
+        */
+       protected void tearDown() throws Exception {
+               super.tearDown();
+               externalIpLoadBalancer.stop();
+               internalIpLoadBalancer.stop();
+               for(int q=0;q<servers.length;q++) {
+                       servers[q].stop();
+               }
+               shootist.stop();
+               for(int q=0;q<numBalancers;q++) {
+                       balancers[q].stop();
+               }
+       }
+
+       AppServer inviteServer,ackServer,byeServer;
+
+ 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);
+               shootist.peerHostPort="127.0.0.1:9988";
+               shootist.callerSendsBye=true;
+               shootist.sendInitialInvite();
+               //servers[0].sendHeartbeat = false;
+               Thread.sleep(12000);
+               shootist.sendBye();
+               Thread.sleep(2000);
+
+               assertEquals(3, 
externalIpLoadBalancer.sipMessageWithoutRetrans.size());
+               assertSame(inviteServer, byeServer);
+               assertSame(inviteServer, ackServer);
+               assertNotNull(byeServer);
+               assertNotNull(ackServer);
+       }
+       public void testSprayingMultipleIndialogMessages() throws Exception {
+               shootist.callerSendsBye=true;
+               shootist.sendInitialInvite();
+               Thread.sleep(8000);
+               for(int q=0;q<10;q++){
+               shootist.sendMessage();Thread.sleep(600);
+               }
+               Thread.sleep(600);
+               assertTrue(shootist.responses.size()>10);
+       }
+
+}
=======================================
--- /dev/null
+++ /trunk/tools/sip-balancer/jar/src/test/java/org/mobicents/tools/sip/balancer/scalability/SprayingLoadBalancersWithNoInternalPortTest.java Tue Jan 4 21:05:17 2011
@@ -0,0 +1,153 @@
+package org.mobicents.tools.sip.balancer.scalability;
+
+import java.util.Properties;
+
+import javax.sip.SipException;
+
+import junit.framework.TestCase;
+
+import org.mobicents.tools.sip.balancer.AppServer;
+import org.mobicents.tools.sip.balancer.BalancerRunner;
+import org.mobicents.tools.sip.balancer.EventListener;
+import org.mobicents.tools.sip.balancer.HeaderConsistentHashBalancerAlgorithm;
+import org.mobicents.tools.sip.balancer.UDPPacketForwarder;
+import org.mobicents.tools.sip.balancer.operation.Shootist;
+
+public class SprayingLoadBalancersWithNoInternalPortTest extends TestCase {
+       int numBalancers = 2;
+       BalancerRunner[] balancers = new BalancerRunner[numBalancers];
+       int numNodes = 10;
+       AppServer[] servers = new AppServer[numNodes];
+       Shootist shootist;
+
+       UDPPacketForwarder externalIpLoadBalancer;
+       UDPPacketForwarder internalIpLoadBalancer;
+
+       private BalancerRunner prepBalancer(String id) {
+               BalancerRunner balancer = new BalancerRunner();
+               Properties properties = new Properties();
+ properties.setProperty("javax.sip.STACK_NAME", "SipBalancerForwarder" + id);
+               properties.setProperty("javax.sip.AUTOMATIC_DIALOG_SUPPORT", 
"off");
+               // You need 16 for logging traces. 32 for debug + traces.
+               // Your code will limp at 32 but it is best for debugging.
+               properties.setProperty("gov.nist.javax.sip.TRACE_LEVEL", 
"LOG4J");
+               properties.setProperty("gov.nist.javax.sip.DEBUG_LOG",
+                               "logs/sipbalancerforwarderdebug.txt");
+               properties.setProperty("gov.nist.javax.sip.SERVER_LOG",
+                               "logs/sipbalancerforwarder.xml");
+               properties.setProperty("gov.nist.javax.sip.THREAD_POOL_SIZE", 
"2");
+               properties.setProperty("gov.nist.javax.sip.REENTRANT_LISTENER", 
"true");
+ properties.setProperty("gov.nist.javax.sip.CANCEL_CLIENT_TRANSACTION_CHECKED", "false");
+
+               properties.setProperty("externalHost", "127.0.0.1");
+               properties.setProperty("externalPort", "5"+id+"60");
+               properties.setProperty("rmiRegistryPort", "2" + id +"00");
+               properties.setProperty("httpPort", "2" + id +"80");
+               properties.setProperty("jmxHtmlAdapterPort", "8" + id +"00");
+ properties.setProperty("algorithmClass", HeaderConsistentHashBalancerAlgorithm.class.getName());
+               properties.setProperty("externalIpLoadBalancerAddress", 
"127.0.0.1");
+               properties.setProperty("externalIpLoadBalancerPort", "9988");
+               balancer.start(properties);
+               return balancer;
+       }
+
+       protected void setUp() throws Exception {
+               super.setUp();
+               shootist = new Shootist();
+               String balancerString = "";
+               String externalIpLBString = "";
+               String internalIpLBString = "";
+               for(Integer q=0;q<numBalancers;q++) {
+                       balancers[q] = prepBalancer(q.toString());
+                       balancerString += "127.0.0.1:"+2+q+"00,";
+                       externalIpLBString += "127.0.0.1:"+5+q+"60,";
+                       internalIpLBString += "127.0.0.1:"+5+q+"65,";
+               }
+               for(int q=0;q<servers.length;q++) {
+                       servers[q] = new AppServer("node" + q,4060+q);
+                       servers[q].start();
+                       servers[q].setBalancers(balancerString);
+               }
+
+ externalIpLoadBalancer = new UDPPacketForwarder(9988, externalIpLBString, "127.0.0.1");
+               externalIpLoadBalancer.start();
+ internalIpLoadBalancer = new UDPPacketForwarder(9922, internalIpLBString, "127.0.0.1");
+               internalIpLoadBalancer.start();
+               Thread.sleep(5000);
+       }
+       /* (non-Javadoc)
+        * @see junit.framework.TestCase#tearDown()
+        */
+       protected void tearDown() throws Exception {
+               super.tearDown();
+               externalIpLoadBalancer.stop();
+               internalIpLoadBalancer.stop();
+               for(int q=0;q<servers.length;q++) {
+                       servers[q].stop();
+               }
+               shootist.stop();
+               for(int q=0;q<numBalancers;q++) {
+                       balancers[q].stop();
+               }
+       }
+
+       AppServer inviteServer,ackServer,byeServer;
+
+ 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);
+               shootist.peerHostPort="127.0.0.1:9988";
+               shootist.callerSendsBye=true;
+               shootist.sendInitialInvite();
+               //servers[0].sendHeartbeat = false;
+               Thread.sleep(12000);
+               shootist.sendBye();
+               Thread.sleep(2200);
+
+               assertEquals(3, 
externalIpLoadBalancer.sipMessageWithoutRetrans.size());
+               assertSame(inviteServer, byeServer);
+               assertSame(inviteServer, ackServer);
+               assertNotNull(byeServer);
+               assertNotNull(ackServer);
+       }
+       public void testSprayingMultipleIndialogMessages() throws Exception {
+               shootist.callerSendsBye=true;
+               shootist.sendInitialInvite();
+               Thread.sleep(8000);
+               for(int q=0;q<10;q++){
+               shootist.sendMessage();Thread.sleep(600);
+               }
+               Thread.sleep(600);
+               assertTrue(shootist.responses.size()>10);
+       }
+
+}
=======================================
--- /trunk/tools/sip-balancer/jar/src/test/java/org/mobicents/tools/sip/balancer/log4j.xml Sun Jan 2 22:44:18 2011
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
-
-<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/";>
- <appender name="rolling-file" class="org.apache.log4j.RollingFileAppender">
-    <param name="file" value="logs/sip-server.log"/>
-    <param name="MaxFileSize" value="2000KB"/>
-    <!-- Keep one backup file -->
-    <param name="MaxBackupIndex" value="20"/>
-    <layout class="org.apache.log4j.PatternLayout">
-      <param name="ConversionPattern" value="%d %p %t %l - %m%n"/>
-    </layout>
-  </appender>
-
-  <appender name="console" class="org.apache.log4j.ConsoleAppender">
-    <param name="Target" value="System.out"/>
-    <layout class="org.apache.log4j.PatternLayout">
-      <param name="ConversionPattern" value="%d %p %t %l - %m%n"/>
-    </layout>
-  </appender>
-  <root>
-    <priority value ="DEBUG" />
-    <appender-ref ref="console" />
-  </root>
-</log4j:configuration>
=======================================
--- /trunk/tools/sip-balancer/jar/src/main/java/org/mobicents/tools/sip/balancer/BalancerContext.java Sun Jan 2 22:44:18 2011 +++ /trunk/tools/sip-balancer/jar/src/main/java/org/mobicents/tools/sip/balancer/BalancerContext.java Tue Jan 4 21:05:17 2011
@@ -71,7 +71,7 @@
final Map<String, AtomicLong> responsesProcessedByStatusCode = new ConcurrentHashMap<String, AtomicLong>();

     public boolean isTwoEntrypoints() {
-       return internalPort>0;
+       return internalPort>0 && internalHost != null;
     }

     public BalancerContext() {
=======================================
--- /trunk/tools/sip-balancer/jar/src/main/java/org/mobicents/tools/sip/balancer/BalancerRunner.java Sun Jan 2 22:44:18 2011 +++ /trunk/tools/sip-balancer/jar/src/main/java/org/mobicents/tools/sip/balancer/BalancerRunner.java Tue Jan 4 21:05:17 2011
@@ -75,6 +75,12 @@

        public void start(Properties properties) {
                String ipAddress = properties.getProperty(HOST_PROP);
+               if(ipAddress == null) {
+                       ipAddress = properties.getProperty("internalHost");
+               }
+               if(ipAddress == null) {
+                       ipAddress = properties.getProperty("externalHost");
+               }

                InetAddress addr = null;
                try {
=======================================
--- /trunk/tools/sip-balancer/jar/src/main/java/org/mobicents/tools/sip/balancer/SIPBalancerForwarder.java Sun Jan 2 22:44:18 2011 +++ /trunk/tools/sip-balancer/jar/src/main/java/org/mobicents/tools/sip/balancer/SIPBalancerForwarder.java Tue Jan 4 21:05:17 2011
@@ -1043,7 +1043,7 @@
                if(balancerRunner.balancerContext.isTwoEntrypoints()) {
fromServer = sipProvider.equals(balancerRunner.balancerContext.internalSipProvider);
                } else {
-                       fromServer = getSourceNode(response) != null;
+                       fromServer = getSourceNode(response) == null;
                }

                if(fromServer) {
=======================================
--- /trunk/tools/sip-balancer/jar/src/test/java/org/mobicents/tools/sip/balancer/NodeRegisterTest.java Wed Nov 3 09:00:04 2010 +++ /trunk/tools/sip-balancer/jar/src/test/java/org/mobicents/tools/sip/balancer/NodeRegisterTest.java Tue Jan 4 21:05:17 2011
@@ -49,14 +49,6 @@
        protected void tearDown() throws Exception {
                super.tearDown();
        }
-
- public void testNodeRegistryStartupShutdown2x() throws RemoteException, UnknownHostException { - NodeRegisterImpl reg = new NodeRegisterImpl(InetAddress.getByName("127.0.0.1"));
-               reg.startRegistry(2000);
-               reg.stopRegistry();
-               reg.startRegistry(2000);
-               reg.stopRegistry();
-       }

        public void testNodeTimeouts() throws RemoteException, Exception {
                BalancerRunner balancerRunner = new BalancerRunner();
=======================================
--- /trunk/tools/sip-balancer/jar/src/test/java/org/mobicents/tools/sip/balancer/TestSipListener.java Mon Nov 15 14:36:51 2010 +++ /trunk/tools/sip-balancer/jar/src/test/java/org/mobicents/tools/sip/balancer/TestSipListener.java Tue Jan 4 21:05:17 2011
@@ -1040,6 +1040,7 @@
                        }
                } catch (Exception ex) {
                        logger.error("unexpected exception", ex);
+                       throw new RuntimeException(ex);
                }
        }

=======================================
--- /trunk/tools/sip-balancer/jar/src/test/java/org/mobicents/tools/sip/balancer/algorithms/HeaderConsistentHashAlgorithmTest.java Tue Dec 21 10:50:49 2010 +++ /trunk/tools/sip-balancer/jar/src/test/java/org/mobicents/tools/sip/balancer/algorithms/HeaderConsistentHashAlgorithmTest.java Tue Jan 4 21:05:17 2011
@@ -112,7 +112,9 @@

                shootist.callerSendsBye = true;
                shootist.sendInitialInvite();
-               Thread.sleep(11000);
+               Thread.sleep(9000);
+               shootist.sendBye();
+               Thread.sleep(2000);
                assertNotNull(invite);
                assertNotNull(bye);
        }
=======================================
--- /trunk/tools/sip-balancer/jar/src/test/java/org/mobicents/tools/sip/balancer/algorithms/WorstCaseAffinityTest.java Sun Dec 19 18:42:21 2010 +++ /trunk/tools/sip-balancer/jar/src/test/java/org/mobicents/tools/sip/balancer/algorithms/WorstCaseAffinityTest.java Tue Jan 4 21:05:17 2011
@@ -110,7 +110,9 @@

                shootist.callerSendsBye = true;
                shootist.sendInitialInvite();
-               Thread.sleep(11000);
+               Thread.sleep(9000);
+               shootist.sendBye();
+               Thread.sleep(2000);
                if(invite == null) TestCase.fail("INVITE not seen");
                if(bye == null) TestCase.fail("BYE not seen");
        }
=======================================
--- /trunk/tools/sip-balancer/jar/src/test/java/org/mobicents/tools/sip/balancer/operation/InviteTransactionFailover.java Tue Dec 21 10:50:49 2010 +++ /trunk/tools/sip-balancer/jar/src/test/java/org/mobicents/tools/sip/balancer/operation/InviteTransactionFailover.java Tue Jan 4 21:05:17 2011
@@ -123,10 +123,15 @@

        public void testSimpleShutdown() throws Exception {
                EventListener failureEventListener = new EventListener() {
-
+                       boolean once = false;
                        @Override
-                       public void uasAfterResponse(int statusCode, AppServer 
source) {
-                               source.sendCleanShutdownToBalancers();
+ public synchronized void uasAfterResponse(int statusCode, AppServer source) {
+                               if(!once) {
+                                       once = true;
+                                       System.out.println("HERE " + once);
+                                       source.sendCleanShutdownToBalancers();
+
+                               }

                        }

=======================================
--- /trunk/tools/sip-balancer/jar/src/test/java/org/mobicents/tools/sip/balancer/operation/Shootist.java Sun Jan 2 22:44:18 2011 +++ /trunk/tools/sip-balancer/jar/src/test/java/org/mobicents/tools/sip/balancer/operation/Shootist.java Tue Jan 4 21:05:17 2011
@@ -127,7 +127,6 @@
        }
     }
     public void processAck(Request request, ServerTransaction stx) {
-       new Timer().schedule(new ByeTask(dialog), 5000);
     }

     public void processRequest(RequestEvent requestReceivedEvent) {
@@ -202,7 +201,6 @@
         System.out.println("Response received : Status Code = "
                 + response.getStatusCode() + " " + cseq);

-
         if (tid == null) {

             // RFC3261: MUST respond to every 2xx
@@ -218,10 +216,7 @@
             return;
         }
         // If the caller is supposed to send the bye
-        if ( callerSendsBye && !byeTaskRunning) {
-            byeTaskRunning = true;
-            new Timer().schedule(new ByeTask(dialog), 4000) ;
-        }
+
         System.out.println("transaction state is " + tid.getState());
         System.out.println("Dialog = " + tid.getDialog());
System.out.println("Dialog State is " + tid.getDialog().getState());
@@ -462,6 +457,16 @@
             fail("Unxpected exception ");
         }
     }
+
+    public void sendMessage() throws SipException {
+       Request r = dialog.createRequest("MESSAGE");
+       dialog.sendRequest(sipProvider.getNewClientTransaction(r));
+    }
+
+    public void sendBye() throws SipException {
+       Request r = dialog.createRequest("BYE");
+       dialog.sendRequest(sipProvider.getNewClientTransaction(r));
+    }



@@ -475,8 +480,8 @@
     public void processTransactionTerminated(
             TransactionTerminatedEvent transactionTerminatedEvent) {

- System.out.println("Transaction terminated event recieved " + transactionTerminatedEvent.getClientTransaction().getRequest());
-        throw new RuntimeException();
+
+
     }

     public void processDialogTerminated(
=======================================
--- /trunk/tools/sip-balancer/jar/src/test/java/org/mobicents/tools/sip/balancer/scalability/SprayingTwoLoadBalancersTest.java Sun Jan 2 22:44:18 2011 +++ /trunk/tools/sip-balancer/jar/src/test/java/org/mobicents/tools/sip/balancer/scalability/SprayingTwoLoadBalancersTest.java Tue Jan 4 21:05:17 2011
@@ -2,8 +2,7 @@

 import java.util.Properties;

-import javax.sip.address.SipURI;
-import javax.sip.header.RecordRouteHeader;
+import javax.sip.SipException;

 import junit.framework.TestCase;

@@ -135,7 +134,9 @@
                shootist.callerSendsBye=true;
                shootist.sendInitialInvite();
                //servers[0].sendHeartbeat = false;
-               Thread.sleep(14000);
+               Thread.sleep(12000);
+               shootist.sendBye();
+               Thread.sleep(2000);

                assertEquals(3, 
externalIpLoadBalancer.sipMessageWithoutRetrans.size());
                assertSame(inviteServer, byeServer);
@@ -143,5 +144,15 @@
                assertNotNull(byeServer);
                assertNotNull(ackServer);
        }
+       public void testSprayingMultipleIndialogMessages() throws Exception {
+               shootist.callerSendsBye=true;
+               shootist.sendInitialInvite();
+               Thread.sleep(8000);
+               for(int q=0;q<10;q++){
+               shootist.sendMessage();Thread.sleep(600);
+               }
+               Thread.sleep(600);
+               assertTrue(shootist.responses.size()>10);
+       }

 }

Reply via email to