[ https://issues.apache.org/jira/browse/NIFI-1214?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15233605#comment-15233605 ]
Toivo Adams commented on NIFI-1214: ----------------------------------- Mark, For me NIFI-1213 looks also similar. Maybe one flexible implementation can cover both. So you are ready to drop 1.7 and implement only java 8 version? Some very conservative institutions still use 1.6 thanks toivo > Mock Framework should allow order-independent assumptions on FlowFiles > ---------------------------------------------------------------------- > > Key: NIFI-1214 > URL: https://issues.apache.org/jira/browse/NIFI-1214 > Project: Apache NiFi > Issue Type: Improvement > Components: Tools and Build > Reporter: Mark Payne > Assignee: Toivo Adams > Fix For: 1.0.0 > > > A common pattern in unit testing is to iterate over all FlowFiles that are > output to a Relationship and verify that each FlowFile matches one criteria > or another and that all criteria are met. For example, the following code > snippet from TestRouteText verifies that two FlowFiles were output and that > Criteria A was met by one of them and Criteria B was met by the other: > {code} > final List<MockFlowFile> list = > runner.getFlowFilesForRelationship("o"); > boolean found1 = false; > boolean found2 = false; > for (final MockFlowFile mff : list) { > if (mff.getAttribute(RouteText.GROUP_ATTRIBUTE_KEY).equals("1")) { > mff.assertContentEquals("1,hello\n1,good-bye"); > found1 = true; > } else { > mff.assertAttributeEquals(RouteText.GROUP_ATTRIBUTE_KEY, "2"); > mff.assertContentEquals("2,world\n"); > found2 = true; > } > } > assertTrue(found1); > assertTrue(found2); > {code} > This is very verbose, and error-prone. It could be done much more concisely > if we have a method like: > {code} > TestRunner.assertAllConditionsMet( Relationship relationship, > FlowFileVerifier... verifier ); > {code} > Where FlowFileVerifier is able to verify some condition on a FlowFile. This > method would then be responsible for ensuring that each FlowFile that was > routed to 'relationship' meets one of the criteria specified by a verifier, > and that all of the verifiers were met. For example: > {code} > runner.assertAllConditionsMet( "o", > { mff -> mff.isAttributeEqual(RouteText.GROUP_ATTRIBUTE_KEY, "1") && > mff.isContentEqual("1,hello\n1,good-bye") }, > { mff -> mff.isAttributeEqual(RouteText.GROUP_ATTRIBUTE_KEY, "2") && > mff.isContentEqual("2,world\n") } > ); > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)