View Javadoc

1   /*
2    * $Id: RegisteredObjectLifecycleTestCase.java 22377 2011-07-11 12:41:42Z dirk.olmes $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
9    */
10  package org.mule.registry;
11  
12  import org.mule.api.MuleException;
13  import org.mule.api.lifecycle.InitialisationException;
14  import org.mule.api.lifecycle.Lifecycle;
15  import org.mule.tck.junit4.AbstractMuleContextTestCase;
16  import org.mule.util.concurrent.Latch;
17  
18  import java.util.concurrent.TimeUnit;
19  import org.junit.Test;
20  
21  import static org.junit.Assert.assertFalse;
22  import static org.junit.Assert.assertTrue;
23  
24  public class RegisteredObjectLifecycleTestCase extends AbstractMuleContextTestCase
25  {
26      private static final long TIMEOUT = 1000;
27  
28      protected Latch initLatch;
29      protected Latch startLatch;
30      protected Latch stopLatch;
31      protected Latch disposeLatch;
32  
33      private DummyBean bean = new DummyBean();
34  
35      @Override
36      protected void doSetUp() throws Exception
37      {
38          bean = new DummyBean();
39          initLatch = new Latch();
40          startLatch = new Latch();
41          stopLatch = new Latch();
42          disposeLatch = new Latch();
43      }
44  
45      @Test
46      public void testLifecycleForMuleContext() throws Exception
47      {
48          muleContext.getRegistry().registerObject("dummy", bean);
49          assertTrue(initLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
50          assertFalse(startLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
51          assertFalse(stopLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
52          assertFalse(disposeLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
53  
54          muleContext.start();
55          assertTrue(startLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
56          assertFalse(stopLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
57          assertFalse(disposeLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
58  
59          muleContext.stop();
60          assertTrue(stopLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
61          assertFalse(disposeLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
62  
63          muleContext.dispose();
64          assertTrue(disposeLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
65      }
66  
67      @Test
68      public void testLifecycleForUnregisteredObject() throws Exception
69      {
70          muleContext.getRegistry().registerObject("dummy", bean);
71          assertTrue(initLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
72          assertFalse(startLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
73          assertFalse(stopLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
74          assertFalse(disposeLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
75  
76          muleContext.start();
77          assertTrue(startLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
78          assertFalse(stopLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
79          assertFalse(disposeLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
80  
81          muleContext.getRegistry().unregisterObject("dummy");
82          assertTrue(stopLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
83          assertTrue(disposeLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
84      }
85  
86      public class DummyBean implements Lifecycle
87      {
88          public String echo(String echo)
89          {
90              return echo;
91          }
92  
93          public void initialise() throws InitialisationException
94          {
95              initLatch.countDown();
96          }
97  
98          public void start() throws MuleException
99          {
100             startLatch.countDown();
101         }
102 
103         public void stop() throws MuleException
104         {
105             stopLatch.countDown();
106         }
107 
108         public void dispose()
109         {
110             disposeLatch.countDown();
111         }
112 
113         public boolean isInitialised()
114         {
115             return false;
116         }
117 
118         public boolean isStarted()
119         {
120             return false;
121         }
122 
123         public boolean isStopped()
124         {
125             return false;
126         }
127 
128         public boolean isDisposed()
129         {
130             return false;
131         }
132     }
133 }