/*
* 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.multitenancy;
import org.hibernate.ConnectionReleaseMode;
import org.hibernate.MultiTenancyStrategy;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Environment;
import org.hibernate.engine.jdbc.connections.spi.MultiTenantConnectionProvider;
import org.hibernate.service.spi.ServiceException;
import org.hibernate.service.spi.ServiceRegistryImplementor;
import org.hibernate.testing.TestForIssue;
import org.hibernate.testing.env.ConnectionProviderBuilder;
import org.hibernate.testing.junit4.BaseUnitTestCase;
import org.junit.Test;
/**
* @author Lukasz Antoniak (lukasz dot antoniak at gmail dot com)
*/
@TestForIssue(jiraKey = "HHH-7311")
public class ConfigurationValidationTest extends BaseUnitTestCase {
@Test(expected = ServiceException.class)
public void testInvalidConnectionProvider() {
ServiceRegistryImplementor serviceRegistry = null;
try {
serviceRegistry = (ServiceRegistryImplementor) new StandardServiceRegistryBuilder()
.applySetting( Environment.MULTI_TENANT, MultiTenancyStrategy.SCHEMA )
.applySetting( Environment.MULTI_TENANT_CONNECTION_PROVIDER, "class.not.present.in.classpath" )
.build();
new MetadataSources( serviceRegistry ).buildMetadata().buildSessionFactory().close();
}
finally {
if ( serviceRegistry != null ) {
try {
StandardServiceRegistryBuilder.destroy( serviceRegistry );
}
catch (Exception ignore) {
}
}
}
}
@Test
public void testReleaseMode() {
ServiceRegistryImplementor serviceRegistry = null;
try {
serviceRegistry = (ServiceRegistryImplementor) new StandardServiceRegistryBuilder()
.applySetting( Environment.MULTI_TENANT, MultiTenancyStrategy.SCHEMA )
.applySetting( Environment.RELEASE_CONNECTIONS, ConnectionReleaseMode.AFTER_STATEMENT.name() )
.addService(
MultiTenantConnectionProvider.class,
new TestingConnectionProvider(
new TestingConnectionProvider.NamedConnectionProviderPair(
"acme",
ConnectionProviderBuilder.buildConnectionProvider( "acme" )
)
)
)
.build();
new MetadataSources( serviceRegistry ).buildMetadata().buildSessionFactory().close();
}
finally {
if ( serviceRegistry != null ) {
try {
StandardServiceRegistryBuilder.destroy( serviceRegistry );
}
catch (Exception ignore) {
}
}
}
}
}