Author: veithen
Date: Thu Aug 14 15:55:00 2008
New Revision: 686075
URL: http://svn.apache.org/viewvc?rev=686075&view=rev
Log:
HTTP NIO transport tests: Improved REST test case and prepared the test case
for SYNAPSE-431 (commented out in this commit).
Modified:
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/JavaNetRESTSender.java
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/TransportTestSuite.java
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/RESTMessage.java
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/RESTTestCase.java
Modified:
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/JavaNetRESTSender.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/JavaNetRESTSender.java?rev=686075&r1=686074&r2=686075&view=diff
==============================================================================
---
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/JavaNetRESTSender.java
(original)
+++
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/JavaNetRESTSender.java
Thu Aug 14 15:55:00 2008
@@ -36,7 +36,16 @@
@DisplayName("java.net")
public class JavaNetRESTSender extends
AbstractMessageSender<TestEnvironment,AsyncChannel<?>> implements
AsyncMessageSender<TestEnvironment,AsyncChannel<?>,RESTMessage> {
public void sendMessage(AsyncChannel<?> channel, SenderOptions options,
RESTMessage message) throws Exception {
- URLConnection connection = new URL(options.getEndpointReference() +
"/" + DefaultOperationDispatcher.DEFAULT_OPERATION_NAME).openConnection();
+ StringBuilder url = new StringBuilder();
+ url.append(options.getEndpointReference());
+ url.append('/');
+ url.append(DefaultOperationDispatcher.DEFAULT_OPERATION_NAME);
+ String queryString = message.getQueryString();
+ if (queryString.length() > 0) {
+ url.append('?');
+ url.append(queryString);
+ }
+ URLConnection connection = new URL(url.toString()).openConnection();
connection.setDoInput(true);
InputStream in = connection.getInputStream();
IOUtils.copy(in, System.out);
Modified:
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/TransportTestSuite.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/TransportTestSuite.java?rev=686075&r1=686074&r2=686075&view=diff
==============================================================================
---
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/TransportTestSuite.java
(original)
+++
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/TransportTestSuite.java
Thu Aug 14 15:55:00 2008
@@ -35,6 +35,7 @@
import org.apache.synapse.transport.testkit.message.StringMessage;
import org.apache.synapse.transport.testkit.message.XMLMessage;
import org.apache.synapse.transport.testkit.message.XMLMessageType;
+import org.apache.synapse.transport.testkit.message.RESTMessage.Parameter;
import org.apache.synapse.transport.testkit.server.AsyncEndpointFactory;
import org.apache.synapse.transport.testkit.server.EndpointFactory;
import org.apache.synapse.transport.testkit.tests.async.BinaryTestCase;
@@ -57,6 +58,16 @@
LATIN1_TEST_DATA,
};
+ private static final RESTMessage restTestMessage1 = new RESTMessage(new
Parameter[] {
+ new Parameter("param1", "value1"),
+ new Parameter("param2", "value2"),
+ });
+
+ private static final RESTMessage restTestMessage2 = new RESTMessage(new
Parameter[] {
+ new Parameter("param", "value1"),
+ new Parameter("param", "value2"),
+ });
+
private final boolean reuseServer;
public TransportTestSuite(boolean reuseServer) {
@@ -127,7 +138,9 @@
}
public <C extends AsyncChannel<? super E>> void addRESTTests(E env, C
channel, AsyncMessageSender<? super E,? super C,RESTMessage> sender,
AsyncEndpointFactory<? super E,? super C,MessageData> endpointFactory) {
- addTest(new RESTTestCase<E,C>(env, channel, sender, endpointFactory));
+ addTest(new RESTTestCase<E,C>(env, channel, sender, endpointFactory,
restTestMessage1));
+ // TODO: regression test for SYNAPSE-431
+// addTest(new RESTTestCase<E,C>(env, channel, sender, endpointFactory,
restTestMessage2));
}
/*
Modified:
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/RESTMessage.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/RESTMessage.java?rev=686075&r1=686074&r2=686075&view=diff
==============================================================================
---
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/RESTMessage.java
(original)
+++
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/RESTMessage.java
Thu Aug 14 15:55:00 2008
@@ -19,6 +19,75 @@
package org.apache.synapse.transport.testkit.message;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+
+import org.apache.commons.lang.ObjectUtils;
+import org.apache.commons.lang.builder.HashCodeBuilder;
+
public class RESTMessage {
- // TODO
+ public static class Parameter {
+ private final String key;
+ private final String value;
+
+ public Parameter(String key, String value) {
+ this.key = key;
+ this.value = value;
+ }
+
+ public String getKey() {
+ return key;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ @Override
+ public boolean equals(Object _obj) {
+ if (_obj instanceof Parameter) {
+ Parameter obj = (Parameter)_obj;
+ return ObjectUtils.equals(key, obj.key) &&
ObjectUtils.equals(value, obj.value);
+ } else {
+ return false;
+ }
+ }
+
+ @Override
+ public int hashCode() {
+ return new
HashCodeBuilder().append(key).append(value).toHashCode();
+ }
+
+ @Override
+ public String toString() {
+ return key + "=" + value;
+ }
+ }
+
+ private final Parameter[] parameters;
+
+ public RESTMessage(Parameter[] parameters) {
+ this.parameters = parameters;
+ }
+
+ public Parameter[] getParameters() {
+ return parameters;
+ }
+
+ public String getQueryString() {
+ StringBuilder buffer = new StringBuilder();
+ for (Parameter parameter : parameters) {
+ if (buffer.length() > 0) {
+ buffer.append('&');
+ }
+ buffer.append(parameter.getKey());
+ buffer.append('=');
+ try {
+ buffer.append(URLEncoder.encode(parameter.getValue(),
"UTF-8"));
+ } catch (UnsupportedEncodingException e) {
+ throw new Error("JRE doesn't know UTF-8!", e);
+ }
+ }
+ return buffer.toString();
+ }
}
Modified:
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/RESTTestCase.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/RESTTestCase.java?rev=686075&r1=686074&r2=686075&view=diff
==============================================================================
---
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/RESTTestCase.java
(original)
+++
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/RESTTestCase.java
Thu Aug 14 15:55:00 2008
@@ -19,6 +19,12 @@
package org.apache.synapse.transport.testkit.tests.async;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+import org.apache.axiom.om.OMElement;
import org.apache.synapse.transport.testkit.TestEnvironment;
import org.apache.synapse.transport.testkit.listener.AsyncChannel;
import org.apache.synapse.transport.testkit.listener.AsyncMessageSender;
@@ -26,22 +32,32 @@
import org.apache.synapse.transport.testkit.listener.ContentTypeMode;
import org.apache.synapse.transport.testkit.message.MessageData;
import org.apache.synapse.transport.testkit.message.RESTMessage;
+import org.apache.synapse.transport.testkit.message.RESTMessage.Parameter;
import org.apache.synapse.transport.testkit.name.DisplayName;
import org.apache.synapse.transport.testkit.server.AsyncEndpointFactory;
@DisplayName("REST")
public class RESTTestCase<E extends TestEnvironment,C extends AsyncChannel<?
super E>> extends AsyncMessageTestCase<E,C,RESTMessage,MessageData> {
- public RESTTestCase(E env, C channel, AsyncMessageSender<? super E,? super
C,RESTMessage> sender, AsyncEndpointFactory<? super E,? super C,MessageData>
endpointFactory) {
+ private final RESTMessage message;
+
+ public RESTTestCase(E env, C channel, AsyncMessageSender<? super E,? super
C,RESTMessage> sender, AsyncEndpointFactory<? super E,? super C,MessageData>
endpointFactory, RESTMessage message) {
super(env, channel, sender, endpointFactory,
ContentTypeMode.TRANSPORT, null, null);
+ this.message = message;
}
@Override
protected RESTMessage prepareMessage() throws Exception {
- return new RESTMessage();
+ return message;
}
@Override
protected void checkMessageData(RESTMessage message, MessageData
messageData) throws Exception {
- // TODO
+ OMElement content =
messageData.getEnvelope().getBody().getFirstElement();
+ Set<Parameter> expected = new
HashSet<Parameter>(Arrays.asList(message.getParameters()));
+ for (Iterator<?> it = content.getChildElements(); it.hasNext(); ) {
+ OMElement child = (OMElement)it.next();
+ assertTrue(expected.remove(new Parameter(child.getLocalName(),
child.getText())));
+ }
+ assertTrue(expected.isEmpty());
}
}