/* * Hibernate, Relational Persistence for Idiomatic Java * * 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.test.proxool; import java.util.Arrays; import java.util.List; import org.junit.Test; import org.logicalcobwebs.proxool.ProxoolFacade; import org.hibernate.boot.registry.StandardServiceRegistry; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.cfg.Environment; import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider; import org.hibernate.proxool.internal.ProxoolConnectionProvider; import org.hibernate.testing.junit4.BaseUnitTestCase; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; /** * Test to verify connection pools are closed, and that only the managed one is closed. * * @author Sanne Grinovero */ public class ProxoolConnectionProviderTest extends BaseUnitTestCase { @Test public void testPoolsClosed() { assertDefinedPools(); // zero-length-vararg used as parameter StandardServiceRegistry serviceRegistry = buildServiceRegistry( "pool-one" ); ConnectionProvider providerOne = serviceRegistry.getService( ConnectionProvider.class ); assertDefinedPools( "pool-one" ); StandardServiceRegistry serviceRegistryTwo = buildServiceRegistry( "pool-two" ); ConnectionProvider providerTwo = serviceRegistryTwo.getService( ConnectionProvider.class ); assertDefinedPools( "pool-one", "pool-two" ); StandardServiceRegistryBuilder.destroy( serviceRegistry ); assertDefinedPools( "pool-two" ); StandardServiceRegistryBuilder.destroy( serviceRegistryTwo ); assertDefinedPools(); } private void assertDefinedPools(String... expectedPoolNames) { List<String> aliases = Arrays.asList( ProxoolFacade.getAliases() ); assertEquals( expectedPoolNames.length, aliases.size() ); for (String poolName : expectedPoolNames) { assertTrue( "pool named " + poolName + " missing", aliases.contains( poolName ) ); } } private StandardServiceRegistry buildServiceRegistry(String poolName){ return new StandardServiceRegistryBuilder( ) .applySetting( Environment.PROXOOL_POOL_ALIAS, poolName ) .applySetting( Environment.PROXOOL_PROPERTIES, poolName + ".properties" ) .applySetting( Environment.CONNECTION_PROVIDER, ProxoolConnectionProvider.class.getName() ) .build(); } }