package org.corfudb.infrastructure;
import com.google.common.collect.ImmutableMap;
import org.corfudb.AbstractCorfuTest;
import org.junit.Test;
import java.util.UUID;
import static org.assertj.core.api.Assertions.assertThat;
/**
* Created by mdhawan on 7/29/16.
*/
public class DataStoreTest extends AbstractCorfuTest {
@Test
public void testPutGet() {
String serviceDir = PARAMETERS.TEST_TEMP_DIR;
DataStore dataStore = new DataStore(new ImmutableMap.Builder<String, Object>()
.put("--log-path", serviceDir)
.build());
String value = UUID.randomUUID().toString();
dataStore.put(String.class, "test", "key", value);
assertThat(dataStore.get(String.class, "test", "key")).isEqualTo(value);
dataStore.put(String.class, "test", "key", "NEW_VALUE");
assertThat(dataStore.get(String.class, "test", "key")).isEqualTo("NEW_VALUE");
}
@Test
public void testPutGetWithRestart() {
String serviceDir = PARAMETERS.TEST_TEMP_DIR;
DataStore dataStore = new DataStore(new ImmutableMap.Builder<String, Object>()
.put("--log-path", serviceDir)
.build());
String value = UUID.randomUUID().toString();
dataStore.put(String.class, "test", "key", value);
//Simulate a restart of data store
dataStore = new DataStore(new ImmutableMap.Builder<String, Object>()
.put("--log-path", serviceDir)
.build());
assertThat(dataStore.get(String.class, "test", "key")).isEqualTo(value);
dataStore.put(String.class, "test", "key", "NEW_VALUE");
assertThat(dataStore.get(String.class, "test", "key")).isEqualTo("NEW_VALUE");
}
@Test
public void testDatastoreEviction() {
String serviceDir = PARAMETERS.TEST_TEMP_DIR;
DataStore dataStore = new DataStore(new ImmutableMap.Builder<String, Object>()
.put("--log-path", serviceDir)
.build());
for (int i = 0; i < dataStore.getDS_CACHE_SZ() * 2; i++) {
String value = UUID.randomUUID().toString();
dataStore.put(String.class, "test", "key", value);
//Simulate a restart of data store
dataStore = new DataStore(new ImmutableMap.Builder<String, Object>()
.put("--log-path", serviceDir)
.build());
assertThat(dataStore.get(String.class, "test", "key")).isEqualTo(value);
dataStore.put(String.class, "test", "key", "NEW_VALUE");
assertThat(dataStore.get(String.class, "test", "key")).isEqualTo("NEW_VALUE");
}
}
@Test
public void testInmemoryPutGet() {
String serviceDir = PARAMETERS.TEST_TEMP_DIR;
DataStore dataStore = new DataStore(new ImmutableMap.Builder<String, Object>()
.put("--memory", true)
.build());
String value = UUID.randomUUID().toString();
dataStore.put(String.class, "test", "key", value);
assertThat(dataStore.get(String.class, "test", "key")).isEqualTo(value);
dataStore.put(String.class, "test", "key", "NEW_VALUE");
assertThat(dataStore.get(String.class, "test", "key")).isEqualTo("NEW_VALUE");
}
@Test
public void testInmemoryEviction() {
String serviceDir = PARAMETERS.TEST_TEMP_DIR;
DataStore dataStore = new DataStore(new ImmutableMap.Builder<String, Object>()
.put("--memory", true)
.build());
for (int i = 0; i < dataStore.getDS_CACHE_SZ() * 2; i++) {
String value = UUID.randomUUID().toString();
dataStore.put(String.class, "test", "key", value);
assertThat(dataStore.get(String.class, "test", "key")).isEqualTo(value);
dataStore.put(String.class, "test", "key", "NEW_VALUE");
assertThat(dataStore.get(String.class, "test", "key")).isEqualTo("NEW_VALUE");
}
}
}