package voldemort.store.rocksdb; import java.io.File; import java.util.Arrays; import java.util.Collection; import java.util.Properties; import java.util.Random; import org.apache.commons.io.FileDeleteStrategy; import org.junit.After; import org.junit.Before; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; import voldemort.TestUtils; import voldemort.server.VoldemortConfig; import voldemort.store.AbstractStorageEngineTest; import voldemort.store.StorageEngine; import voldemort.utils.ByteArray; @RunWith(Parameterized.class) public class RocksdbStorageEngineTest extends AbstractStorageEngineTest { RocksDbStorageConfiguration rocksDbConfig; RocksDbStorageEngine rocksDbStore; Random random; VoldemortConfig voldemortConfig; private boolean prefixPartitionId; public RocksdbStorageEngineTest(boolean prefixPartitionId) { this.prefixPartitionId = prefixPartitionId; } @Override public StorageEngine<ByteArray, byte[], byte[]> getStorageEngine() { return this.rocksDbStore; } @Parameters public static Collection<Object[]> modes() { Object[][] data = new Object[][] { { true }, { false } }; return Arrays.asList(data); } @Override @Before public void setUp() { Properties props = new Properties(); // Doesnt matter what node.id and voldemort.home values are for this // test props.setProperty("node.id", "0"); props.setProperty("voldemort.home", "tmp/voldemort"); voldemortConfig = new VoldemortConfig(props); voldemortConfig.setRocksdbPrefixKeysWithPartitionId(this.prefixPartitionId); this.rocksDbConfig = new RocksDbStorageConfiguration(voldemortConfig); this.rocksDbStore = (RocksDbStorageEngine) rocksDbConfig.getStore(TestUtils.makeStoreDefinition("test"), TestUtils.makeSingleNodeRoutingStrategy()); random = new Random(); } @Override @After public void tearDown() throws Exception { try { rocksDbConfig.close(); } finally { /* * Make sure to blow the data directory after every test to have a * clean set up for the next one. */ File datadir = new File(this.voldemortConfig.getRdbDataDirectory() + "/test"); FileDeleteStrategy.FORCE.delete(datadir); } } }