package net.ion.craken.problem; import java.io.File; 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.craken.node.crud.store.WorkspaceConfigBuilder; import net.ion.framework.util.Debug; import net.ion.framework.util.FileUtil; import org.apache.lucene.store.Directory; import org.apache.lucene.store.LockFactory; import org.infinispan.configuration.cache.CacheMode; import junit.framework.TestCase; public class TestLockFactory extends TestCase { public void testLockFactory() throws Exception { final Craken craken = Craken.create(); craken.createWorkspace("ics", WorkspaceConfigBuilder.indexDir("").distMode(CacheMode.DIST_SYNC)); ReadSession session = craken.login("ics") ; Directory dir = session.workspace().central().dir() ; LockFactory lf = dir.getLockFactory(); Debug.line(lf) ; } public void testFirst() throws Exception { FileUtil.deleteDirectory(new File("./resource/temp/first")); final Craken r = Craken.create(); r.createWorkspace("ics", WorkspaceConfigBuilder.indexDir("./resource/temp/first").distMode(CacheMode.DIST_SYNC)); Runtime.getRuntime().addShutdownHook(new Thread(){ public void run(){ r.shutdown() ; } }); ReadSession session = r.login("ics"); int count = 0; while (true) { Thread.sleep(1000); final int index = count++; session.tran(new TransactionJob<Void>() { @Override public Void handle(WriteSession wsession) throws Exception { wsession.pathBy("/index", index).property("index", index); return null; } }); if (index == 1) Debug.line("started"); } } public void testSecond() throws Exception { FileUtil.deleteDirectory(new File("./resource/temp/second")); final Craken r = Craken.create(); r.createWorkspace("ics", WorkspaceConfigBuilder.indexDir("./resource/temp/second").distMode(CacheMode.DIST_SYNC)); Runtime.getRuntime().addShutdownHook(new Thread(){ public void run(){ r.shutdown() ; } }); ReadSession session = r.login("ics"); int count = 1000; while(true){ Thread.sleep(1000); final int index = count++; session.tran(new TransactionJob<Void>() { @Override public Void handle(WriteSession wsession) throws Exception { wsession.pathBy("/index", index).property("index", index); return null; } }); Debug.line(session.ghostBy("/index").children().count()) ; } } }