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>