package org.infinispan.query.distributed;
import java.io.Serializable;
import java.util.List;
import org.hibernate.search.annotations.Analyze;
import org.hibernate.search.annotations.Field;
import org.hibernate.search.annotations.Indexed;
import org.hibernate.search.annotations.IndexedEmbedded;
import org.infinispan.Cache;
import org.infinispan.commons.api.BasicCacheContainer;
import org.infinispan.configuration.cache.CacheMode;
import org.infinispan.configuration.cache.ConfigurationBuilder;
import org.infinispan.configuration.cache.Index;
import org.infinispan.marshall.core.ExternalPojo;
import org.testng.annotations.Test;
/**
* Tests for entities sharing the same index in DIST caches.
*
* @author gustavonalle
* @since 7.1
*/
@Test(groups = "functional", testName = "query.distributed.OverlappingDistMassIndexTest")
public class OverlappingDistMassIndexTest extends OverlappingIndexMassIndexTest {
@Override
@SuppressWarnings("unchecked")
protected void createCacheManagers() throws Throwable {
ConfigurationBuilder cacheCfg = getDefaultClusteredCacheConfig(CacheMode.DIST_SYNC, false);
cacheCfg
.indexing()
.index(Index.LOCAL)
.addIndexedEntity(Transaction.class)
.addIndexedEntity(Block.class)
.addProperty("default.indexmanager", "org.infinispan.query.indexmanager.InfinispanIndexManager")
.addProperty("lucene_version", "LUCENE_CURRENT");
List<Cache<String, Object>> cacheList = createClusteredCaches(NUM_NODES, cacheCfg);
waitForClusterToForm(BasicCacheContainer.DEFAULT_CACHE_NAME);
for (Cache cache : cacheList) {
caches.add(cache);
}
}
}
@Indexed(index = "commonIndex")
class Transaction implements Serializable, ExternalPojo {
@Field(analyze = Analyze.NO)
int size;
@Field
String script;
public Transaction(int size, String script) {
this.size = size;
this.script = script;
}
@Override
public String toString() {
return "Transaction{" +
"size=" + size +
", script='" + script + '\'' +
'}';
}
}
@Indexed(index = "commonIndex")
class Block implements Serializable, ExternalPojo {
@Field(analyze = Analyze.NO)
int height;
@IndexedEmbedded
Transaction latest;
public Block(int height, Transaction latest) {
this.height = height;
this.latest = latest;
}
@Override
public String toString() {
return "Block{" +
"height=" + height +
", latest=" + latest +
'}';
}
}