package net.ion.craken.node.problem;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
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.framework.util.Debug;
import net.ion.framework.util.InfinityThread;
import net.ion.radon.util.csv.CsvReader;
public class TestStoreSpeed extends TestCase {
private Craken r;
private ReadSession session;
@Override
protected void setUp() throws Exception {
super.setUp();
this.r = Craken.create() ;
r.createWorkspace("test", OldFileConfigBuilder.directory("./resource/store/test"));
this.session = r.login("test");
session.tranSync(new TransactionJob<Void>() {
@Override
public Void handle(WriteSession wsession) {
wsession.pathBy("/bleujin").property("name", "bleujin").property("age", 20);
return null;
}
});
}
@Override
protected void tearDown() throws Exception {
// Thread.sleep(1000) ;
r.shutdown();
super.tearDown();
}
public void testSpeed() throws Exception {
indexData(100000);
new InfinityThread().startNJoin();
}
public void ctestMemory() throws Exception {
indexData(50000);
new InfinityThread().startNJoin();
}
private void indexData(final int count) throws Exception {
long start = System.currentTimeMillis();
session.tranSync(new TransactionJob<Void>() {
@Override
public Void handle(WriteSession wsession) {
File file = new File("C:/temp/freebase-datadump-tsv/data/medicine/drug_label_section.tsv");
int max = count;
wsession.iwconfig().ignoreBodyField() ;
try {
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 = wsession.pathBy("/dummy/" + 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 != 0 && (max % 10000) == 0) {
System.out.print('.');
wsession.continueUnit() ;
}
}
reader.close();
} catch (IOException ex) {
ex.printStackTrace();
} finally {
}
return null;
}
});
Debug.line("Elapsed Time : ", System.currentTimeMillis() - start);
} ;
}