package org.infinispan.query.blackbox;
import java.io.File;
import org.infinispan.commons.util.Util;
import org.infinispan.configuration.cache.CacheMode;
import org.infinispan.configuration.cache.ConfigurationBuilder;
import org.infinispan.configuration.cache.Index;
import org.infinispan.query.test.Person;
import org.infinispan.test.TestingUtil;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
/**
* Run the basic set of operations with filesystem-based index storage in replicated mode
* with transactional caches.
*
* The default FSDirectory implementation for non Windows systems should be NIOFSDirectory.
* SimpleFSDirectory implementation will be used on Windows.
*
* @author Martin Gencur
*/
@Test(groups = "functional", testName = "query.blackbox.ClusteredCacheFSDirectoryTest")
public class ClusteredCacheFSDirectoryTest extends ClusteredCacheTest {
private final String TMP_DIR = TestingUtil.tmpDirectory(this.getClass());
@Override
protected void createCacheManagers() throws Exception {
addClusterEnabledCacheManager(buildCacheConfig("index1"));
addClusterEnabledCacheManager(buildCacheConfig("index2"));
waitForClusterToForm();
cache1 = cache(0);
cache2 = cache(1);
}
private ConfigurationBuilder buildCacheConfig(String indexName) {
ConfigurationBuilder cb = getDefaultClusteredCacheConfig(CacheMode.REPL_SYNC, true);
cb.indexing()
.index(Index.ALL) //index also changes originated on other nodes, the index is not shared
.addIndexedEntity(Person.class)
.addProperty("default.directory_provider", "filesystem")
.addProperty("error_handler", "org.infinispan.query.helper.StaticTestingErrorHandler")
.addProperty("default.indexBase", TMP_DIR + File.separator + indexName)
.addProperty("lucene_version", "LUCENE_CURRENT");
return cb;
}
@BeforeMethod
protected void setUpTempDir() {
new File(TMP_DIR).mkdirs();
}
@Override
@AfterMethod
protected void clearContent() throws Throwable {
try {
//first stop cache managers, then clear the index
super.clearContent();
} finally {
//delete the index otherwise it will mess up the index for next tests
Util.recursiveFileRemove(TMP_DIR);
}
}
}