View Javadoc

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