[ https://issues.apache.org/jira/browse/CAMEL-7193?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Claus Ibsen reassigned CAMEL-7193: ---------------------------------- Assignee: Claus Ibsen > Assertions are applied an extra, unnecessary time after an assertion period > --------------------------------------------------------------------------- > > Key: CAMEL-7193 > URL: https://issues.apache.org/jira/browse/CAMEL-7193 > Project: Camel > Issue Type: Improvement > Components: camel-core > Reporter: Anders Rabo Thorbeck > Assignee: Claus Ibsen > Priority: Minor > Fix For: 2.16 > > Original Estimate: 2h > Remaining Estimate: 2h > > {{org.apache.camel.component.mock.MockEndpoint.expectedMessagesMatches(Predicate...)}} > is implemented in such a way that, if the test at hand is run with an assert > period, then an assertion will be run once before the assert period, but will > then be run twice more (when it only needs to run once more) after the > assertion period is up. > This is because the {{run()}} method of the > {{org.apache.camel.component.mock.AssertionClause}} created in > {{expectedMessagesMatches(Predicate...)}} calls > {{AssertionClause.addPredicate(Predicate)}}, which has not been implemented > as an [idempotent|http://en.wiktionary.org/wiki/idempotence] function. > Therefore, when the assertion is run before the assert period, the > {{Predicate}} is added to the {{AssertionClause}} once, and when the > assertion is run again _after_ the assert period, the same {{Predicate}} is > added again to the same {{AssertionClause}}, and so it is executed one more > time than necessary. > This can be fixed by making the method > {{AssertionClause.addPredicate(Predicate)}} idempotent. Suggestions for doing > so are: > * to change the type of > {{org.apache.camel.component.mock.AssertionClause.predicates}} from > {{List<Predicate>}} to {{Set<Predicate>}} ({{java.util.LinkedHashSet}} will > preserve insertion order), or > * to add a containment check in {{AssertionClause.addPredicate(Predicate)}}, > before adding the {{Predicate}} to the list. > I am not sure whether this will work with equality checking of anonymous > Predicate classes with themselves. -- This message was sent by Atlassian JIRA (v6.3.4#6332)