View Javadoc

1   /*
2    * $Id: JmxSupportTestCase.java 20321 2010-11-24 15:21:24Z dfeist $
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.management.support;
11  
12  import org.mule.api.context.MuleContextBuilder;
13  import org.mule.config.DefaultMuleConfiguration;
14  import org.mule.management.AbstractMuleJmxTestCase;
15  import org.mule.module.management.mbean.StatisticsService;
16  import org.mule.module.management.support.JmxModernSupport;
17  
18  import java.util.Arrays;
19  import java.util.List;
20  
21  import javax.management.ObjectName;
22  
23  public class JmxSupportTestCase extends AbstractMuleJmxTestCase
24  {
25      private final String MANAGER_ID = "Test_Instance";
26      private final String TEST_DOMAIN = JmxModernSupport.DEFAULT_JMX_DOMAIN_PREFIX + "." + MANAGER_ID;
27  
28      @Override
29      protected void configureMuleContext(MuleContextBuilder contextBuilder)
30      {
31          super.configureMuleContext(contextBuilder);
32  
33          DefaultMuleConfiguration config = new DefaultMuleConfiguration();
34          config.setId(MANAGER_ID);
35          contextBuilder.setMuleConfiguration(config);
36      }
37  
38      public void testClashingDomains() throws Exception
39      {
40          // pre-register the same domain to simulate a clashing domain
41          ObjectName name = ObjectName.getInstance(TEST_DOMAIN + ":name=TestDuplicates");
42          mBeanServer.registerMBean(new StatisticsService(), name);
43  
44          muleContext.start();
45  
46          List<String> domains = Arrays.asList(mBeanServer.getDomains());
47          assertTrue("Should have contained an original domain.", domains.contains(TEST_DOMAIN));
48          assertTrue("Should have contained a new domain.", domains.contains(TEST_DOMAIN + ".1"));
49      }
50  
51      public void testClashingSuffixedDomains() throws Exception
52      {
53  
54          // get original, pre-test number of domains
55          int numOriginalDomains = mBeanServer.getDomains().length;
56  
57          // pre-register the same domain to simulate a clashing domain
58          ObjectName name = ObjectName.getInstance(TEST_DOMAIN + ":name=TestDuplicates");
59          mBeanServer.registerMBean(new StatisticsService(), name);
60  
61          // add another domain with suffix already applied
62          name = ObjectName.getInstance(TEST_DOMAIN + ".1" + ":name=TestDuplicates");
63          mBeanServer.registerMBean(new StatisticsService(), name);
64  
65          assertEquals("Wrong number of domains created.",
66                       numOriginalDomains + 2, mBeanServer.getDomains().length);
67  
68          muleContext.start();
69  
70          List<String> domains = Arrays.asList(mBeanServer.getDomains());
71          // one extra domain created by Mule's clash resolution
72          assertEquals("Wrong number of domains created.",
73                       numOriginalDomains + 3, domains.size());
74  
75          assertTrue("Should have contained an original domain.", domains.contains(TEST_DOMAIN));
76          assertTrue("Should have contained an original suffixed domain.", domains.contains(TEST_DOMAIN + ".1"));
77          assertTrue("Should have contained a new domain.", domains.contains(TEST_DOMAIN + ".2"));
78      }
79      
80  }