package org.rocksdb;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.Assert.fail;
+
+import java.nio.charset.StandardCharsets;
import org.junit.ClassRule;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
-import java.nio.charset.StandardCharsets;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
public class BlockBasedTableConfigTest {
@ClassRule
@Test
public void cacheIndexAndFilterBlocksWithHighPriority() {
final BlockBasedTableConfig blockBasedTableConfig = new BlockBasedTableConfig();
- blockBasedTableConfig.setCacheIndexAndFilterBlocksWithHighPriority(true);
assertThat(blockBasedTableConfig.cacheIndexAndFilterBlocksWithHighPriority()).
isTrue();
+ blockBasedTableConfig.setCacheIndexAndFilterBlocksWithHighPriority(false);
+ assertThat(blockBasedTableConfig.cacheIndexAndFilterBlocksWithHighPriority()).isFalse();
}
@Test
@Test
public void indexType() {
final BlockBasedTableConfig blockBasedTableConfig = new BlockBasedTableConfig();
- assertThat(IndexType.values().length).isEqualTo(3);
+ assertThat(IndexType.values().length).isEqualTo(4);
blockBasedTableConfig.setIndexType(IndexType.kHashSearch);
assertThat(blockBasedTableConfig.indexType().equals(
IndexType.kHashSearch));
@Test
public void checksumType() {
final BlockBasedTableConfig blockBasedTableConfig = new BlockBasedTableConfig();
- assertThat(ChecksumType.values().length).isEqualTo(3);
+ assertThat(ChecksumType.values().length).isEqualTo(4);
assertThat(ChecksumType.valueOf("kxxHash")).
isEqualTo(ChecksumType.kxxHash);
blockBasedTableConfig.setChecksumType(ChecksumType.kNoChecksum);
isTrue();
}
+ @Test
+ public void optimizeFiltersForMemory() {
+ final BlockBasedTableConfig blockBasedTableConfig = new BlockBasedTableConfig();
+ blockBasedTableConfig.setOptimizeFiltersForMemory(true);
+ assertThat(blockBasedTableConfig.optimizeFiltersForMemory()).isTrue();
+ }
+
@Test
public void useDeltaEncoding() {
final BlockBasedTableConfig blockBasedTableConfig = new BlockBasedTableConfig();
@Test
public void verifyCompression() {
final BlockBasedTableConfig blockBasedTableConfig = new BlockBasedTableConfig();
+ assertThat(blockBasedTableConfig.verifyCompression()).isFalse();
blockBasedTableConfig.setVerifyCompression(true);
assertThat(blockBasedTableConfig.verifyCompression()).
isTrue();
@Test
public void formatVersion() {
final BlockBasedTableConfig blockBasedTableConfig = new BlockBasedTableConfig();
- for (int version = 0; version < 5; version++) {
+ for (int version = 0; version <= 5; version++) {
blockBasedTableConfig.setFormatVersion(version);
assertThat(blockBasedTableConfig.formatVersion()).isEqualTo(version);
}
blockBasedTableConfig.setFormatVersion(-1);
}
- @Test(expected = AssertionError.class)
- public void formatVersionFailIllegalVersion() {
- final BlockBasedTableConfig blockBasedTableConfig = new BlockBasedTableConfig();
- blockBasedTableConfig.setFormatVersion(99);
+ @Test(expected = RocksDBException.class)
+ public void invalidFormatVersion() throws RocksDBException {
+ final BlockBasedTableConfig blockBasedTableConfig =
+ new BlockBasedTableConfig().setFormatVersion(99999);
+
+ try (final Options options = new Options().setTableFormatConfig(blockBasedTableConfig);
+ final RocksDB db = RocksDB.open(options, dbFolder.getRoot().getAbsolutePath())) {
+ fail("Opening the database with an invalid format_version should have raised an exception");
+ }
}
@Test
isTrue();
}
+ @Test
+ public void indexShortening() {
+ final BlockBasedTableConfig blockBasedTableConfig = new BlockBasedTableConfig();
+ blockBasedTableConfig.setIndexShortening(IndexShorteningMode.kShortenSeparatorsAndSuccessor);
+ assertThat(blockBasedTableConfig.indexShortening())
+ .isEqualTo(IndexShorteningMode.kShortenSeparatorsAndSuccessor);
+ }
+
@Deprecated
@Test
public void hashIndexAllowCollision() {