Author: hiranya
Date: Sun Jul 21 23:05:04 2013
New Revision: 1505500

URL: http://svn.apache.org/r1505500
Log:
Adding sample250 (JMS to HTTP switching) to the integration test suite.

Added:
    
synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/MessageCounter.java
    
synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/tests/Sample250.java
    synapse/trunk/java/modules/integration/src/test/resources/sample250.xml
Modified:
    
synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/Axis2BackEndServerController.java
    
synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/SampleConfigConstants.java
    
synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/SynapseTestCase.java
    
synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/TestSamplesHandlerSuite.java
    
synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/clients/JMSSampleClient.java
    
synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/config/Axis2ServerConfiguration.java

Modified: 
synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/Axis2BackEndServerController.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/Axis2BackEndServerController.java?rev=1505500&r1=1505499&r2=1505500&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/Axis2BackEndServerController.java
 (original)
+++ 
synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/Axis2BackEndServerController.java
 Sun Jul 21 23:05:04 2013
@@ -6,10 +6,13 @@ import org.apache.axis2.context.Configur
 import org.apache.axis2.context.ConfigurationContextFactory;
 import org.apache.axis2.description.TransportInDescription;
 import org.apache.axis2.engine.ListenerManager;
+import org.apache.axis2.engine.Phase;
+import org.apache.axis2.phaseresolver.PhaseMetadata;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.synapse.samples.framework.config.Axis2ServerConfiguration;
 
