You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beam.apache.org by "Stas Levin (JIRA)" <ji...@apache.org> on 2016/12/20 11:18:58 UTC

[jira] [Commented] (BEAM-1176) Make our test suites use @Rule TestPipeline

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

Stas Levin commented on BEAM-1176:
----------------------------------

I've started migrating the tests to using the {{TestPipeline}} as a JUnit rule. There's quite a few of places to change so this might take a while longer.

From the migration I've done so far, there's a particularly notable pattern we don't currently support in the {{TestPipeline}} rule - having multiple pipeline instances within a single test method. 
This goes beyond supporting multiple {{run}} invocations on the same {{TestPipeline}} rule instance, since such tests make assumption about their internal pipeline instances being isolated. This in turn translates to their {{PTransform}} names often being unstable, and/or dangling pipeline nodes which are acceptable since error handling is performed inside dedicated try/catch blocks inside the test itself.

Examples for such cases can be found the following tests:
*  {{AvroIOGeneratedClassTest#runTestRead}}
*  {{ApproximateUniqueTest#runApproximateUniqueWithDuplicates}},{{ApproximateUniqueTest#runApproximateUniqueWithSkewedDistributions}}
*  {{SampleTest#runPickAnyTest}}
*  {{BigtableIOTest#runReadTest}}

For now I'm refraining from migrating these particular test cases by preserving direct calls to {{TestPipeline.create()}} in places other than the {{@Rule}} declaration itself, which ideally I guess we should avoid.

Any thoughts?

> Make our test suites use @Rule TestPipeline
> -------------------------------------------
>
>                 Key: BEAM-1176
>                 URL: https://issues.apache.org/jira/browse/BEAM-1176
>             Project: Beam
>          Issue Type: Improvement
>          Components: sdk-java-core
>            Reporter: Kenneth Knowles
>            Assignee: Stas Levin
>            Priority: Minor
>
> Now that [~staslev] has made {{TestPipeline}} a JUnit rule that performs useful sanity checks, we should port all of our tests to it so that they set a good example for users. Maybe we'll even catch some straggling tests with errors :-)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)