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

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

Robert, did you mean this way? Is the real fix supposed to be as easy as my 
pseudo code? If it is, I can help you. Let me know.

{code}
public class TestWhatever {

     setup() {
        // no Services() instanciation 
     }

     testSomething() {
          Services services2 = new Services();
          services2.init();
          // do some test
          services2.destory();
     }

     tearDown() {
        // no destory()

     }
{code}
                
> 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