View Javadoc

1   /*
2    * $Id: RegistryBrokerTestCase.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  
11  package org.mule.registry;
12  
13  import org.mule.api.MuleContext;
14  import org.mule.api.MuleException;
15  import org.mule.construct.Flow;
16  import org.mule.tck.junit4.AbstractMuleContextTestCase;
17  import org.mule.tck.testmodels.mule.TestConnector;
18  
19  import org.junit.Test;
20  
21  import static org.junit.Assert.assertEquals;
22  
23  public class RegistryBrokerTestCase extends AbstractMuleContextTestCase
24  {
25  
26      private String tracker;
27  
28      @Override
29      protected void doSetUp() throws Exception
30      {
31          super.doSetUp();
32          tracker = new String();
33      }
34  
35      @Override
36      protected boolean isStartContext()
37      {
38          return false;
39      }
40  
41      @Test
42      public void testCrossRegistryLifecycleOrder() throws MuleException
43      {
44  
45          TransientRegistry reg1 = new TransientRegistry(muleContext);
46          reg1.initialise();
47          TransientRegistry reg2 = new TransientRegistry(muleContext);
48          reg2.initialise();
49  
50          reg1.registerObject("conn", new LifecycleTrackerConnector("conn", muleContext));
51          reg2.registerObject("conn2", new LifecycleTrackerConnector("conn2", muleContext));
52          reg1.registerObject("flow", new LifecycleTrackerFlow("flow", muleContext));
53          reg2.registerObject("flow2", new LifecycleTrackerFlow("flow2", muleContext));
54  
55          muleContext.addRegistry(reg1);
56          muleContext.addRegistry(reg2);
57  
58          muleContext.start();
59  
60          // Both connectors are started before either flow
61          assertEquals("conn2-start conn-start flow2-start flow-start ", tracker.toString());
62  
63          tracker = new String();
64          muleContext.stop();
65  
66          // Both services are stopped before either connector
67          assertEquals("flow2-stop flow-stop conn2-stop conn-stop ", tracker);
68      }
69  
70      class LifecycleTrackerConnector extends TestConnector
71      {
72  
73          public LifecycleTrackerConnector(String name, MuleContext context)
74          {
75              super(context);
76              this.name = name;
77          }
78  
79          @Override
80          protected void doStart()
81          {
82              super.doStart();
83              tracker += name + "-start ";
84          }
85  
86          @Override
87          protected void doStop()
88          {
89              super.doStop();
90              tracker += name + "-stop ";
91          }
92      }
93  
94      class LifecycleTrackerFlow extends Flow
95      {
96  
97          public LifecycleTrackerFlow(String name, MuleContext muleContext)
98          {
99              super(name, muleContext);
100         }
101 
102         @Override
103         protected void doStart() throws MuleException
104         {
105             super.doStart();
106             tracker += name + "-start ";
107         }
108 
109         @Override
110         protected void doStop() throws MuleException
111         {
112             super.doStop();
113             tracker += name + "-stop ";
114         }
115     }
116 
117 }