package com.github.believe3301.nonheapdb.test;
import com.github.believe3301.nonheapdb.DBCache;
import com.github.believe3301.nonheapdb.Util;
import java.util.HashMap;
public class CacheTest extends BasedTest {
public CacheTest(final String name) {
super(name);
}
public void testBasic() {
DBCache cache = new DBCache(16, Util.Mb(32), -1);
String key = "test1";
String value = "value1";
String key2 = "test2";
String value2 = "value2";
String key3 = "test3";
String value3 = "value444433234234";
assertTrue(cache.put(key, value.getBytes()));
assertTrue(cache.put(key2, value2.getBytes()));
assertFalse(cache.put(key, value.getBytes()));
assertFalse(cache.put(key2, value2.getBytes()));
byte[] v2 = cache.get(key);
assertEquals(value, new String(v2));
System.out.printf("%s get value %s\n", key, new String(v2));
v2 = cache.get(key2);
assertEquals(value2, new String(v2));
System.out.printf("%s get value %s\n", key2, new String(v2));
cache.remove(key);
v2 = cache.get(key);
assertNull(v2);
System.out.printf("remove %s\n", key);
assertTrue(cache.put(key, value.getBytes()));
System.out.printf("put key1\n");
v2 = cache.get(key);
assertEquals(value, new String(v2));
cache.remove(key);
v2 = cache.get(key);
assertNull(v2);
System.out.printf("remove %s\n", key);
assertTrue(cache.put(key3, value3.getBytes()));
System.out.printf("put key3\n");
v2 = cache.get(key3);
assertEquals(value3, new String(v2));
System.out.println("-----------------------------------");
System.out.println(cache.info());
System.out.println("test basic ok\n");
}
public void testBenchmark() {
DBCache cache = new DBCache(16, Util.Mb(32), -1);
byte[] values = new byte[] { (byte) 0xAD };
long ts = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {
assertTrue(cache.put(this.generateKey(i), values));
}
long te = System.currentTimeMillis();
System.out.printf("cache set 100w used %d ms\n", te -ts);
ts = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {
byte[] v2 = cache.get(this.generateKey(i));
assertNotNull(String.format("(%d) not get value", i), v2);
assertEqualContent(values, v2);
}
te = System.currentTimeMillis();
System.out.printf("cache get 100w used %d ms\n", te -ts);
System.out.println(cache.info());
}
public void testMap() {
HashMap<String, byte[]> maps = new HashMap<String, byte[]>();
byte[] values = new byte[] { (byte) 0xAD };
long ts = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {
assertNull(maps.put(this.generateKey(i), values));
}
long te = System.currentTimeMillis();
System.out.printf("map set 100w used %d ms\n", te -ts);
ts = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {
byte[] v2 = maps.get(this.generateKey(i));
assertNotNull(String.format("(%d) not get value", i), v2);
assertEqualContent(values, v2);
}
te = System.currentTimeMillis();
System.out.printf("map get 100w used %d ms\n", te -ts);
}
}