You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2008/08/13 15:33:39 UTC
svn commit: r685546 - in /activemq/camel/trunk/camel-core/src:
main/java/org/apache/camel/component/mock/
test/java/org/apache/camel/component/file/
test/java/org/apache/camel/component/mock/
Author: ningjiang
Date: Wed Aug 13 06:33:38 2008
New Revision: 685546
URL: http://svn.apache.org/viewvc?rev=685546&view=rev
Log:
CAMEL-819 applied patch with thanks to Jonathan
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConsumeSingleDirectoryOnlyTest.java
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/mock/MockEndpointTest.java
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java?rev=685546&r1=685545&r2=685546&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java Wed Aug 13 06:33:38 2008
@@ -22,8 +22,10 @@
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
@@ -308,7 +310,7 @@
/**
* Adds an expectation that the given body values are received by this
- * endpoint
+ * endpoint in the specified order
*/
public void expectedBodiesReceived(final List bodies) {
expectedMessageCount(bodies.size());
@@ -338,8 +340,43 @@
List bodyList = new ArrayList();
bodyList.addAll(Arrays.asList(bodies));
expectedBodiesReceived(bodyList);
- }
+ }
+
+ /**
+ * Adds an expectation that the given body values are received by this
+ * endpoint in any order
+ */
+ public void expectedBodiesReceivedInAnyOrder(final List bodies) {
+ expectedMessageCount(bodies.size());
+ this.expectedBodyValues = bodies;
+ this.actualBodyValues = new ArrayList();
+ expects(new Runnable() {
+ public void run() {
+ Set actualBodyValuesSet = new HashSet(actualBodyValues);
+ for (int i = 0; i < expectedBodyValues.size(); i++) {
+ Exchange exchange = getReceivedExchanges().get(i);
+ assertTrue("No exchange received for counter: " + i, exchange != null);
+
+ Object expectedBody = expectedBodyValues.get(i);
+ assertTrue("Message with body " + expectedBody +
+ " was expected but not found in " + actualBodyValuesSet,
+ actualBodyValuesSet.remove(expectedBody));
+ }
+ }
+ });
+ }
+
+ /**
+ * Adds an expectation that the given body values are received by this
+ * endpoint in any order
+ */
+ public void expectedBodiesReceivedInAnyOrder(Object... bodies) {
+ List bodyList = new ArrayList();
+ bodyList.addAll(Arrays.asList(bodies));
+ expectedBodiesReceivedInAnyOrder(bodyList);
+ }
+
/**
* Adds an expectation that messages received should have ascending values
* of the given expression such as a user generated counter value
@@ -440,7 +477,7 @@
}
/**
- * Adds the expection which will be invoked when enough messages are
+ * Adds the expectation which will be invoked when enough messages are
* received
*/
public void expects(Runnable runnable) {
Modified: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConsumeSingleDirectoryOnlyTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConsumeSingleDirectoryOnlyTest.java?rev=685546&r1=685545&r2=685546&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConsumeSingleDirectoryOnlyTest.java (original)
+++ activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConsumeSingleDirectoryOnlyTest.java Wed Aug 13 06:33:38 2008
@@ -36,7 +36,7 @@
public void testConsumeFileOnly() throws Exception {
MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedBodiesReceived("Hello World", "Bye World");
+ mock.expectedBodiesReceivedInAnyOrder("Hello World", "Bye World");
assertMockEndpointsSatisifed();
}
@@ -49,4 +49,4 @@
}
};
}
-}
\ No newline at end of file
+}
Modified: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/mock/MockEndpointTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/mock/MockEndpointTest.java?rev=685546&r1=685545&r2=685546&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/mock/MockEndpointTest.java (original)
+++ activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/mock/MockEndpointTest.java Wed Aug 13 06:33:38 2008
@@ -16,6 +16,9 @@
*/
package org.apache.camel.component.mock;
+import java.util.ArrayList;
+import java.util.List;
+
import org.apache.camel.ContextTestSupport;
import org.apache.camel.builder.RouteBuilder;
@@ -60,6 +63,24 @@
resultEndpoint.assertIsNotSatisfied();
}
+ public void testExpectsBodiesInOrder() throws Exception {
+ MockEndpoint resultEndpoint = getMockEndpoint("mock:result");
+ resultEndpoint.expectedBodiesReceived(listOfMessages(11, 12, 13, 14, 15));
+
+ sendMessages(11, 12, 13, 14, 15);
+
+ resultEndpoint.assertIsSatisfied();
+ }
+
+ public void testExpectsBodiesInAnyOrder() throws Exception {
+ MockEndpoint resultEndpoint = getMockEndpoint("mock:result");
+ resultEndpoint.expectedBodiesReceivedInAnyOrder(listOfMessages(11, 12, 13, 14, 15));
+
+ sendMessages(15, 12, 14, 13, 11);
+
+ resultEndpoint.assertIsSatisfied();
+ }
+
public void testNoDuplicateMessagesPass() throws Exception {
MockEndpoint resultEndpoint = getMockEndpoint("mock:result");
resultEndpoint.expectsNoDuplicates(header("counter"));
@@ -143,10 +164,22 @@
protected void sendMessages(int... counters) {
for (int counter : counters) {
- template.sendBodyAndHeader("direct:a", "<message>" + counter + "</message>",
+ template.sendBodyAndHeader("direct:a", createTestMessage(counter),
"counter", counter);
}
}
+
+ private String createTestMessage(int counter) {
+ return "<message>" + counter + "</message>";
+ }
+
+ protected List<String> listOfMessages(int... counters) {
+ List<String> list = new ArrayList<String>(counters.length);
+ for (int counter : counters) {
+ list.add(createTestMessage(counter));
+ }
+ return list;
+ }
protected void sendHeader(String name, String value) {
template.sendBodyAndHeader("direct:a", "body", name, value);