You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@oozie.apache.org by "jun aoki (JIRA)" <ji...@apache.org> on 2012/12/05 01:30:58 UTC

[jira] [Commented] (OOZIE-1114) Some tests don't use the Services singleton properly

    [ 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