package org.sdnplatform.sync.internal.store;
import java.util.ArrayList;
import java.util.List;
import javax.sql.ConnectionPoolDataSource;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.core.type.TypeReference;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.sdnplatform.sync.internal.TUtils;
import org.sdnplatform.sync.internal.store.IStorageEngine;
import org.sdnplatform.sync.internal.store.JavaDBStorageEngine;
import org.sdnplatform.sync.internal.util.ByteArray;
import org.sdnplatform.sync.internal.version.VectorClock;
import static org.junit.Assert.*;
import static org.sdnplatform.sync.internal.TUtils.*;
public class JavaDBStorageEngineTest extends AbstractStorageEngineT {
private IStorageEngine<ByteArray, byte[]> store;
@Before
public void setUp() throws Exception {
ConnectionPoolDataSource dataSource =
JavaDBStorageEngine.getDataSource(null, true);
this.store = new JavaDBStorageEngine("test", dataSource);
}
@After
public void tearDown() throws Exception {
this.store.truncate();
this.store.close();
this.store = null;
}
@Override
public IStorageEngine<ByteArray, byte[]> getStorageEngine() {
return store;
}
@Override
public List<ByteArray> getKeys(int numKeys) {
List<ByteArray> keys = new ArrayList<ByteArray>(numKeys);
for(int i = 0; i < numKeys; i++)
keys.add(new ByteArray(TUtils.randomBytes(10)));
return keys;
}
@Test
public void testSerialization() throws Exception {
ObjectMapper mapper = new ObjectMapper();
VectorClock clock = getClock(1,2);
String cs = mapper.writeValueAsString(clock);
VectorClock reconstructed =
mapper.readValue(cs, new TypeReference<VectorClock>() {});
assertEquals(clock, reconstructed);
}
}