package com.ctriposs.tsdb.test; import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Random; import com.ctriposs.tsdb.DBConfig; import com.ctriposs.tsdb.DBEngine; import com.ctriposs.tsdb.test.util.TestUtil; public class DBEnginePutGetFunctionTest { private static final String TEST_DIR = TestUtil.TEST_BASE_DIR +"put_test"; private static final int INIT_COUNT = 10*1000*1000; private static DBEngine engine; public static void main(String[] args) throws IOException { int numKeyLimit = 30000; DBConfig config = new DBConfig(TEST_DIR); engine = new DBEngine(config); Random random = new Random(); long start = System.nanoTime(); String data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; Map<String,String> map = new HashMap<String,String>(); for (int i = 0; i < 2*INIT_COUNT; i++) { String rndKey = String.valueOf(random.nextInt(numKeyLimit)); long time = System.currentTimeMillis(); String value = data+i; engine.put(rndKey, rndKey, time, value.getBytes()); if(map.size()<3*numKeyLimit){ map.put(rndKey + "-" + time,value); } } long duration = System.nanoTime() - start; System.out.printf("Put/get %,d K operations per second single thread%n", (int) (INIT_COUNT * 2 * 1e6 / duration)); int total=0; int miss = 0; int error = 0; for(Entry<String,String> entry:map.entrySet()){ String keys[] = entry.getKey().split("-"); total++; byte[] enginValue = engine.get(keys[0],keys[0],Long.parseLong(keys[1])); if(enginValue != null){ String engineStr = new String(enginValue); if(!entry.getValue().equals(engineStr)){ System.out.println(++error+"error "); System.out.println("map value :"+entry.getValue()); System.out.println("engine value:"+engineStr); } }else{ System.out.println(++miss+"not found "+entry.getKey()+":"+entry.getValue()); } } System.out.println("total:"+total+"miss:"+miss+"error:"+error); } }