This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
commit c38bd5a7a3728592c7564af3c45bf7149c9f32a4 Author: Claus Ibsen <[email protected]> AuthorDate: Fri Aug 2 16:20:04 2019 +0200 CAMEL-12003: Add failFast option to mock endpoint --- .../camel/component/mock/AssertionClauseTask.java | 3 ++ .../apache/camel/component/mock/MockEndpoint.java | 58 ++++++++++++++-------- 2 files changed, 41 insertions(+), 20 deletions(-) diff --git a/components/camel-mock/src/main/java/org/apache/camel/component/mock/AssertionClauseTask.java b/components/camel-mock/src/main/java/org/apache/camel/component/mock/AssertionClauseTask.java index 572f3d0..b613908 100644 --- a/components/camel-mock/src/main/java/org/apache/camel/component/mock/AssertionClauseTask.java +++ b/components/camel-mock/src/main/java/org/apache/camel/component/mock/AssertionClauseTask.java @@ -16,6 +16,9 @@ */ package org.apache.camel.component.mock; +/** + * An {@link AssertionClause} that bridges with fail fast mode ({@link AssertionTask}). + */ public abstract class AssertionClauseTask extends AssertionClause implements AssertionTask { public AssertionClauseTask(MockEndpoint mock) { diff --git a/components/camel-mock/src/main/java/org/apache/camel/component/mock/MockEndpoint.java b/components/camel-mock/src/main/java/org/apache/camel/component/mock/MockEndpoint.java index a7a613f..fb0ecff 100644 --- a/components/camel-mock/src/main/java/org/apache/camel/component/mock/MockEndpoint.java +++ b/components/camel-mock/src/main/java/org/apache/camel/component/mock/MockEndpoint.java @@ -945,9 +945,13 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint, * of the given expression such as a user generated counter value */ public void expectsAscending(final Expression expression) { - expects(new Runnable() { + expects(new AssertionTask() { + @Override + public void assertOnIndex(int index) { + assertMessagesSorted(expression, true, index); + } + public void run() { - // TODO: Task assertMessagesAscending(expression); } }); @@ -961,9 +965,7 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint, final AssertionClause clause = new AssertionClauseTask(this) { @Override public void assertOnIndex(int index) { - // TODO: Make this smarter - // just run from top again - run(); + assertMessagesSorted(createExpression(getCamelContext()), true, index); } public void run() { @@ -979,7 +981,12 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint, * of the given expression such as a user generated counter value */ public void expectsDescending(final Expression expression) { - expects(new Runnable() { + expects(new AssertionTask() { + @Override + public void assertOnIndex(int index) { + assertMessagesSorted(expression, false, index); + } + public void run() { assertMessagesDescending(expression); } @@ -991,8 +998,12 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint, * of the given expression such as a user generated counter value */ public AssertionClause expectsDescending() { - // TODO: Task - final AssertionClause clause = new AssertionClause(this) { + final AssertionClause clause = new AssertionClauseTask(this) { + @Override + public void assertOnIndex(int index) { + assertMessagesSorted(createExpression(getCamelContext()), false, index); + } + public void run() { assertMessagesDescending(createExpression(getCamelContext())); } @@ -1075,7 +1086,6 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint, * Asserts that the messages have ascending values of the given expression */ public void assertMessagesAscending(Expression expression) { - // TODO: Task assertMessagesSorted(expression, true); } @@ -1083,35 +1093,43 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint, * Asserts that the messages have descending values of the given expression */ public void assertMessagesDescending(Expression expression) { - // TODO: Task assertMessagesSorted(expression, false); } protected void assertMessagesSorted(Expression expression, boolean ascending) { + List<Exchange> list = getReceivedExchanges(); + for (int i = 0; i < list.size(); i++) { + assertMessagesSorted(expression, ascending, i); + } + } + + protected void assertMessagesSorted(Expression expression, boolean ascending, int index) { String type = ascending ? "ascending" : "descending"; ExpressionComparator comparator = new ExpressionComparator(expression); - List<Exchange> list = getReceivedExchanges(); - for (int i = 1; i < list.size(); i++) { - int j = i - 1; - Exchange e1 = list.get(j); - Exchange e2 = list.get(i); + + int prev = index - 1; + if (prev > 0) { + List<Exchange> list = getReceivedExchanges(); + Exchange e1 = list.get(prev); + Exchange e2 = list.get(index); int result = comparator.compare(e1, e2); if (result == 0) { - fail("Messages not " + type + ". Messages" + j + " and " + i + " are equal with value: " - + expression.evaluate(e1, Object.class) + " for expression: " + expression + ". Exchanges: " + e1 + " and " + e2); + fail("Messages not " + type + ". Messages" + prev + " and " + index + " are equal with value: " + + expression.evaluate(e1, Object.class) + " for expression: " + expression + ". Exchanges: " + e1 + " and " + e2); } else { if (!ascending) { result = result * -1; } if (result > 0) { - fail("Messages not " + type + ". Message " + j + " has value: " + expression.evaluate(e1, Object.class) - + " and message " + i + " has value: " + expression.evaluate(e2, Object.class) + " for expression: " - + expression + ". Exchanges: " + e1 + " and " + e2); + fail("Messages not " + type + ". Message " + prev + " has value: " + expression.evaluate(e1, Object.class) + + " and message " + index + " has value: " + expression.evaluate(e2, Object.class) + " for expression: " + + expression + ". Exchanges: " + e1 + " and " + e2); } } } } + /** * Asserts among all the current received exchanges that there are no duplicate message *
