View Javadoc
1   /*
2    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
3    * The software in this package is published under the terms of the CPAL v1.0
4    * license, a copy of which has been included with this distribution in the
5    * LICENSE.txt file.
6    */
7   package org.mule.management.support;
8   
9   import org.mule.api.context.MuleContextBuilder;
10  import org.mule.config.DefaultMuleConfiguration;
11  import org.mule.management.AbstractMuleJmxTestCase;
12  import org.mule.module.management.mbean.StatisticsService;
13  import org.mule.module.management.support.JmxModernSupport;
14  
15  import java.util.Arrays;
16  import java.util.List;
17  
18  import javax.management.ObjectName;
19  
20  import org.junit.Test;
21  
22  import static org.junit.Assert.assertEquals;
23  import static org.junit.Assert.assertTrue;
24  
25  public class JmxSupportTestCase extends AbstractMuleJmxTestCase
26  {
27      private final String MANAGER_ID = "Test_Instance";
28      private final String TEST_DOMAIN = JmxModernSupport.DEFAULT_JMX_DOMAIN_PREFIX + "." + MANAGER_ID;
29  
30      @Override
31      protected void configureMuleContext(MuleContextBuilder contextBuilder)
32      {
33          super.configureMuleContext(contextBuilder);
34  
35          DefaultMuleConfiguration config = new DefaultMuleConfiguration();
36          config.setId(MANAGER_ID);
37          contextBuilder.setMuleConfiguration(config);
38      }
39  
40      @Test
41      public void testClashingDomains() throws Exception
42      {
43          // pre-register the same domain to simulate a clashing domain
44          ObjectName name = ObjectName.getInstance(TEST_DOMAIN + ":name=TestDuplicates");
45          mBeanServer.registerMBean(new StatisticsService(), name);
46  
47          muleContext.start();
48  
49          List<String> domains = Arrays.asList(mBeanServer.getDomains());
50          assertTrue("Should have contained an original domain.", domains.contains(TEST_DOMAIN));
51          assertTrue("Should have contained a new domain.", domains.contains(TEST_DOMAIN + ".1"));
52      }
53  
54      @Test
55      public void testClashingSuffixedDomains() throws Exception
56      {
57  
58          // get original, pre-test number of domains
59          int numOriginalDomains = mBeanServer.getDomains().length;
60  
61          // pre-register the same domain to simulate a clashing domain
62          ObjectName name = ObjectName.getInstance(TEST_DOMAIN + ":name=TestDuplicates");
63          mBeanServer.registerMBean(new StatisticsService(), name);
64  
65          // add another domain with suffix already applied
66          name = ObjectName.getInstance(TEST_DOMAIN + ".1" + ":name=TestDuplicates");
67          mBeanServer.registerMBean(new StatisticsService(), name);
68  
69          assertEquals("Wrong number of domains created.",
70                       numOriginalDomains + 2, mBeanServer.getDomains().length);
71  
72          muleContext.start();
73  
74          List<String> domains = Arrays.asList(mBeanServer.getDomains());
75          // one extra domain created by Mule's clash resolution
76          assertEquals("Wrong number of domains created.",
77                       numOriginalDomains + 3, domains.size());
78  
79          assertTrue("Should have contained an original domain.", domains.contains(TEST_DOMAIN));
80          assertTrue("Should have contained an original suffixed domain.", domains.contains(TEST_DOMAIN + ".1"));
81          assertTrue("Should have contained a new domain.", domains.contains(TEST_DOMAIN + ".2"));
82      }
83      
84  }