1
2
3
4
5
6
7 package org.mule.management.mbeans;
8
9 import org.mule.api.config.ThreadingProfile;
10 import org.mule.component.DefaultJavaComponent;
11 import org.mule.management.AbstractMuleJmxTestCase;
12 import org.mule.model.seda.SedaModel;
13 import org.mule.model.seda.SedaService;
14 import org.mule.module.management.mbean.ServiceService;
15 import org.mule.object.SingletonObjectFactory;
16
17 import java.util.Set;
18
19 import javax.management.ObjectName;
20
21 import org.junit.Test;
22
23 import static org.junit.Assert.assertEquals;
24
25 public class ServiceServiceTestCase extends AbstractMuleJmxTestCase
26 {
27 @Test
28 public void testUndeploy() throws Exception
29 {
30 final String domainOriginal = "TEST_DOMAIN_1";
31
32 final SedaService service = new SedaService(muleContext);
33 service.setName("TEST_SERVICE");
34 SingletonObjectFactory factory = new SingletonObjectFactory(Object.class);
35 final DefaultJavaComponent component = new DefaultJavaComponent(factory);
36 component.setMuleContext(muleContext);
37 service.setComponent(component);
38
39 service.setThreadingProfile(ThreadingProfile.DEFAULT_THREADING_PROFILE);
40 SedaModel model = new SedaModel();
41 model.setMuleContext(muleContext);
42 service.setModel(model);
43 muleContext.getRegistry().registerModel(model);
44 muleContext.getRegistry().registerService(service);
45 muleContext.start();
46
47 final ServiceService jmxService = new ServiceService("TEST_SERVICE", muleContext);
48 final ObjectName name = ObjectName.getInstance(domainOriginal + ":type=TEST_SERVICE");
49 mBeanServer.registerMBean(jmxService, name);
50 Set mbeans = mBeanServer.queryMBeans(ObjectName.getInstance(domainOriginal + ":*"), null);
51
52
53
54
55
56
57 assertEquals("Unexpected number of components registered in the domain.", 4, mbeans.size());
58
59 mBeanServer.unregisterMBean(name);
60
61 mbeans = mBeanServer.queryMBeans(ObjectName.getInstance(domainOriginal + ":*"), null);
62
63 assertEquals("There should be no MBeans left in the domain", 0, mbeans.size());
64 }
65 }