/* * 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.jpa.test.connection; import java.util.Map; import javax.persistence.Entity; import javax.persistence.EntityManager; import javax.persistence.Id; import javax.persistence.PersistenceException; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import org.hibernate.cfg.AvailableSettings; import org.hibernate.exception.SQLGrammarException; import org.hibernate.jpa.test.BaseEntityManagerFunctionalTestCase; import org.hibernate.testing.TestForIssue; import org.junit.Test; /** * @author Andrea Boriero */ @TestForIssue(jiraKey = "HHH-11257") public class TestConnectionPool extends BaseEntityManagerFunctionalTestCase { private final static int CONNECTION_POOL_SIZE = 2; @Override public Class[] getAnnotatedClasses() { return new Class[] { TestEntity.class }; } @Override protected boolean createSchema() { return false; } @Override protected void addConfigOptions(Map options) { options.put( AvailableSettings.POOL_SIZE, Integer.valueOf( CONNECTION_POOL_SIZE ) ); } @Test public void testConnectionPoolDoesNotConsumeAllConnections() { for ( int i = 0; i < CONNECTION_POOL_SIZE + 1; ++i ) { EntityManager entityManager = getOrCreateEntityManager(); try { for ( int j = 0; j < 2; j++ ) { try { final CriteriaBuilder builder = entityManager.getCriteriaBuilder(); final CriteriaQuery<TestEntity> criteriaQuery = builder.createQuery( TestEntity.class ); criteriaQuery.select( criteriaQuery.from( TestEntity.class ) ); entityManager.createQuery( criteriaQuery ).getResultList(); } catch ( PersistenceException e ) { if ( e.getCause() instanceof SQLGrammarException ) { //expected, the schema was not created } else { throw e; } } } } finally { entityManager.close(); } } } @Entity(name = "Test_Entity") public static class TestEntity { @Id public long id; } }