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 b054f70029f74abb1edf09a49efb13b591f65c0e Author: Claus Ibsen <[email protected]> AuthorDate: Fri Aug 2 07:45:43 2019 +0200 CAMEL-12003: Add failFast option to mock endpoint --- ...AssertionTask.java => AssertionClauseTask.java} | 23 +++----- .../apache/camel/component/mock/AssertionTask.java | 4 +- .../apache/camel/component/mock/MockEndpoint.java | 61 +++++++++++++++------- 3 files changed, 53 insertions(+), 35 deletions(-) diff --git a/components/camel-mock/src/main/java/org/apache/camel/component/mock/AssertionTask.java b/components/camel-mock/src/main/java/org/apache/camel/component/mock/AssertionClauseTask.java similarity index 67% copy from components/camel-mock/src/main/java/org/apache/camel/component/mock/AssertionTask.java copy to components/camel-mock/src/main/java/org/apache/camel/component/mock/AssertionClauseTask.java index 16daf49..572f3d0 100644 --- a/components/camel-mock/src/main/java/org/apache/camel/component/mock/AssertionTask.java +++ b/components/camel-mock/src/main/java/org/apache/camel/component/mock/AssertionClauseTask.java @@ -1,13 +1,13 @@ -/* +/** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * + * <p> + * http://www.apache.org/licenses/LICENSE-2.0 + * <p> * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -16,16 +16,9 @@ */ package org.apache.camel.component.mock; -/** - * Assertion task that supports fail fast mode by running the assertion asap on the n'th received message. - */ -public abstract class AssertionTask implements Runnable { - - /** - * Asserts on the n'th received message - * - * @param index the n'th received message - */ - abstract void assertOnIndex(int index); +public abstract class AssertionClauseTask extends AssertionClause implements AssertionTask { + public AssertionClauseTask(MockEndpoint mock) { + super(mock); + } } diff --git a/components/camel-mock/src/main/java/org/apache/camel/component/mock/AssertionTask.java b/components/camel-mock/src/main/java/org/apache/camel/component/mock/AssertionTask.java index 16daf49..347ba0d 100644 --- a/components/camel-mock/src/main/java/org/apache/camel/component/mock/AssertionTask.java +++ b/components/camel-mock/src/main/java/org/apache/camel/component/mock/AssertionTask.java @@ -19,13 +19,13 @@ package org.apache.camel.component.mock; /** * Assertion task that supports fail fast mode by running the assertion asap on the n'th received message. */ -public abstract class AssertionTask implements Runnable { +public interface AssertionTask extends Runnable { /** * Asserts on the n'th received message * * @param index the n'th received message */ - abstract void assertOnIndex(int index); + public void assertOnIndex(int index); } 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 cdb42de..3465f1c 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 @@ -541,7 +541,7 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint, // we just wants to expects to be called once expects(new AssertionTask() { @Override - void assertOnIndex(int i) { + public void assertOnIndex(int i) { Exchange exchange = getReceivedExchange(i); for (Map.Entry<String, Object> entry : expectedHeaderValues.entrySet()) { String key = entry.getKey(); @@ -635,7 +635,7 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint, expects(new AssertionTask() { @Override - void assertOnIndex(int i) { + public void assertOnIndex(int i) { Exchange exchange = getReceivedExchange(i); for (Map.Entry<String, Object> entry : expectedPropertyValues.entrySet()) { String key = entry.getKey(); @@ -729,7 +729,7 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint, expects(new AssertionTask() { @Override - void assertOnIndex(int i) { + public void assertOnIndex(int i) { Exchange exchange = getReceivedExchange(i); assertTrue("No exchange received for counter: " + i, exchange != null); @@ -783,6 +783,7 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint, final AssertionClause clause = new AssertionClause(this) { public void run() { addPredicate(predicate); + // TODO: Is this correct applyAssertionOn(MockEndpoint.this, messageIndex, assertExchangeReceived(messageIndex)); } }; @@ -809,16 +810,23 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint, */ public AssertionClause expectedBodyReceived() { expectedMessageCount(1); - final AssertionClause clause = new AssertionClause(this) { - public void run() { - Exchange exchange = getReceivedExchange(0); - assertTrue("No exchange received for counter: " + 0, exchange != null); + final AssertionClause clause = new AssertionClauseTask(this) { + @Override + public void assertOnIndex(int index) { + if (index == 0) { + Exchange exchange = getReceivedExchange(index); + assertTrue("No exchange received for counter: " + index, exchange != null); - Object actualBody = exchange.getIn().getBody(); - Expression exp = createExpression(getCamelContext()); - Object expectedBody = exp.evaluate(exchange, Object.class); + Object actualBody = exchange.getIn().getBody(); + Expression exp = createExpression(getCamelContext()); + Object expectedBody = exp.evaluate(exchange, Object.class); - assertEquals("Body of message: " + 0, expectedBody, actualBody); + assertEquals("Body of message: " + index, expectedBody, actualBody); + } + } + + public void run() { + assertOnIndex(0); } }; expects(clause); @@ -941,6 +949,7 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint, * of the given expression such as a user generated counter value */ public AssertionClause expectsAscending() { + // TODO: Task final AssertionClause clause = new AssertionClause(this) { public void run() { assertMessagesAscending(createExpression(getCamelContext())); @@ -967,6 +976,7 @@ 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) { public void run() { assertMessagesDescending(createExpression(getCamelContext())); @@ -999,6 +1009,7 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint, * the expression to determine the message ID */ public AssertionClause expectsNoDuplicates() { + // TODO: Task final AssertionClause clause = new AssertionClause(this) { public void run() { assertNoDuplicates(createExpression(getCamelContext())); @@ -1012,6 +1023,7 @@ 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); } @@ -1019,6 +1031,7 @@ 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); } @@ -1076,9 +1089,16 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint, * @return the assertion clause */ public AssertionClause message(final int messageIndex) { - final AssertionClause clause = new AssertionClause(this) { + final AssertionClause clause = new AssertionClauseTask(this) { + @Override + public void assertOnIndex(int index) { + if (index == messageIndex) { + applyAssertionOn(MockEndpoint.this, index, assertExchangeReceived(index)); + } + } + public void run() { - applyAssertionOn(MockEndpoint.this, messageIndex, assertExchangeReceived(messageIndex)); + assertOnIndex(messageIndex); } }; expects(clause); @@ -1091,12 +1111,15 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint, * @return the assertion clause */ public AssertionClause allMessages() { - final AssertionClause clause = new AssertionClause(this) { + final AssertionClause clause = new AssertionClauseTask(this) { + @Override + public void assertOnIndex(int index) { + applyAssertionOn(MockEndpoint.this, index, assertExchangeReceived(index)); + } + public void run() { - List<Exchange> list = getReceivedExchanges(); - int index = 0; - for (Exchange exchange : list) { - applyAssertionOn(MockEndpoint.this, index++, exchange); + for (int i = 0; i < getReceivedCounter(); i++) { + assertOnIndex(i); } } }; @@ -1411,6 +1434,8 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint, while (latch != null && latch.getCount() > 0) { latch.countDown(); } + // we are failing fast + break; } } }
