package net.ion.craken.problem; import java.io.File; import java.util.concurrent.TimeUnit; 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.craken.node.crud.store.WorkspaceConfigBuilder; import net.ion.framework.util.Debug; import net.ion.framework.util.FileUtil; import net.ion.framework.util.WithinThreadExecutor; import net.ion.nsearcher.config.Central; import net.ion.nsearcher.config.CentralConfig; import net.ion.nsearcher.index.IndexJob; import net.ion.nsearcher.index.IndexSession; import org.apache.lucene.store.Directory; import org.infinispan.Cache; import org.infinispan.configuration.cache.CacheMode; import org.infinispan.configuration.cache.ClusteringConfigurationBuilder; import org.infinispan.configuration.cache.ConfigurationBuilder; import org.infinispan.configuration.global.GlobalConfiguration; import org.infinispan.configuration.global.GlobalConfigurationBuilder; import org.infinispan.lucene.directory.BuildContext; import org.infinispan.lucene.directory.DirectoryBuilder; import org.infinispan.manager.DefaultCacheManager; public class TestDist extends TestCase { public void testFirst() throws Exception { FileUtil.deleteDirectory(new File("./resource/temp/first")); final Craken r = Craken.create(); r.createWorkspace("ics", WorkspaceConfigBuilder.gridDir("./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 { // Thread.sleep(1500); wsession.iwconfig().ignoreIndex() ; 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.icsDir("./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 { // Thread.sleep(1500); wsession.iwconfig().ignoreIndex() ; wsession.pathBy("/index", index).property("index", index); return null; } }); Debug.line(session.ghostBy("/index").children().count()) ; } } public void testCofirmFirst() throws Exception { final Craken r = Craken.create(); r.createWorkspace("ics", WorkspaceConfigBuilder.icsDir("./resource/temp/second").distMode(CacheMode.DIST_SYNC)); Runtime.getRuntime().addShutdownHook(new Thread(){ public void run(){ r.shutdown() ; } }); ReadSession session = r.login("ics"); session.root().walkChildren().debugPrint(); session.ghostBy("/index").children().debugPrint(); // session.root().childQuery("", true).find().debugPrint(); } public void testLuceneIndex() throws Exception { GlobalConfiguration gconfig = new GlobalConfigurationBuilder().transport().defaultTransport() .addProperty("configurationFile", "./resource/config/craken-tcp.xml") .globalJmxStatistics().enabled(false).build() ; DefaultCacheManager dm = new DefaultCacheManager(gconfig) ; // new DefaultCacheManager("./resource/config/craken-cache-config.xml") ; ClusteringConfigurationBuilder idx_meta_builder = new ConfigurationBuilder().persistence().passivation(false) .clustering().stateTransfer().timeout(300, TimeUnit.SECONDS).clustering().cacheMode(CacheMode.REPL_SYNC); ClusteringConfigurationBuilder idx_chunk_builder = new ConfigurationBuilder().persistence().passivation(false) .clustering().stateTransfer().timeout(300, TimeUnit.SECONDS).clustering().cacheMode(CacheMode.DIST_SYNC); dm.defineConfiguration("meta", idx_meta_builder.build()) ; dm.defineConfiguration("chunk", idx_chunk_builder.build()) ; // dm.defineConfiguration("lock", idx_meta_builder.build()) ; Cache<?, ?> meta = dm.getCache("meta") ; Cache<?, ?> chunk = dm.getCache("chunk") ; BuildContext bcontext = DirectoryBuilder.newDirectoryInstance(meta, chunk, dm.getCache("lock"), "test") ; Directory dir = bcontext.create() ; Central central = CentralConfig.oldFromDir(dir).indexConfigBuilder().executorService(new WithinThreadExecutor()).build() ; int count = 0; while(true){ central.newIndexer().index(new IndexJob<Void>() { @Override public Void handle(IndexSession isession) throws Exception { isession.newDocument().keyword("name", "bleujin").update() ; return null; } }) ; Thread.sleep(1000); if (count++ == 1) Debug.line("started"); // IndexSearcher isearcher = new IndexSearcher(DirectoryReader.open(dir)) ; // Debug.line(isearcher.search(new MatchAllDocsQuery(), Integer.MAX_VALUE).totalHits); } } public void testLuceneSearch() throws Exception { GlobalConfiguration gconfig = new GlobalConfigurationBuilder().transport().defaultTransport() .addProperty("configurationFile", "./resource/config/craken-tcp.xml") .globalJmxStatistics().enabled(false).build() ; DefaultCacheManager dm = new DefaultCacheManager(gconfig) ; // new DefaultCacheManager("./resource/config/craken-cache-config.xml") ; ClusteringConfigurationBuilder idx_meta_builder = new ConfigurationBuilder().persistence().passivation(false) .clustering().stateTransfer().timeout(300, TimeUnit.SECONDS).clustering().cacheMode(CacheMode.REPL_SYNC); ClusteringConfigurationBuilder idx_chunk_builder = new ConfigurationBuilder().persistence().passivation(false) .clustering().stateTransfer().timeout(300, TimeUnit.SECONDS).clustering().cacheMode(CacheMode.DIST_SYNC) ; dm.defineConfiguration("meta", idx_meta_builder.build()) ; dm.defineConfiguration("chunk", idx_chunk_builder.build()) ; // dm.defineConfiguration("lock", idx_meta_builder.build()) ; Cache<?, ?> meta = dm.getCache("meta") ; Cache<?, ?> chunk = dm.getCache("chunk") ; BuildContext bcontext = DirectoryBuilder.newDirectoryInstance(meta, chunk, dm.getCache("lock") , "test") ; Directory dir = bcontext.create() ; Central central = CentralConfig.oldFromDir(dir).indexConfigBuilder().executorService(new WithinThreadExecutor()).build() ; while(true){ Debug.line(central.newSearcher().createRequest("").find().totalCount()) ; Thread.sleep(2000); } } }