1
2
3
4
5
6
7
8
9
10
11 package org.mule.impl;
12
13 import org.mule.config.builders.QuickConfigurationBuilder;
14 import org.mule.providers.AbstractConnector;
15 import org.mule.tck.AbstractMuleTestCase;
16 import org.mule.tck.testmodels.fruit.Orange;
17 import org.mule.umo.ComponentException;
18 import org.mule.umo.UMOComponent;
19 import org.mule.umo.UMODescriptor;
20 import org.mule.umo.UMOException;
21 import org.mule.umo.UMOSession;
22 import org.mule.umo.manager.UMOManager;
23 import org.mule.umo.model.UMOModel;
24 import org.mule.umo.provider.UMOMessageReceiver;
25
26 import java.util.Iterator;
27
28 public class MuleComponentTestCase extends AbstractMuleTestCase
29 {
30 public void testSendToPausedComponent() throws Exception
31 {
32 QuickConfigurationBuilder builder = new QuickConfigurationBuilder(true);
33 builder.registerComponent(Orange.class.getName(), "orangeComponent", "test://in", "test://out", null);
34 builder.createStartedManager(true, "");
35 UMOModel model = getDefaultModel();
36
37 final UMOComponent comp = model.getComponent("orangeComponent");
38 assertTrue(comp.isStarted());
39 comp.pause();
40 new Thread(new Runnable()
41 {
42 public void run()
43 {
44 try
45 {
46 Thread.sleep(2000);
47 }
48 catch (InterruptedException e)
49 {
50 Thread.currentThread().interrupt();
51 throw new RuntimeException(e);
52 }
53
54 try
55 {
56 comp.resume();
57 }
58 catch (UMOException e)
59 {
60 fail(e.getMessage());
61 }
62 }
63 }).start();
64 long t0 = System.currentTimeMillis();
65 comp.sendEvent(getTestEvent("hello"));
66 long t1 = System.currentTimeMillis();
67 assertTrue(t1 - t0 > 1000);
68 }
69
70 public void testSendToStoppedComponent() throws Exception
71 {
72 MuleDescriptor descriptor = getTestDescriptor("myComponent",
73 "org.mule.components.simple.EchoComponent");
74 UMOComponent comp = getTestComponent(descriptor);
75
76 assertTrue(!comp.isStarted());
77
78 try
79 {
80 comp.dispatchEvent(getTestEvent("hello"));
81 fail();
82 }
83 catch (ComponentException e)
84 {
85
86 }
87
88 try
89 {
90 comp.sendEvent(getTestEvent("hello"));
91 fail();
92 }
93 catch (ComponentException e)
94 {
95
96 }
97 }
98
99
100 public void testInitialStateStopped() throws Exception
101 {
102 QuickConfigurationBuilder builder = new QuickConfigurationBuilder(true);
103
104 builder.getManager().registerConnector(getTestConnector());
105
106 UMODescriptor d = builder.createDescriptor(Orange.class.getName(), "orangeComponent",
107 builder.createEndpoint("test://in", null, true), null, null);
108 d.setInitialState(ImmutableMuleDescriptor.INITIAL_STATE_STOPPED);
109 builder.registerComponent(d);
110
111
112 UMOManager manager = builder.createStartedManager(true, "");
113
114 UMOModel model = getDefaultModel();
115 UMOSession session = new MuleSession(model.getComponent("orangeComponent"));
116 final UMOComponent c = session.getComponent();
117
118 assertFalse(c.isStarted());
119
120
121 AbstractConnector connector = (AbstractConnector)manager.lookupConnector("testConnector");
122 assertTrue(connector.isStarted());
123 assertTrue(connector.getReceivers().isEmpty());
124
125
126 c.start();
127
128
129 assertTrue(connector.isStarted());
130 assertFalse(connector.getReceivers().isEmpty());
131
132 assertTrue(c.isStarted());
133 Iterator it = connector.getReceivers().values().iterator();
134 while (it.hasNext())
135 {
136 assertTrue(((UMOMessageReceiver)it.next()).isConnected());
137 }
138 }
139
140
141 public void testStoppingComponentStopsEndpoints() throws Exception
142 {
143 QuickConfigurationBuilder builder = new QuickConfigurationBuilder(true);
144
145 builder.getManager().registerConnector(getTestConnector());
146
147 builder.registerComponent(Orange.class.getName(), "orangeComponent", "test://in", "test://out", null);
148
149
150 UMOManager manager = builder.createStartedManager(true, "");
151 UMOModel model = getDefaultModel();
152 UMOSession session = new MuleSession(model.getComponent("orangeComponent"));
153 final UMOComponent c = session.getComponent();
154 assertTrue(c.isStarted());
155
156
157 AbstractConnector connector = (AbstractConnector)manager.lookupConnector("testConnector");
158 assertTrue(connector.isStarted());
159 assertFalse(connector.getReceivers().isEmpty());
160
161 Iterator it = connector.getReceivers().values().iterator();
162 while (it.hasNext())
163 {
164 assertTrue(((UMOMessageReceiver)it.next()).isConnected());
165 }
166
167
168 c.stop();
169
170 assertFalse(c.isStarted());
171
172 assertTrue(connector.isStarted());
173 assertTrue(connector.getReceivers().isEmpty());
174 }
175 }