+import java.util.List;
 import java.util.concurrent.CountDownLatch;
 
 /**
@@ -27,6 +30,7 @@ public class Axis2BackEndServerControlle
     private Axis2ServerConfiguration configuration;
     private CountDownLatch cdLatch;
     private Exception processException;
+    private MessageCounter counter;
 
     public Axis2BackEndServerController(String serverName,
                                         Axis2ServerConfiguration 
configuration) {
@@ -61,6 +65,7 @@ public class Axis2BackEndServerControlle
 
     public boolean stop() {
         if (serverThread.isRunning) {
+            counter = null;
             serverThread.isRunning = false;
             try {
                 cdLatch = new CountDownLatch(1);
@@ -72,6 +77,13 @@ public class Axis2BackEndServerControlle
         return true;
     }
 
+    public int getMessageCount(String service, String operation) {
+        if (counter != null) {
+            return counter.getCount(service, operation);
+        }
+        return -1;
+    }
+
     class BackEndServerThread extends Thread {
 
         public boolean isRunning = false;
@@ -126,6 +138,17 @@ public class Axis2BackEndServerControlle
                     clusteringAgent.init();
                 }
 
+                if (configuration.isCounterEnabled()) {
+                    log.info("Engaging server side message counter");
+                    List<Phase> phases = 
configContext.getAxisConfiguration().getInFlowPhases();
+                    for (Phase phase : phases) {
+                        if 
(PhaseMetadata.PHASE_DISPATCH.equals(phase.getName())) {
+                            counter = new MessageCounter();
+                            phase.addHandler(counter);
+                            break;
+                        }
+                    }
+                }
 
                 listenerManager.startSystem(configContext);
                 isRunning = true;
@@ -135,7 +158,7 @@ public class Axis2BackEndServerControlle
             }
             cdLatch.countDown();
 
-            log.info("ServerThread: Wait until test are finished");
+            log.info("ServerThread: Wait until tests are finished");
             while (isRunning) {
                 //wait
                 try {

Added: 
synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/MessageCounter.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/MessageCounter.java?rev=1505500&view=auto
==============================================================================
--- 
synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/MessageCounter.java
 (added)
+++ 
synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/MessageCounter.java
 Sun Jul 21 23:05:04 2013
@@ -0,0 +1,50 @@
+package org.apache.synapse.samples.framework;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.handlers.AbstractHandler;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
+
+public class MessageCounter extends AbstractHandler {
+
+    private Map<String,AtomicInteger> counter = new HashMap<String, 
AtomicInteger>();
+
+    public InvocationResponse invoke(MessageContext msgContext) throws 
AxisFault {
+        String service = "_anon_";
+        String operation = "_anon_";
+        if (msgContext.getAxisService() != null) {
+            service = msgContext.getAxisService().getName();
+        }
+        if (msgContext.getAxisOperation() != null) {
+            operation = msgContext.getAxisOperation().getName().getLocalPart();
+        }
+        String key = getKey(service, operation);
+        synchronized (this) {
+            if (counter.containsKey(key)) {
+                counter.get(key).incrementAndGet();
+            } else {
+                counter.put(key, new AtomicInteger(1));
+            }
+        }
+
+        return InvocationResponse.CONTINUE;
+    }
+
+    public int getCount(String service, String operation) {
+        String key = getKey(service, operation);
+        synchronized (this) {
+            if (counter.containsKey(key)) {
+                return counter.get(key).get();
+            }
+        }
+        return 0;
+    }
+
+    private String getKey(String service, String operation) {
+        return service + ":" + operation;
+    }
+
+}

Modified: 
synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/SampleConfigConstants.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/SampleConfigConstants.java?rev=1505500&r1=1505499&r2=1505500&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/SampleConfigConstants.java
 (original)
+++ 
synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/SampleConfigConstants.java
 Sun Jul 21 23:05:04 2013
@@ -42,6 +42,7 @@ public class SampleConfigConstants {
     public static final String TAG_BE_SERVER_CONF_AXIS2_XML = "axis2Xml";
     public static final String TAG_BE_SERVER_CONF_AXIS2_HTTP_PORT = "httpPort";
     public static final String TAG_BE_SERVER_CONF_AXIS2_HTTPS_PORT = 
"httpsPort";
+    public static final String TAG_BE_SERVER_CONF_AXIS2_COUNTER_ENABLED = 
"counterEnabled";
 
     public static final String TAG_BE_SERVER_CONF_JMS_PROVIDER_URL = 
"providerURL";
     public static final String TAG_BE_SERVER_CONF_JMS_INITIAL_NAMING_FACTORY = 
"initialNamingFactory";

Modified: 
synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/SynapseTestCase.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/SynapseTestCase.java?rev=1505500&r1=1505499&r2=1505500&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/SynapseTestCase.java
 (original)
+++ 
synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/SynapseTestCase.java
 Sun Jul 21 23:05:04 2013
@@ -356,6 +356,8 @@ public abstract class SynapseTestCase ex
                     SampleConfigConstants.TAG_BE_SERVER_CONF_AXIS2_HTTP_PORT);
             String axis2HttpsPort = axis2Properties.getProperty(
                     SampleConfigConstants.TAG_BE_SERVER_CONF_AXIS2_HTTPS_PORT);
+            String counterEnabled = axis2Properties.getProperty(
+                    
SampleConfigConstants.TAG_BE_SERVER_CONF_AXIS2_COUNTER_ENABLED);
 
             configuration.getAxis2Config(serverName).setServerName(serverName);
 
@@ -377,6 +379,9 @@ public abstract class SynapseTestCase ex
 
             
configuration.getAxis2Config(serverName).setHttpPort(axis2HttpPort);
             
configuration.getAxis2Config(serverName).setHttpsPort(axis2HttpsPort);
+            if (Boolean.parseBoolean(counterEnabled)) {
+                
configuration.getAxis2Config(serverName).setCounterEnabled(true);
+            }
 
             backendServerControllers.add(new 
Axis2BackEndServerController(serverName,
                     configuration.getAxis2Config(serverName)));

Modified: 
synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/TestSamplesHandlerSuite.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/TestSamplesHandlerSuite.java?rev=1505500&r1=1505499&r2=1505500&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/TestSamplesHandlerSuite.java
 (original)
+++ 
synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/TestSamplesHandlerSuite.java
 Sun Jul 21 23:05:04 2013
@@ -22,6 +22,7 @@ package org.apache.synapse.samples.frame
 import junit.framework.TestSuite;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.synapse.samples.framework.tests.Sample250;
 import org.apache.synapse.samples.framework.tests.advanced.*;
 import org.apache.synapse.samples.framework.tests.endpoint.*;
 import org.apache.synapse.samples.framework.tests.message.*;
@@ -203,6 +204,9 @@ public class TestSamplesHandlerSuite ext
         sampleClassRepo.put("156", Sample156.class);
         sampleClassRepo.put("157", Sample157.class);
 
+        //Transport switching
+        sampleClassRepo.put("250", Sample250.class);
+
         //Advanced
         sampleClassRepo.put("350", Sample350.class);
         sampleClassRepo.put("351", Sample351.class);

Modified: 
synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/clients/JMSSampleClient.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/clients/JMSSampleClient.java?rev=1505500&r1=1505499&r2=1505500&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/clients/JMSSampleClient.java
 (original)
+++ 
synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/clients/JMSSampleClient.java
 Sun Jul 21 23:05:04 2013
@@ -33,10 +33,9 @@ public class JMSSampleClient {
     private QueueSession session;
     private QueueSender sender;
 
-    public void connect(String destName) throws Exception {
+    public void connect(String destination) throws Exception {
 
         Properties env = new Properties();
-        //String factoryURL = 
System.getProperty("java.naming.factory.url.pkgs");
         String connectionFactoryName = "ConnectionFactory";
 
         if (System.getProperty("java.naming.provider.url") == null) {
@@ -46,15 +45,13 @@ public class JMSSampleClient {
             env.put("java.naming.factory.initial",
                 "org.apache.activemq.jndi.ActiveMQInitialContextFactory");
         }
-        if (connectionFactoryName != null) {
-            env.put("transport.jms.ConnectionFactoryJNDIName", 
connectionFactoryName);
-        }
-        
+        env.put("transport.jms.ConnectionFactoryJNDIName", 
connectionFactoryName);
+
         InitialContext ic = new InitialContext(env);
-        QueueConnectionFactory confac = (QueueConnectionFactory) 
ic.lookup("ConnectionFactory");
+        QueueConnectionFactory confac = (QueueConnectionFactory) 
ic.lookup(connectionFactoryName);
         connection = confac.createQueueConnection();
         session = connection.createQueueSession(false, 
QueueSession.AUTO_ACKNOWLEDGE);
-        sender = session.createSender((Queue)ic.lookup(destName));
+        sender = session.createSender((Queue)ic.lookup(destination));
     }
 
     public void shutdown() throws Exception {
@@ -98,21 +95,21 @@ public class JMSSampleClient {
         return bytes;
     }
 
-    public static double getRandom(double base, double variance, boolean 
positiveOnly) {
+    private double getRandom(double base, double variance, boolean 
positiveOnly) {
         double rand = Math.random();
         return (base + ((rand > 0.5 ? 1 : -1) * variance * base * rand))
             * (positiveOnly ? 1 : (rand > 0.5 ? 1 : -1));
     }
 
-    public void sendAsPox(String param) throws Exception{
-                 sendTextMessage(
-                    "<m:placeOrder xmlns:m=\"http://services.samples\";>\n" +
-                    "    <m:order>\n" +
-                    "        <m:price>" + getRandom(100, 0.9, true) + 
"</m:price>\n" +
-                    "        <m:quantity>" + (int) getRandom(10000, 1.0, true) 
+ "</m:quantity>\n" +
-                    "        <m:symbol>" + param + "</m:symbol>\n" +
-                    "    </m:order>\n" +
-                    "</m:placeOrder>");
+    public void sendAsPox(String symbol) throws Exception {
+        sendTextMessage(
+                "<m:placeOrder xmlns:m=\"http://services.samples\";>\n" +
+                "    <m:order>\n" +
+                "        <m:price>" + getRandom(100, 0.9, true) + 
"</m:price>\n" +
+                "        <m:quantity>" + (int) getRandom(10000, 1.0, true) + 
"</m:quantity>\n" +
+                "        <m:symbol>" + symbol + "</m:symbol>\n" +
+                "    </m:order>\n" +
+                "</m:placeOrder>");
     }
 
 }

Modified: 
synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/config/Axis2ServerConfiguration.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/config/Axis2ServerConfiguration.java?rev=1505500&r1=1505499&r2=1505500&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/config/Axis2ServerConfiguration.java
 (original)
+++ 
synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/config/Axis2ServerConfiguration.java
 Sun Jul 21 23:05:04 2013
@@ -27,6 +27,7 @@ public class Axis2ServerConfiguration {
     private String httpPort;
     private String httpsPort;
     private boolean clusteringEnabled;
+    private boolean counterEnabled;
 
     public String getServerName() {
         return serverName;
@@ -75,4 +76,12 @@ public class Axis2ServerConfiguration {
     public void setClusteringEnabled(boolean clusteringEnabled) {
         this.clusteringEnabled = clusteringEnabled;
     }
+
+    public boolean isCounterEnabled() {
+        return counterEnabled;
+    }
+
+    public void setCounterEnabled(boolean counterEnabled) {
+        this.counterEnabled = counterEnabled;
+    }
 }

Added: 
synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/tests/Sample250.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/tests/Sample250.java?rev=1505500&view=auto
==============================================================================
--- 
synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/tests/Sample250.java
 (added)
+++ 
synapse/trunk/java/modules/integration/src/test/java/org/apache/synapse/samples/framework/tests/Sample250.java
 Sun Jul 21 23:05:04 2013
@@ -0,0 +1,37 @@
+package org.apache.synapse.samples.framework.tests;
+
+import org.apache.synapse.samples.framework.Axis2BackEndServerController;
+import org.apache.synapse.samples.framework.BackEndServerController;
+import org.apache.synapse.samples.framework.SynapseTestCase;
+import org.apache.synapse.samples.framework.clients.JMSSampleClient;
+
+import java.util.List;
+
+public class Sample250 extends SynapseTestCase {
+
+    public Sample250() {
+        super(250);
+    }
+
+    public void testPlaceOrder() throws Exception {
+        List<BackEndServerController> servers = getBackendServerControllers();
+        Axis2BackEndServerController axis2Server = null;
+        for (BackEndServerController server : servers) {
+            if (server instanceof Axis2BackEndServerController) {
+                axis2Server = (Axis2BackEndServerController) server;
+                break;
+            }
+        }
+        if (axis2Server == null) {
+            fail("Failed to load the Axis2BackEndServerController");
+        }
+
+        assertEquals(0, axis2Server.getMessageCount("SimpleStockQuoteService", 
"placeOrder"));
+        JMSSampleClient client = new JMSSampleClient();
+        client.connect("dynamicQueues/StockQuoteProxy");
+        client.sendAsPox("IBM");
+        Thread.sleep(2000);
+        assertEquals(1, axis2Server.getMessageCount("SimpleStockQuoteService", 
"placeOrder"));
+        client.shutdown();
+    }
+}

Added: synapse/trunk/java/modules/integration/src/test/resources/sample250.xml
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/integration/src/test/resources/sample250.xml?rev=1505500&view=auto
==============================================================================
--- synapse/trunk/java/modules/integration/src/test/resources/sample250.xml 
(added)
+++ synapse/trunk/java/modules/integration/src/test/resources/sample250.xml Sun 
Jul 21 23:05:04 2013
@@ -0,0 +1,24 @@
+<synapseSample>
+    <sampleID>250</sampleID>
+    <sampleName>JMS to HTTP</sampleName>
+    <synapseConfig>
+        <!--if we don't specify the optional values, framework will use 
defaults-->
+        <axis2Repo>modules/integration/target/test_repos/synapse</axis2Repo>
+        
<axis2Xml>modules/integration/target/test_repos/synapse/conf/axis2_jms.xml</axis2Xml>
+        <synapseXml>repository/conf/sample/synapse_sample_250.xml</synapseXml>
+    </synapseConfig>
+    <backEndServerConfig>
+        <jmsBroker id='0'>
+            <providerURL>tcp://localhost:61616</providerURL>
+            
<initialNamingFactory>org.apache.activemq.jndi.ActiveMQInitialContextFactory</initialNamingFactory>
+        </jmsBroker>
+        <axis2Server id='1'>
+            
<axis2Repo>modules/integration/target/test_repos/axis2Server</axis2Repo>
+            
<axis2Xml>modules/integration/target/test_repos/axis2Server/conf/axis2_def.xml</axis2Xml>
+            <counterEnabled>true</counterEnabled>
+        </axis2Server>
+    </backEndServerConfig>
+    <clientConfig>
+        
<clientRepo>modules/integration/target/test_repos/axis2Client</clientRepo>
+    </clientConfig>
+</synapseSample>


Reply via email to