package org.infinispan.query.distributed; import static org.testng.AssertJUnit.assertEquals; import java.io.IOException; import javax.transaction.TransactionManager; import org.apache.lucene.search.MatchAllDocsQuery; import org.infinispan.configuration.cache.CacheMode; import org.infinispan.configuration.cache.ConfigurationBuilder; import org.infinispan.configuration.cache.Index; import org.infinispan.manager.EmbeddedCacheManager; import org.infinispan.query.CacheQuery; import org.infinispan.query.Search; import org.infinispan.query.SearchManager; import org.infinispan.query.helper.StaticTestingErrorHandler; import org.infinispan.query.test.Person; import org.infinispan.test.SingleCacheManagerTest; import org.infinispan.test.fwk.TestCacheManagerFactory; import org.infinispan.transaction.TransactionMode; import org.testng.annotations.Test; /** * Similar to MultiNodeDistributedTest, but using a local cache configuration both for * the indexed cache and for the storage of the index data. * * @author Anna Manukyan */ @Test(groups = "functional", testName = "query.distributed.IndexManagerLocalTest") public class IndexManagerLocalTest extends SingleCacheManagerTest { protected EmbeddedCacheManager createCacheManager() throws IOException { ConfigurationBuilder builder = new ConfigurationBuilder(); builder .clustering() .cacheMode(CacheMode.LOCAL) .indexing() .index(Index.ALL) .addIndexedEntity(Person.class) .addProperty("lucene_version", "LUCENE_CURRENT") .addProperty("error_handler", "org.infinispan.query.helper.StaticTestingErrorHandler") .addProperty("default.indexmanager", "org.infinispan.query.indexmanager.InfinispanIndexManager"); if(transactionsEnabled()) { builder.transaction().transactionMode(TransactionMode.TRANSACTIONAL); } return TestCacheManagerFactory.createCacheManager(builder); } protected boolean transactionsEnabled() { return false; } public void testIndexingWork() throws Exception { assertIndexSize(0); store("k1", new Person("K. Firt", "Is not a character from the matrix", 1)); assertIndexSize(1); store("k2", new Person("K. Seycond", "Is a pilot", 1)); assertIndexSize(2); } protected void store(String key, Person person) throws Exception { TransactionManager transactionManager = cache.getAdvancedCache().getTransactionManager(); if (transactionsEnabled()) transactionManager.begin(); cache.put(key, person); if (transactionsEnabled()) transactionManager.commit(); } protected void assertIndexSize(int expectedIndexSize) { SearchManager searchManager = Search.getSearchManager(cache); CacheQuery<Person> query = searchManager.getQuery(new MatchAllDocsQuery(), Person.class); assertEquals(expectedIndexSize, query.list().size()); StaticTestingErrorHandler.assertAllGood(cache); } }