package org.infinispan.query.dsl.embedded; import static org.testng.AssertJUnit.assertFalse; import static org.testng.AssertJUnit.assertNotNull; import static org.testng.AssertJUnit.assertNull; import static org.testng.AssertJUnit.assertTrue; import java.util.HashMap; import java.util.Map; import org.hibernate.search.spi.SearchIntegrator; import org.infinispan.Cache; import org.infinispan.configuration.cache.CacheMode; import org.infinispan.configuration.cache.ConfigurationBuilder; import org.infinispan.configuration.cache.Index; import org.infinispan.configuration.cache.IndexingConfigurationBuilder; import org.infinispan.query.Search; import org.infinispan.query.indexmanager.InfinispanIndexManager; import org.testng.annotations.Test; /** * Verifies the functionality of Query DSL in clustered environment for ISPN directory provider. * * @author anistor@redhat.com * @author Anna Manukyan * @since 6.0 */ @Test(groups = "functional", testName = "query.dsl.embedded.ClusteredQueryDslConditionsTest") public class ClusteredQueryDslConditionsTest extends QueryDslConditionsTest { protected static final String TEST_CACHE_NAME = "custom"; protected Cache<Object, Object> cache1, cache2; @Override protected Cache<Object, Object> getCacheForWrite() { return cache1; } @Override protected Cache<Object, Object> getCacheForQuery() { return cache2; } protected Map<String, String> getIndexConfig() { Map<String, String> configs = new HashMap<>(); configs.put("default.indexmanager", InfinispanIndexManager.class.getName()); configs.put("lucene_version", "LUCENE_CURRENT"); return configs; } @Override protected void createCacheManagers() throws Throwable { ConfigurationBuilder defaultConfiguration = getDefaultClusteredCacheConfig(CacheMode.REPL_SYNC, false); defaultConfiguration.clustering() .stateTransfer().fetchInMemoryState(true); createClusteredCaches(2, defaultConfiguration); ConfigurationBuilder cfg = initialCacheConfiguration(); IndexingConfigurationBuilder indexingConfigurationBuilder = cfg.clustering() .stateTransfer().fetchInMemoryState(true) .indexing() .index(Index.LOCAL) .addIndexedEntity(getModelFactory().getUserImplClass()) .addIndexedEntity(getModelFactory().getAccountImplClass()) .addIndexedEntity(getModelFactory().getTransactionImplClass()); getIndexConfig().forEach(indexingConfigurationBuilder::addProperty); manager(0).defineConfiguration(TEST_CACHE_NAME, cfg.build()); manager(1).defineConfiguration(TEST_CACHE_NAME, cfg.build()); cache1 = manager(0).getCache(TEST_CACHE_NAME); cache2 = manager(1).getCache(TEST_CACHE_NAME); } protected ConfigurationBuilder initialCacheConfiguration() { return getDefaultClusteredCacheConfig(CacheMode.REPL_SYNC, false); } @Override public void testIndexPresence() { checkIndexPresence(cache1); checkIndexPresence(cache2); } private void checkIndexPresence(Cache cache) { SearchIntegrator searchFactory = Search.getSearchManager(cache).unwrap(SearchIntegrator.class); assertTrue(searchFactory.getIndexedTypes().contains(getModelFactory().getUserImplClass())); assertNotNull(searchFactory.getIndexManager(getModelFactory().getUserImplClass().getName())); assertTrue(searchFactory.getIndexedTypes().contains(getModelFactory().getAccountImplClass())); assertNotNull(searchFactory.getIndexManager(getModelFactory().getAccountImplClass().getName())); assertTrue(searchFactory.getIndexedTypes().contains(getModelFactory().getTransactionImplClass())); assertNotNull(searchFactory.getIndexManager(getModelFactory().getTransactionImplClass().getName())); assertFalse(searchFactory.getIndexedTypes().contains(getModelFactory().getAddressImplClass())); assertNull(searchFactory.getIndexManager(getModelFactory().getAddressImplClass().getName())); } }