package net.ion.craken.node.problem;
import junit.framework.TestCase;
import net.ion.craken.node.ReadSession;
import net.ion.craken.node.TransactionJob;
import net.ion.craken.node.WriteSession;
import net.ion.craken.node.crud.Craken;
import net.ion.framework.util.ListUtil;
import org.infinispan.configuration.cache.CacheMode;
import org.infinispan.configuration.cache.Configuration;
import org.infinispan.configuration.cache.ConfigurationBuilder;
import org.infinispan.eviction.EvictionStrategy;
public class TestLoader extends TestCase {
private Craken repository;
@Override
protected void setUp() throws Exception {
super.setUp();
repository = Craken.create();
repository.dm().defineConfiguration("test", createFastLocalCacheStore(100)) ;
repository.start() ;
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
if (repository != null) repository.shutdown() ;
}
public void testWrite() throws Exception {
ReadSession session = repository.login("test");
session.tranSync(new TransactionJob<Void>() {
public Void handle(WriteSession wsession) {
for (int i : ListUtil.rangeNum(1000)) {
wsession.pathBy("/board/" + i).property("reg", "bleujin").property("num", i) ;
}
return null;
}
}) ;
}
public void testRead() throws Exception {
ReadSession session = repository.login("test");
session.ghostBy("/board").children().debugPrint() ;
}
private Configuration createDefault(){
return new ConfigurationBuilder().clustering().cacheMode(CacheMode.DIST_SYNC).eviction().maxEntries(5000).strategy(EvictionStrategy.LRU).clustering().l1().hash().numOwners(2).build() ;
}
private Configuration createFastLocalCacheStore(int maxEntry) {
return new ConfigurationBuilder().clustering().cacheMode(CacheMode.DIST_SYNC).clustering().l1().enable().invocationBatching().clustering().hash().numOwners(2).unsafe()
.eviction().maxEntries(maxEntry)
.invocationBatching().enable().persistence().passivation(false).addSingleFileStore().preload(true).shared(false).addProperty("location", "./resource/store")
// ./resource/temp
.purgeOnStartup(false).ignoreModifications(false).fetchPersistentState(true).async().enabled(false).build();
}
}