package org.infinispan.lucene.configuration; import org.infinispan.Cache; import org.infinispan.configuration.cache.ConfigurationBuilder; import org.infinispan.lucene.directory.DirectoryBuilder; import org.infinispan.manager.EmbeddedCacheManager; import org.infinispan.test.AbstractInfinispanTest; import org.infinispan.test.TestingUtil; import org.infinispan.test.fwk.TestCacheManagerFactory; import org.testng.annotations.Test; /** * Verifies that the Lucene Directory correctly refuses to use a Cache with store as binary enabled. * * @author Pedro Ruivo * @since 6.0 */ @Test(groups = "functional", testName = "lucene.configuration.NotStoreAsBinaryValidationTest") public class NotStoreAsBinaryValidationTest extends AbstractInfinispanTest { private static final String INDEX_NAME = "test-index"; private static final String CACHE_NAME = "test-cache"; private static final String ERROR_MESSAGE_EXP = "ISPN(\\d)*: Lucene Directory for index '" + INDEX_NAME + "' can not use Cache '" + CACHE_NAME + "': store as binary enabled on the Cache configuration!"; @Test(expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp = ERROR_MESSAGE_EXP) public void failOnStoreKeysAsBinary() { ConfigurationBuilder builder = new ConfigurationBuilder(); builder.storeAsBinary().enable().storeKeysAsBinary(true); failIfStoreAsBinaryEnabled(builder); } @Test(expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp = ERROR_MESSAGE_EXP) public void failOnStoreValuesAsBinary() { ConfigurationBuilder builder = new ConfigurationBuilder(); builder.storeAsBinary().enable().storeValuesAsBinary(true); failIfStoreAsBinaryEnabled(builder); } @Test(expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp = ERROR_MESSAGE_EXP) public void failOnStoreKeysAndValuesAsBinary() { ConfigurationBuilder builder = new ConfigurationBuilder(); builder.storeAsBinary().enable() .storeValuesAsBinary(true) .storeKeysAsBinary(true); failIfStoreAsBinaryEnabled(builder); } private void failIfStoreAsBinaryEnabled(ConfigurationBuilder configuration) { EmbeddedCacheManager cacheManager = null; try { cacheManager = TestCacheManagerFactory.createCacheManager(configuration); cacheManager.defineConfiguration(CACHE_NAME, configuration.build()); Cache cache = cacheManager.getCache(CACHE_NAME); DirectoryBuilder.newDirectoryInstance(cache, cache, cache, INDEX_NAME).create(); } finally { if (cacheManager != null) { TestingUtil.killCacheManagers(cacheManager); } } } }