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

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

Yeah, try-finally it is! :)

I thought setSystemProperty() should be set accordingly before each 
Services.init()?

{code}
public class TestWhatever {

     test1() {
          Services services2 = new Services();
          setSystemProperty("set.something", true);
          services2.init();
          try{
              // do some test
          }finally{
              services2.destory();
          }
     }

     test2() {
          Services services2 = new Services();
          setSystemProperty("set.something.else", false);
          services2.init();
          try{
              // do some test
          }finally{
              services2.destory();
          }
     }

}
{code}

Just my 2 cents. Ignore me if I'm mistaken, I would enjoy your final check in :)

                
> 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