package org.infinispan.query.distributed; import static org.infinispan.query.helper.TestQueryHelperFactory.createQueryParser; import static org.testng.AssertJUnit.assertEquals; import java.util.List; import org.apache.lucene.queryparser.classic.QueryParser; import org.apache.lucene.search.Query; import org.infinispan.Cache; import org.infinispan.configuration.cache.CacheMode; import org.infinispan.configuration.cache.Configuration; import org.infinispan.configuration.cache.ConfigurationBuilder; import org.infinispan.configuration.cache.Index; import org.infinispan.hibernate.search.spi.InfinispanIntegration; import org.infinispan.query.CacheQuery; import org.infinispan.query.Search; import org.infinispan.query.helper.StaticTestingErrorHandler; import org.infinispan.query.indexmanager.InfinispanIndexManager; import org.infinispan.query.queries.faceting.Car; import org.testng.annotations.Test; /** * Tests verifying that the Mass Indexing for programmatic cache configuration works as well. * * @author Anna Manukyan */ @Test(groups = "functional", testName = "query.distributed.DistProgrammaticMassIndexTest") public class DistProgrammaticMassIndexTest extends DistributedMassIndexingTest { @Override protected void createCacheManagers() throws Throwable { createCluster(holder -> { String defaultName = "default"; holder.getGlobalConfigurationBuilder().defaultCacheName(defaultName); ConfigurationBuilder cacheCfg = getDefaultClusteredCacheConfig(CacheMode.DIST_SYNC, false); cacheCfg.indexing() .index(Index.LOCAL) .addIndexedEntity(Car.class) .addProperty("default.indexmanager", InfinispanIndexManager.class.getName()) .addProperty("error_handler", StaticTestingErrorHandler.class.getName()) .addProperty("lucene_version", "LUCENE_CURRENT"); cacheCfg.clustering().stateTransfer().fetchInMemoryState(true); holder.newConfigurationBuilder(defaultName).read(cacheCfg.build()); Configuration cacheCfg1 = getDefaultClusteredCacheConfig(CacheMode.REPL_SYNC, false) .clustering().stateTransfer().fetchInMemoryState(true).build(); holder.newConfigurationBuilder(InfinispanIntegration.DEFAULT_INDEXESDATA_CACHENAME).read(cacheCfg1); holder.newConfigurationBuilder(InfinispanIntegration.DEFAULT_LOCKING_CACHENAME).read(cacheCfg1); }, NUM_NODES); caches.addAll(caches()); } protected void verifyFindsCar(Cache cache, int count, String carMake) throws Exception { QueryParser queryParser = createQueryParser("make"); Query luceneQuery = queryParser.parse(carMake); CacheQuery<?> cacheQuery = Search.getSearchManager(cache).getQuery(luceneQuery, Car.class); assertEquals(count, cacheQuery.getResultSize()); StaticTestingErrorHandler.assertAllGood(cache); } }