View Javadoc

1   /*
2    * $Id: JmxDuplicateEndpointNamesTestCase.java 22471 2011-07-20 10:36:17Z claude.mamo $
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  
11  package org.mule.management;
12  
13  import static org.junit.Assert.assertEquals;
14  import static org.junit.Assert.assertTrue;
15  
16  import org.mule.tck.AbstractServiceAndFlowTestCase;
17  
18  import java.util.ArrayList;
19  import java.util.Arrays;
20  import java.util.Collection;
21  import java.util.List;
22  import java.util.Set;
23  
24  import javax.management.MBeanServer;
25  import javax.management.MBeanServerFactory;
26  import javax.management.ObjectInstance;
27  import javax.management.ObjectName;
28  
29  import org.junit.Test;
30  import org.junit.runners.Parameterized.Parameters;
31  
32  public class JmxDuplicateEndpointNamesTestCase extends AbstractServiceAndFlowTestCase
33  {
34  
35      private List<ObjectInstance> endpointMBeans = new ArrayList<ObjectInstance>();
36         
37      public JmxDuplicateEndpointNamesTestCase(ConfigVariant variant, String configResources)
38      {
39          super(variant, configResources);
40      }
41  
42      @Parameters
43      public static Collection<Object[]> parameters()
44      {
45          return Arrays.asList(new Object[][]{
46              {ConfigVariant.SERVICE, "duplicate-endpoint-addesses-service.xml"},
47              {ConfigVariant.FLOW, "duplicate-endpoint-addesses-flow.xml"}
48          });
49      }      
50      
51      @Test
52      public void testDuplicateNames()
53      {
54          List<?> mBeanServers = MBeanServerFactory.findMBeanServer(null);
55          assertTrue("no local MBean server found", mBeanServers.size() > 0);        
56          
57          inspectMBeanServers(mBeanServers);
58          assertEquals(2, endpointMBeans.size());
59      }
60  
61      private void inspectMBeanServers(List<?> mBeanServers)
62      {
63          for (Object o : mBeanServers)
64          {
65              MBeanServer server = (MBeanServer) o;
66              
67              Set<?> mBeans = server.queryMBeans(null, null);
68              assertTrue("no registered MBeans found", mBeans.size() > 0);
69              
70              inspectMBeans(mBeans);
71          }
72      }
73  
74      private void inspectMBeans(Set<?> mBeans)
75      {
76          for (Object o : mBeans)
77          {
78              ObjectInstance instance = (ObjectInstance) o;
79              if (objectNameMatches(instance))
80              {
81                  endpointMBeans.add(instance);
82              }
83          }
84      }
85  
86      private boolean objectNameMatches(ObjectInstance instance)
87      {
88          ObjectName name = instance.getObjectName();
89          return name.getCanonicalName().contains("vmInbound");    
90      }
91  
92  }
93  
94