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

jun aoki commented on OOZIE-1114:
---------------------------------

OK, then you'd go with setup()+teardown() as long as setSystemProperty() sets 
the one single system property across test methods in a class.
If different properties are set in setSystemProperty() depending on test 
methods, then you'd go with try+finally, assuming setSystemProeprty() must be 
called before Services.init()? (just like my test1 and test2 example, and 
TestStatusTransitService class has some methods that take different system 
properties. ) 

If I get it right, it is a simple case and I can help you. Let me know.

                
> Some tests don't use the Services singleton properly
> ----------------------------------------------------
>
>                 Key: OOZIE-1114
>                 URL: https://issues.apache.org/jira/browse/OOZIE-1114
>             Project: Oozie
>          Issue Type: Bug
>    Affects Versions: trunk
>            Reporter: Robert Kanter
>            Assignee: Robert Kanter
>             Fix For: trunk
>
>
> Some of the test classes keep a reference to the Services singleton as a 
> class variable and then also re-create the Services in some of its test 
> methods.  This can cause it to not properly shut down all of the actual 
> services, which can is causing (at least some of) the flakey test failures 
> because some of those still running services interfere with some of the 
> tests.  
> The typical pattern where this issue is happening looks like this:
> {code}
> public class TestWhatever {
>      private Services services1;
>      setup() {
>           services1 = new Services();
>           services1.init();
>      }
>      testSomething() {
>           Services.get().destroy();          // destroys services1's services
>           Services services2 = new Services();     // services1 no longer 
> points to the internal singleton
>           services2.init();
>      }
>      tearDown() {
>           services1.destroy();       // does not destroy the services started 
> by services2, but does set the internal singleton to null so we've now lost 
> the only remaining reference to those services
>      }
> {code}
> You can see a concrete example of this by looking at 
> TestStatusTransitService.testCoordStatusTransitServiceSuspendedWithError
> In general, we should make sure to properly destroy the Services at the end 
> of each test

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to