package net.ion.craken.node.problem.eviction; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import junit.framework.TestCase; import net.ion.craken.node.ReadSession; import net.ion.craken.node.TransactionJob; import net.ion.craken.node.WriteNode; import net.ion.craken.node.WriteSession; import net.ion.craken.node.crud.Craken; import net.ion.craken.node.crud.store.OldFileConfigBuilder; import net.ion.craken.node.crud.tree.impl.TreeNodeKey.Action; import net.ion.framework.util.Debug; import net.ion.radon.util.csv.CsvReader; public class TestEviction extends TestCase { private ReadSession session; public void setUp() throws Exception { Craken r = Craken.create() ; r.createWorkspace("evict", OldFileConfigBuilder.directory("./resource/temp/")) ; this.session = r.login("evict") ; } @Override protected void tearDown() throws Exception { session.workspace().repository().shutdown() ; super.tearDown(); } // 12sec per 20k(create, about 700 over per sec 6.21, 44M) // 18sec per 20k(update, about 1k lower per sec 6.21 70M) public void testCreateWhenEmpty() throws Exception { // 20k : resetBy 14, createBy 12, mergeBy 41 // 100k : resetBy 41, createBy 37, mergeBy 269 // 500k : createBy 197 int loopCount = 300000 ; long start = System.currentTimeMillis(); session.tranSync(new SampleInsertJob("/bleujin/", loopCount, Action.CREATE)); Debug.line(System.currentTimeMillis() - start); // session.pathBy("/bleujin").children().offset(10).debugPrint(); } } class SampleInsertJob implements TransactionJob<Void> { private String prefix; private int max = 0 ; private Action action = Action.RESET; public SampleInsertJob(String prefix, int max){ this(prefix, max, Action.RESET) ; } public SampleInsertJob(String prefix, int max, Action action){ this.prefix = prefix ; this.max = max ; this.action = action ; } public SampleInsertJob(int max){ this("/", max) ; } @Override public Void handle(WriteSession wsession) throws Exception { // wsession.fieldIndexConfig().ignoreBodyField() ; File file = new File("C:/temp/freebase-datadump-tsv/data/medicine/drug_label_section.tsv") ; CsvReader reader = new CsvReader(new BufferedReader(new FileReader(file))); reader.setFieldDelimiter('\t') ; String[] headers = reader.readLine(); String[] line = reader.readLine() ; while(line != null && line.length > 0 && max-- > 0 ){ // if (headers.length != line.length ) continue ; WriteNode wnode = null ; if (action == Action.RESET) { wnode = wsession.resetBy(prefix + max) ; } else if (action == Action.CREATE){ wnode = wsession.createBy(prefix + max); } else { wnode = wsession.pathBy(prefix + max); } for (int ii = 0, last = headers.length; ii < last ; ii++) { if (line.length > ii) wnode.property(headers[ii], line[ii]) ; } line = reader.readLine() ; if ((max % 9999) == 0) { System.out.print('.') ; wsession.continueUnit() ; } } reader.close() ; Debug.line("endJob") ; return null; } }