You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2019/08/02 14:46:31 UTC
[camel] 03/08: CAMEL-12003: Add failFast option to mock endpoint
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 <cl...@gmail.com>
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;
}
}
}