package com.rubiconproject.oss.kv.test.backends;
import com.rubiconproject.oss.kv.KeyValueStore;
import com.rubiconproject.oss.kv.ThreadPoolAsyncFlushQueue;
import com.rubiconproject.oss.kv.backends.AsyncFlushCachingKeyValueStore;
import com.rubiconproject.oss.kv.backends.ConcurrentHashMapKeyValueStore;
import com.rubiconproject.oss.kv.backends.MemcachedKeyValueStore;
import com.rubiconproject.oss.kv.test.KeyValueStoreBackendTestCase;
public class AsyncFlushCachingStoreBackendTestCase extends
KeyValueStoreBackendTestCase {
public void testBackend() throws Exception {
MemcachedKeyValueStore master = new MemcachedKeyValueStore();
master.setHosts("localhost:11211");
master.start();
KeyValueStore cache = new ConcurrentHashMapKeyValueStore();
cache.start();
AsyncFlushCachingKeyValueStore store = new AsyncFlushCachingKeyValueStore(
master, cache, new ThreadPoolAsyncFlushQueue(master, 1));
store.start();
String key = "xyz";
SampleV v = new SampleV(10, "hello world", 12);
store.set(key, v);
Thread.sleep(100l);
// should be flushed to master
SampleV v2 = (SampleV) master.get(key);
assertNotNull(v2);
assertEquals(v2.someRequiredInt, v.someRequiredInt);
assertEquals(v2.someString, v.someString);
assertEquals(v2.someOptionalDouble, v.someOptionalDouble);
store.delete(key);
Thread.sleep(100l);
}
}