1
2
3
4
5
6
7
8
9
10
11 package org.mule.test.integration.components;
12
13 import org.mule.lifecycle.AbstractLifecycleTracker;
14 import org.mule.module.client.MuleClient;
15 import org.mule.tck.FunctionalTestCase;
16
17
18
19
20
21 public class LifecycleTrackerComponentFunctionalTestCase extends FunctionalTestCase
22 {
23
24 @Override
25 protected String getConfigResources()
26 {
27 return "org/mule/test/integration/components/component-lifecycle-config.xml";
28 }
29
30
31
32
33
34
35
36
37
38
39 public void testSpringBeanServiceLifecycle() throws Exception
40 {
41 testComponentLifecycle(
42 "SpringBeanService",
43 "[setProperty, setMuleContext, springInitialize, setService, start, stop, springDestroy]");
44 }
45
46
47
48
49
50
51
52
53
54
55 public void testSpringBeanService2Lifecycle() throws Exception
56 {
57 testComponentLifecycle(
58 "SpringBeanService2",
59 "[setProperty, setMuleContext, setService, start, stop]");
60 }
61
62
63
64
65
66
67
68 public void testSingletonServiceLifecycle() throws Exception
69 {
70 testComponentLifecycle("MuleSingletonService",
71 "[setProperty, setService, setMuleContext, initialise, start, stop, dispose]");
72 }
73
74
75
76
77
78
79
80 public void testMulePrototypeServiceLifecycle() throws Exception
81 {
82 testComponentLifecycle("MulePrototypeService",
83 "[setProperty, setService, setMuleContext, initialise, start, stop, dispose]");
84 }
85
86
87
88
89
90
91
92 public void testMulePooledPrototypeServiceLifecycle() throws Exception
93 {
94 testComponentLifecycle("MulePooledPrototypeService", "[setProperty, setService, setMuleContext, initialise, start, stop, dispose]");
95 }
96
97
98
99
100
101
102
103 public void testMulePooledSingletonServiceLifecycle() throws Exception
104 {
105 testComponentLifecycle("MulePooledSingletonService", "[setProperty, setService, setMuleContext, initialise, initialise, initialise, start, start, start, stop, stop, stop, dispose, dispose, dispose]");
106 }
107
108 private void testComponentLifecycle(final String serviceName, final String expectedLifeCycle)
109 throws Exception
110 {
111
112 final AbstractLifecycleTracker tracker = exerciseComponent(serviceName);
113
114 muleContext.dispose();
115
116 assertEquals(serviceName, expectedLifeCycle, tracker.getTracker().toString());
117 }
118
119 private AbstractLifecycleTracker exerciseComponent(final String serviceName) throws Exception
120 {
121 MuleClient muleClient = new MuleClient(muleContext);
122 final AbstractLifecycleTracker ltc = (AbstractLifecycleTracker) muleClient.send(
123 "vm://" + serviceName + ".In", null, null).getPayload();
124
125 assertNotNull(ltc);
126
127 return ltc;
128 }
129 }