Author: veithen
Date: Thu Sep 25 14:24:50 2008
New Revision: 699095
URL: http://svn.apache.org/viewvc?rev=699095&view=rev
Log:
Transport test kit: some changes that will allow us to build tests for async
request-response
Added:
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/ConcurrencyTest.java
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/ReplyToMode.java
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/axis2/AxisServiceConfigurator.java
(contents, props changed)
- copied, changed from r698148,
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/axis2/endpoint/AxisServiceConfigurator.java
Removed:
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/axis2/endpoint/AxisServiceConfigurator.java
Modified:
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSChannel.java
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSRequestResponseChannel.java
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailChannel.java
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/axis2/endpoint/AxisEndpoint.java
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/axis2/endpoint/ContentTypeServiceConfigurator.java
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSFileChannel.java
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSRequestResponseFileChannel.java
Added:
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/ConcurrencyTest.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/ConcurrencyTest.java?rev=699095&view=auto
==============================================================================
---
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/ConcurrencyTest.java
(added)
+++
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/ConcurrencyTest.java
Thu Sep 25 14:24:50 2008
@@ -0,0 +1,97 @@
+package org.apache.synapse.transport.jms;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import javax.mail.internet.ContentType;
+import javax.xml.namespace.QName;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.InOnlyAxisOperation;
+import org.apache.axis2.engine.MessageReceiver;
+import org.apache.axis2.transport.jms.JMSConstants;
+import org.apache.synapse.transport.testkit.client.AsyncTestClient;
+import org.apache.synapse.transport.testkit.client.ClientOptions;
+import org.apache.synapse.transport.testkit.server.axis2.AxisEndpoint;
+import org.apache.synapse.transport.testkit.tests.TestResourceSet;
+import org.apache.synapse.transport.testkit.tests.TransportTestCase;
+
+public class ConcurrencyTest extends TransportTestCase {
+ private static class BlockingMessageReceiver implements MessageReceiver {
+ private final CountDownLatch latch = new CountDownLatch(1);
+ private final AtomicInteger messageCount = new AtomicInteger();
+
+ public void receive(MessageContext msgContext) throws AxisFault {
+ System.out.println("MESSAGE");
+ messageCount.incrementAndGet();
+ try {
+ latch.await();
+ } catch (InterruptedException ex) {
+ }
+ }
+
+ public void unblock() {
+ latch.countDown();
+ }
+
+ public int getMessageCount() {
+ return messageCount.get();
+ }
+ }
+
+ private final JMSAsyncChannel channel = new
JMSAsyncChannel(JMSConstants.DESTINATION_TYPE_QUEUE, ContentTypeMode.TRANSPORT);
+ private final AsyncTestClient<byte[]> client = new
JMSAsyncClient<byte[]>(JMSBytesMessageFactory.INSTANCE);
+
+ public ConcurrencyTest() {
+ addResource(new JMSTransportDescriptionFactory(false, false));
+ addResource(new QpidTestEnvironment());
+ addResource(channel);
+ addResource(client);
+ }
+
+ public void _test() throws Exception {
+ final BlockingMessageReceiver messageReceiver = new
BlockingMessageReceiver();
+
+ TestResourceSet resources = new TestResourceSet(getResourceSet());
+ resources.addResource(new AxisEndpoint() {
+ @Override
+ protected AxisOperation createOperation() {
+ AxisOperation operation = new InOnlyAxisOperation(new
QName("default"));
+ operation.setMessageReceiver(messageReceiver);
+ return operation;
+ }
+ });
+
+ resources.setUp();
+
+ ClientOptions options = new ClientOptions(new
ContentType("application/octet-stream"), null);
+ for (int i=0; i<100; i++) {
+ client.sendMessage(options, options.getBaseContentType(), new
byte[2048]);
+ }
+
+ Thread.sleep(500);
+
+ int messagesReceived = messageReceiver.getMessageCount();
+
+ new Thread() {
+ @Override
+ public void run() {
+ try {
+ Thread.sleep(500);
+ } catch (InterruptedException ex) {
+ }
+ messageReceiver.unblock();
+ }
+ }.start();
+
+ resources.tearDown();
+
+ int remainingInQueue = channel.getMessageCount();
+
+ System.out.println("Messages received by MessageReceiver: " +
messagesReceived);
+ System.out.println("Remaining in queue: " + remainingInQueue);
+ System.out.println("Total accepted: " +
messageReceiver.getMessageCount());
+ }
+}
Modified:
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSChannel.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSChannel.java?rev=699095&r1=699094&r2=699095&view=diff
==============================================================================
---
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSChannel.java
(original)
+++
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSChannel.java
Thu Sep 25 14:24:50 2008
@@ -32,7 +32,7 @@
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.description.AxisService;
import org.apache.axis2.transport.jms.JMSConstants;
-import
org.apache.synapse.transport.testkit.axis2.endpoint.AxisServiceConfigurator;
+import org.apache.synapse.transport.testkit.axis2.AxisServiceConfigurator;
import org.apache.synapse.transport.testkit.name.Key;
public abstract class JMSChannel implements AxisServiceConfigurator {
@@ -135,7 +135,7 @@
"&transport.jms.ConnectionFactoryJNDIName=" +
connectionFactoryJNDIName);
}
- public void setupService(AxisService service) throws Exception {
+ public void setupService(AxisService service, boolean isClientSide) throws
Exception {
service.addParameter(JMSConstants.CONFAC_PARAM, connectionFactoryName);
service.addParameter(JMSConstants.DEST_PARAM_TYPE, destinationType);
service.addParameter(JMSConstants.DEST_PARAM, jndiName);
Modified:
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSRequestResponseChannel.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSRequestResponseChannel.java?rev=699095&r1=699094&r2=699095&view=diff
==============================================================================
---
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSRequestResponseChannel.java
(original)
+++
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSRequestResponseChannel.java
Thu Sep 25 14:24:50 2008
@@ -61,8 +61,8 @@
}
@Override
- public void setupService(AxisService service) throws Exception {
- super.setupService(service);
+ public void setupService(AxisService service, boolean isClientSide) throws
Exception {
+ super.setupService(service, isClientSide);
service.addParameter(JMSConstants.REPLY_PARAM_TYPE,
replyDestinationType);
service.addParameter(JMSConstants.REPLY_PARAM, replyJndiName);
}
Added:
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/ReplyToMode.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/ReplyToMode.java?rev=699095&view=auto
==============================================================================
---
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/ReplyToMode.java
(added)
+++
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/ReplyToMode.java
Thu Sep 25 14:24:50 2008
@@ -0,0 +1,15 @@
+package org.apache.synapse.transport.jms;
+
+public enum ReplyToMode {
+ /**
+ * The reply to destination is configured on the endpoint and the
+ * clients doesn't set the reply to destination in the JMS message.
+ */
+ ENDPOINT,
+
+ /**
+ * The client specifies the reply to destination in the corresponding
+ * JMS header.
+ */
+ CLIENT
+}
Modified:
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailChannel.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailChannel.java?rev=699095&r1=699094&r2=699095&view=diff
==============================================================================
---
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailChannel.java
(original)
+++
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailChannel.java
Thu Sep 25 14:24:50 2008
@@ -29,8 +29,8 @@
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.description.AxisService;
import org.apache.axis2.transport.mail.MailConstants;
+import org.apache.synapse.transport.testkit.axis2.AxisServiceConfigurator;
import org.apache.synapse.transport.testkit.axis2.client.AxisTestClientSetup;
-import
org.apache.synapse.transport.testkit.axis2.endpoint.AxisServiceConfigurator;
import org.apache.synapse.transport.testkit.channel.AsyncChannel;
import org.apache.synapse.transport.testkit.channel.RequestResponseChannel;
@@ -38,16 +38,12 @@
private MailTestEnvironment env;
private MailTestEnvironment.Account sender;
private MailTestEnvironment.Account recipient;
- private Map<String,String> senderInProperties;
- private Map<String,String> recipientInProperties;
@SuppressWarnings("unused")
private void setUp(MailTestEnvironment env) throws Exception {
this.env = env;
sender = env.allocateAccount();
- senderInProperties = env.getInProperties(sender);
recipient = env.allocateAccount();
- recipientInProperties = env.getInProperties(recipient);
}
@SuppressWarnings("unused")
@@ -68,7 +64,7 @@
public Session getReplySession() {
Properties props = new Properties();
- props.putAll(senderInProperties);
+ props.putAll(env.getInProperties(sender));
return Session.getInstance(props);
}
@@ -76,12 +72,13 @@
return new EndpointReference("mailto:" + recipient.getAddress());
}
- public void setupService(AxisService service) throws Exception {
+ public void setupService(AxisService service, boolean isClientSide) throws
Exception {
+ MailTestEnvironment.Account account = isClientSide ? sender :
recipient;
service.addParameter("transport.mail.Protocol", env.getProtocol());
- service.addParameter("transport.mail.Address", recipient.getAddress());
+ service.addParameter("transport.mail.Address", account.getAddress());
service.addParameter("transport.PollInterval", "50ms");
- for (Map.Entry<String,String> prop : recipientInProperties.entrySet())
{
+ for (Map.Entry<String,String> prop :
env.getInProperties(account).entrySet()) {
service.addParameter(prop.getKey(), prop.getValue());
}
}
Copied:
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/axis2/AxisServiceConfigurator.java
(from r698148,
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/axis2/endpoint/AxisServiceConfigurator.java)
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/axis2/AxisServiceConfigurator.java?p2=synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/axis2/AxisServiceConfigurator.java&p1=synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/axis2/endpoint/AxisServiceConfigurator.java&r1=698148&r2=699095&rev=699095&view=diff
==============================================================================
---
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/axis2/endpoint/AxisServiceConfigurator.java
(original)
+++
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/axis2/AxisServiceConfigurator.java
Thu Sep 25 14:24:50 2008
@@ -17,7 +17,7 @@
* under the License.
*/
-package org.apache.synapse.transport.testkit.axis2.endpoint;
+package org.apache.synapse.transport.testkit.axis2;
import org.apache.axis2.description.AxisService;
@@ -31,7 +31,8 @@
* The default implementation does nothing.
*
* @param service
+ * @param isClientSide TODO
* @throws Exception
*/
- void setupService(AxisService service) throws Exception;
+ void setupService(AxisService service, boolean isClientSide) throws
Exception;
}
Propchange:
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/axis2/AxisServiceConfigurator.java
------------------------------------------------------------------------------
svn:mergeinfo =
Modified:
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/axis2/endpoint/AxisEndpoint.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/axis2/endpoint/AxisEndpoint.java?rev=699095&r1=699094&r2=699095&view=diff
==============================================================================
---
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/axis2/endpoint/AxisEndpoint.java
(original)
+++
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/axis2/endpoint/AxisEndpoint.java
Thu Sep 25 14:24:50 2008
@@ -24,6 +24,7 @@
import org.apache.axis2.description.AxisOperation;
import org.apache.axis2.description.AxisService;
+import org.apache.synapse.transport.testkit.axis2.AxisServiceConfigurator;
import org.apache.synapse.transport.testkit.channel.Channel;
import org.apache.synapse.transport.testkit.name.Name;
import org.apache.synapse.transport.testkit.server.Endpoint;
@@ -49,7 +50,7 @@
service.addParameter(AxisService.SUPPORT_SINGLE_OP, true);
if (configurators != null) {
for (AxisServiceConfigurator configurator : configurators) {
- configurator.setupService(service);
+ configurator.setupService(service, false);
}
}
server.getAxisConfiguration().addService(service);
Modified:
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/axis2/endpoint/ContentTypeServiceConfigurator.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/axis2/endpoint/ContentTypeServiceConfigurator.java?rev=699095&r1=699094&r2=699095&view=diff
==============================================================================
---
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/axis2/endpoint/ContentTypeServiceConfigurator.java
(original)
+++
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/axis2/endpoint/ContentTypeServiceConfigurator.java
Thu Sep 25 14:24:50 2008
@@ -22,6 +22,7 @@
import javax.mail.internet.ContentType;
import org.apache.axis2.description.AxisService;
+import org.apache.synapse.transport.testkit.axis2.AxisServiceConfigurator;
import org.apache.synapse.transport.testkit.client.ClientOptions;
import org.apache.synapse.transport.testkit.client.TestClient;
@@ -38,7 +39,7 @@
contentType = client.getContentType(options,
options.getBaseContentType());
}
- public void setupService(AxisService service) throws Exception {
+ public void setupService(AxisService service, boolean isClientSide) throws
Exception {
service.addParameter(parameterName, contentType.toString());
}
}
Modified:
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSFileChannel.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSFileChannel.java?rev=699095&r1=699094&r2=699095&view=diff
==============================================================================
---
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSFileChannel.java
(original)
+++
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSFileChannel.java
Thu Sep 25 14:24:50 2008
@@ -23,7 +23,7 @@
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.description.AxisService;
-import
org.apache.synapse.transport.testkit.axis2.endpoint.AxisServiceConfigurator;
+import org.apache.synapse.transport.testkit.axis2.AxisServiceConfigurator;
public class VFSFileChannel implements AxisServiceConfigurator {
private final String path;
@@ -41,7 +41,7 @@
return new EndpointReference("vfs:" +
requestFile.getAbsoluteFile().toURL());
}
- public void setupService(AxisService service) throws Exception {
+ public void setupService(AxisService service, boolean isClientSide) throws
Exception {
service.addParameter("transport.vfs.FileURI", "vfs:" +
requestFile.toURL());
service.addParameter("transport.PollInterval", "50ms");
service.addParameter("transport.vfs.ActionAfterProcess", "DELETE");
Modified:
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSRequestResponseFileChannel.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSRequestResponseFileChannel.java?rev=699095&r1=699094&r2=699095&view=diff
==============================================================================
---
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSRequestResponseFileChannel.java
(original)
+++
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSRequestResponseFileChannel.java
Thu Sep 25 14:24:50 2008
@@ -38,8 +38,8 @@
}
@Override
- public void setupService(AxisService service) throws Exception {
- super.setupService(service);
+ public void setupService(AxisService service, boolean isClientSide) throws
Exception {
+ super.setupService(service, isClientSide);
service.addParameter("transport.vfs.ReplyFileURI", "vfs:" +
replyFile.toURL());
}