nifi-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Toivo Adams (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (NIFI-1214) Mock Framework should allow order-independent assumptions on FlowFiles
Date Thu, 28 Apr 2016 16:15:13 GMT

    [ https://issues.apache.org/jira/browse/NIFI-1214?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15262420#comment-15262420
] 

Toivo Adams commented on NIFI-1214:
-----------------------------------

 To move on and clean a mess I created new pull request.

https://github.com/apache/nifi/pull/388

nifi-1214b Mock Framework should allow order-independent assumptions on FlowFiles. This replaces
previous nifi-1214

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)

Mime
View raw message