/*
* Hibernate Search, full-text search for your domain model
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.search.test.jmx;
import java.lang.management.ManagementFactory;
import java.nio.file.Path;
import java.util.Map;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import org.hibernate.search.cfg.Environment;
import org.hibernate.search.jmx.IndexControlMBean;
import org.hibernate.search.jmx.StatisticsInfoMBean;
import org.hibernate.search.test.SearchTestBase;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertFalse;
/**
* @author Hardy Ferentschik
*/
public class NoMBeansEnabledTest extends SearchTestBase {
MBeanServer mbeanServer;
@Test
public void testMBeanNotRegisteredWithoutExplicitProperty() throws Exception {
mbeanServer = ManagementFactory.getPlatformMBeanServer();
ObjectName name = new ObjectName( StatisticsInfoMBean.STATISTICS_MBEAN_OBJECT_NAME );
assertFalse(
"Without '" + Environment.JMX_ENABLED + "' set the configuration info MBean should not be registered",
mbeanServer.isRegistered( name )
);
name = new ObjectName( IndexControlMBean.INDEX_CTRL_MBEAN_OBJECT_NAME );
assertFalse(
"Without '" + Environment.JMX_ENABLED + "' set the index control MBean should not be registered",
mbeanServer.isRegistered( name )
);
}
@Override
public void configure(Map<String,Object> cfg) {
Path simpleJndiDir = SimpleJNDIHelper.makeTestingJndiDirectory( NoMBeansEnabledTest.class );
SimpleJNDIHelper.enableSimpleJndi( cfg, simpleJndiDir );
cfg.put( "hibernate.session_factory_name", "java:comp/SessionFactory" );
// not setting the property is effectively the same as setting is explicitly to false
// cfg.setProperty( Environment.JMX_ENABLED, "false" );
}
@Override
@Before
public void setUp() throws Exception {
// make sure that no MBean is registered before the test runs
mbeanServer = ManagementFactory.getPlatformMBeanServer();
ObjectName statisticsBeanObjectName = new ObjectName( StatisticsInfoMBean.STATISTICS_MBEAN_OBJECT_NAME );
if ( mbeanServer.isRegistered( statisticsBeanObjectName ) ) {
mbeanServer.unregisterMBean( statisticsBeanObjectName );
}
ObjectName indexBeanObjectName = new ObjectName( IndexControlMBean.INDEX_CTRL_MBEAN_OBJECT_NAME );
if ( mbeanServer.isRegistered( indexBeanObjectName ) ) {
mbeanServer.unregisterMBean( indexBeanObjectName );
}
super.setUp();
}
@Override
@After
public void tearDown() throws Exception {
super.tearDown();
}
@Override
public Class<?>[] getAnnotatedClasses() {
return new Class<?>[] { };
}
}