/* * 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; import java.io.IOException; import java.nio.file.Path; import java.util.Collections; import java.util.Map; import java.util.Set; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.search.SearchFactory; import org.hibernate.search.engine.integration.impl.ExtendedSearchIntegrator; import org.hibernate.search.test.util.BackendTestHelper; import org.hibernate.search.test.util.TestConfiguration; import org.hibernate.search.testsupport.TestConstants; import org.hibernate.testing.junit4.CustomRunner; import org.junit.After; import org.junit.Before; import org.junit.runner.RunWith; /** * Base class for Hibernate Search tests using Hibernate ORM and Junit 4. * * @author Hardy Ferentschik */ @RunWith(CustomRunner.class) public abstract class SearchTestBase implements TestResourceManager, TestConfiguration { protected static final Boolean PERFORMANCE_TESTS_ENABLED = TestConstants.arePerformanceTestsEnabled(); // access only via getter, since instance gets lazily initialized private DefaultTestResourceManager testResourceManager; // access only via getter, since instance gets lazily initialized private BackendTestHelper backendTestHelper; @Before public void setUp() throws Exception { getTestResourceManager().openSessionFactory(); } @After public void tearDown() throws Exception { getTestResourceManager().defaultTearDown(); } @Override public final void openSessionFactory() { getTestResourceManager().openSessionFactory(); } @Override public final void closeSessionFactory() { getTestResourceManager().closeSessionFactory(); } @Override public final SessionFactory getSessionFactory() { return getTestResourceManager().getSessionFactory(); } @Override public final SearchFactory getSearchFactory() { return getTestResourceManager().getSearchFactory(); } @Override public ExtendedSearchIntegrator getExtendedSearchIntegrator() { return getTestResourceManager().getExtendedSearchIntegrator(); } @Override public final Session openSession() { return getTestResourceManager().openSession(); } @Override public final Session getSession() { return getTestResourceManager().getSession(); } @Override public void ensureIndexesAreEmpty() throws IOException { getTestResourceManager().ensureIndexesAreEmpty(); } @Override public Path getBaseIndexDir() { return getTestResourceManager().getBaseIndexDir(); } @Override public void configure(Map<String,Object> settings) { //Empty by default } @Override public Set<String> multiTenantIds() { //Empty by default; specify more than one tenant to enable multi-tenancy return Collections.emptySet(); } protected int getNumberOfDocumentsInIndex(Class<?> entityType) { return getBackendTestHelper().getNumberOfDocumentsInIndex( entityType ); } protected int getNumberOfDocumentsInIndex(String indexName) { return getBackendTestHelper().getNumberOfDocumentsInIndex( indexName ); } protected int getNumberOfDocumentsInIndexByQuery(String indexName, String fieldName, String value) { return getBackendTestHelper().getNumberOfDocumentsInIndexByQuery( indexName, fieldName, value ); } // synchronized due to lazy initialization private synchronized DefaultTestResourceManager getTestResourceManager() { if ( testResourceManager == null ) { testResourceManager = new DefaultTestResourceManager( this, this.getClass() ); } return testResourceManager; } private BackendTestHelper getBackendTestHelper() { if ( backendTestHelper == null ) { backendTestHelper = BackendTestHelper.getInstance( getTestResourceManager() ); } return backendTestHelper; } }