1   /*
2    * $Id: JmxSupportTestCase.java 7976 2007-08-21 14:26:13Z dirk.olmes $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.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.management.AbstractMuleJmxTestCase;
13  import org.mule.management.agents.JmxAgent;
14  import org.mule.management.mbeans.StatisticsService;
15  import org.mule.umo.manager.UMOManager;
16  
17  import java.util.Arrays;
18  import java.util.List;
19  
20  import javax.management.ObjectName;
21  
22  public class JmxSupportTestCase extends AbstractMuleJmxTestCase
23  {
24  
25      public void testClashingDomains() throws Exception
26      {
27          final String managerId = "Test_Instance";
28  
29          // pre-register the same domain to simulate a clashing domain
30          final String testDomain = JmxModernSupport.DEFAULT_JMX_DOMAIN_PREFIX + "." + managerId;
31          ObjectName name = ObjectName.getInstance(testDomain + ":name=TestDuplicates");
32          mBeanServer.registerMBean(new StatisticsService(), name);
33  
34          UMOManager manager = getManager(true);
35          manager.setId(managerId);
36          JmxAgent agent = new JmxAgent();
37          manager.registerAgent(agent);
38          manager.start();
39  
40          List domains = Arrays.asList(mBeanServer.getDomains());
41          assertTrue("Should have contained an original domain.", domains.contains(testDomain));
42          assertTrue("Should have contained a new domain.", domains.contains(testDomain + ".1"));
43      }
44  
45      public void testClashingSuffixedDomains() throws Exception
46      {
47          final String managerId = "Test_Instance";
48  
49          // get original, pre-test number of domains
50          int numOriginalDomains = mBeanServer.getDomains().length;
51  
52          // pre-register the same domain to simulate a clashing domain
53          final String testDomain = JmxModernSupport.DEFAULT_JMX_DOMAIN_PREFIX + "." + managerId;
54          ObjectName name = ObjectName.getInstance(testDomain + ":name=TestDuplicates");
55          mBeanServer.registerMBean(new StatisticsService(), name);
56  
57          // add another domain with suffix already applied
58          name = ObjectName.getInstance(testDomain + ".1" + ":name=TestDuplicates");
59          mBeanServer.registerMBean(new StatisticsService(), name);
60  
61          assertEquals("Wrong number of domains created.",
62                       numOriginalDomains + 2, mBeanServer.getDomains().length);
63  
64          UMOManager manager = getManager(true);
65          manager.setId(managerId);
66          JmxAgent agent = new JmxAgent();
67          manager.registerAgent(agent);
68          manager.start();
69  
70          List 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(testDomain));
76          assertTrue("Should have contained an original suffixed domain.", domains.contains(testDomain + ".1"));
77          assertTrue("Should have contained a new domain.", domains.contains(testDomain + ".2"));
78      }
79  
80      public void testDomainNoManagerIdAndJmxAgentMustFail() throws Exception
81      {
82          UMOManager manager = getManager(true);
83          JmxAgent jmxAgent = new JmxAgent();
84          manager.registerAgent(jmxAgent);
85          manager.setId(null);
86          try
87          {
88              manager.start();
89              fail("Should have failed.");
90              // TODO rework the exception, not the best one here
91          } catch (IllegalArgumentException e)
92          {
93              // this form makes code coverage happier
94              assertTrue(true);
95          }
96      }
97  
98  }