HHH-7518
This commit is contained in:
parent
43e0bc01d6
commit
291ffe5031
102
hibernate-ehcache/src/test/java/org/hibernate/test/cache/ehcache/management/impl/RegisterMBeansTaskTest.java
vendored
Executable file
102
hibernate-ehcache/src/test/java/org/hibernate/test/cache/ehcache/management/impl/RegisterMBeansTaskTest.java
vendored
Executable file
|
@ -0,0 +1,102 @@
|
||||||
|
/*
|
||||||
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
|
*
|
||||||
|
* Copyright (c) 2007-2011, Red Hat Inc. or third-party contributors as
|
||||||
|
* indicated by the @author tags or express copyright attribution
|
||||||
|
* statements applied by the authors. All third-party contributions are
|
||||||
|
* distributed under license by Red Hat Inc.
|
||||||
|
*
|
||||||
|
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||||
|
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||||
|
* Lesser General Public License, as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this distribution; if not, write to:
|
||||||
|
* Free Software Foundation, Inc.
|
||||||
|
* 51 Franklin Street, Fifth Floor
|
||||||
|
* Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
package org.hibernate.test.cache.ehcache.management.impl;
|
||||||
|
|
||||||
|
import java.lang.reflect.Constructor;
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.util.Properties;
|
||||||
|
import java.util.TimerTask;
|
||||||
|
|
||||||
|
import net.sf.ehcache.CacheManager;
|
||||||
|
import net.sf.ehcache.config.ConfigurationFactory;
|
||||||
|
|
||||||
|
import org.hibernate.HibernateException;
|
||||||
|
import org.hibernate.SessionFactory;
|
||||||
|
import org.hibernate.cache.ehcache.management.impl.EhcacheHibernate;
|
||||||
|
import org.hibernate.cache.ehcache.management.impl.EhcacheHibernateMBeanRegistrationImpl;
|
||||||
|
import org.hibernate.cache.ehcache.management.impl.ProviderMBeanRegistrationHelper;
|
||||||
|
import org.hibernate.cfg.Configuration;
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Mateus Pimenta
|
||||||
|
*/
|
||||||
|
public class RegisterMBeansTaskTest {
|
||||||
|
|
||||||
|
private Field field;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testJMXRegistration() throws Exception {
|
||||||
|
SessionFactory sessionFactory = null;
|
||||||
|
System.setProperty( "derby.system.home", "target/derby" );
|
||||||
|
Configuration config = new Configuration().configure( "/hibernate-config/hibernate.cfg.xml" );
|
||||||
|
config.setProperty( "hibernate.hbm2ddl.auto", "create" );
|
||||||
|
try {
|
||||||
|
sessionFactory = config.buildSessionFactory();
|
||||||
|
}
|
||||||
|
catch ( HibernateException ex ) {
|
||||||
|
System.err.println( "Initial SessionFactory creation failed." + ex );
|
||||||
|
throw new ExceptionInInitializerError( ex );
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
sessionFactory.getStatistics().setStatisticsEnabled( true );
|
||||||
|
|
||||||
|
EhcacheHibernateMBeanRegistrationImpl ehcacheHibernateMBeanRegistration = new EhcacheHibernateMBeanRegistrationImpl();
|
||||||
|
|
||||||
|
TimerTask instance = configureTimeTask(ehcacheHibernateMBeanRegistration, config.getProperties());
|
||||||
|
|
||||||
|
// Run the task
|
||||||
|
instance.run();
|
||||||
|
|
||||||
|
// Checks if the ehcache hibernate was successfully started
|
||||||
|
field = ehcacheHibernateMBeanRegistration.getClass().getDeclaredField("ehcacheHibernate");
|
||||||
|
field.setAccessible(true);
|
||||||
|
EhcacheHibernate ehcacheHibernate = (EhcacheHibernate) field.get(ehcacheHibernateMBeanRegistration);
|
||||||
|
Assert.assertTrue(ehcacheHibernate.isHibernateStatisticsSupported());
|
||||||
|
} finally {
|
||||||
|
sessionFactory.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private TimerTask configureTimeTask(EhcacheHibernateMBeanRegistrationImpl ehcacheHibernateMBeanRegistration, Properties properties) throws Exception {
|
||||||
|
net.sf.ehcache.config.Configuration configuration = ConfigurationFactory.parseConfiguration();
|
||||||
|
CacheManager manager = new CacheManager( configuration );
|
||||||
|
|
||||||
|
|
||||||
|
TimerTask instance = null;
|
||||||
|
Class<?>[] classes = ProviderMBeanRegistrationHelper.class.getDeclaredClasses();
|
||||||
|
for (Class<?> clazz : classes) {
|
||||||
|
if ("org.hibernate.cache.ehcache.management.impl.ProviderMBeanRegistrationHelper.RegisterMBeansTask".equals(clazz.getCanonicalName())) {
|
||||||
|
Constructor<?> constructor = clazz.getConstructor(EhcacheHibernateMBeanRegistrationImpl.class, CacheManager.class, Properties.class);
|
||||||
|
constructor.setAccessible(true);
|
||||||
|
instance = (TimerTask) constructor.newInstance(ehcacheHibernateMBeanRegistration, manager, properties);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue