From b011e201fa5e7a27febe0ea101004b84cb06215c Mon Sep 17 00:00:00 2001 From: fyrz Date: Sun, 26 Oct 2014 20:47:54 +0100 Subject: [PATCH] Integrated review comments by ankgup87 - Added tests - Minor code-style changes --- java/Makefile | 2 + java/org/rocksdb/BlockBasedTableConfig.java | 2 + java/org/rocksdb/ChecksumType.java | 4 +- java/org/rocksdb/EncodingType.java | 4 +- java/org/rocksdb/IndexType.java | 2 +- java/org/rocksdb/PlainTableConfig.java | 6 +- .../test/BlockBasedTableConfigTest.java | 64 +++++++++++++++++++ .../rocksdb/test/PlainTableConfigTest.java | 43 +++++++++++++ 8 files changed, 119 insertions(+), 8 deletions(-) create mode 100644 java/org/rocksdb/test/BlockBasedTableConfigTest.java create mode 100644 java/org/rocksdb/test/PlainTableConfigTest.java diff --git a/java/Makefile b/java/Makefile index 6050effde..765ed44fc 100644 --- a/java/Makefile +++ b/java/Makefile @@ -39,11 +39,13 @@ test: java javac org/rocksdb/test/*.java java -ea -Djava.library.path=.:../ -cp "$(ROCKSDB_JAR):.:./*" org.rocksdb.WriteBatchTest java -ea -Djava.library.path=.:../ -cp "$(ROCKSDB_JAR):.:./*" org.rocksdb.test.BackupableDBTest + java -ea -Djava.library.path=.:../ -cp "$(ROCKSDB_JAR):.:./*" org.rocksdb.test.BlockBasedTableConfigTest java -ea -Djava.library.path=.:../ -cp "$(ROCKSDB_JAR):.:./*" org.rocksdb.test.ColumnFamilyTest java -ea -Djava.library.path=.:../ -cp "$(ROCKSDB_JAR):.:./*" org.rocksdb.test.FilterTest java -ea -Djava.library.path=.:../ -cp "$(ROCKSDB_JAR):.:./*" org.rocksdb.test.KeyMayExistTest java -ea -Djava.library.path=.:../ -cp "$(ROCKSDB_JAR):.:./*" org.rocksdb.test.MemTableTest java -ea -Djava.library.path=.:../ -cp "$(ROCKSDB_JAR):.:./*" org.rocksdb.test.OptionsTest + java -ea -Djava.library.path=.:../ -cp "$(ROCKSDB_JAR):.:./*" org.rocksdb.test.PlainTableConfigTest java -ea -Djava.library.path=.:../ -cp "$(ROCKSDB_JAR):.:./*" org.rocksdb.test.ReadOnlyTest java -ea -Djava.library.path=.:../ -cp "$(ROCKSDB_JAR):.:./*" org.rocksdb.test.MergeTest java -ea -Djava.library.path=.:../ -cp "$(ROCKSDB_JAR):.:./*" org.rocksdb.test.ReadOptionsTest diff --git a/java/org/rocksdb/BlockBasedTableConfig.java b/java/org/rocksdb/BlockBasedTableConfig.java index d236b1a39..76e930204 100644 --- a/java/org/rocksdb/BlockBasedTableConfig.java +++ b/java/org/rocksdb/BlockBasedTableConfig.java @@ -14,6 +14,7 @@ public class BlockBasedTableConfig extends TableFormatConfig { public BlockBasedTableConfig() { noBlockCache_ = false; blockCacheSize_ = 8 * 1024 * 1024; + blockCacheNumShardBits_ = 0; blockSize_ = 4 * 1024; blockSizeDeviation_ = 10; blockRestartInterval_ = 16; @@ -22,6 +23,7 @@ public class BlockBasedTableConfig extends TableFormatConfig { cacheIndexAndFilterBlocks_ = false; hashIndexAllowCollision_ = true; blockCacheCompressedSize_ = 0; + blockCacheCompressedNumShardBits_ = 0; checksumType_ = ChecksumType.kCRC32c; indexType_ = IndexType.kBinarySearch; } diff --git a/java/org/rocksdb/ChecksumType.java b/java/org/rocksdb/ChecksumType.java index 40ba032b3..a538c4ea6 100644 --- a/java/org/rocksdb/ChecksumType.java +++ b/java/org/rocksdb/ChecksumType.java @@ -16,11 +16,11 @@ public enum ChecksumType { /** * CRC32 Checksum */ - kCRC32c((byte)1), + kCRC32c((byte) 1), /** * XX Hash */ - kxxHash((byte)2); + kxxHash((byte) 2); private final byte value_; diff --git a/java/org/rocksdb/EncodingType.java b/java/org/rocksdb/EncodingType.java index 1d0a36c37..a372b0d0f 100644 --- a/java/org/rocksdb/EncodingType.java +++ b/java/org/rocksdb/EncodingType.java @@ -22,7 +22,7 @@ public enum EncodingType { /** * Always write full keys without any special encoding. */ - kPlain((byte)0), + kPlain((byte) 0), /** *

Find opportunity to write the same prefix once for multiple rows. * In some cases, when a key follows a previous key with the same prefix, @@ -36,7 +36,7 @@ public enum EncodingType { * bitwise compared to the prefix extractors stored in the file. An error * will be returned if the two don't match.

*/ - kPrefix((byte)1); + kPrefix((byte) 1); private final byte value_; diff --git a/java/org/rocksdb/IndexType.java b/java/org/rocksdb/IndexType.java index 47912f7b6..3399b4452 100644 --- a/java/org/rocksdb/IndexType.java +++ b/java/org/rocksdb/IndexType.java @@ -18,7 +18,7 @@ public enum IndexType { * The hash index, if enabled, will do the hash lookup when * {@code Options.prefix_extractor} is provided. */ - kHashSearch((byte)1); + kHashSearch((byte) 1); private final byte value_; diff --git a/java/org/rocksdb/PlainTableConfig.java b/java/org/rocksdb/PlainTableConfig.java index bb44e1ac1..71d75f72c 100644 --- a/java/org/rocksdb/PlainTableConfig.java +++ b/java/org/rocksdb/PlainTableConfig.java @@ -131,11 +131,11 @@ public class PlainTableConfig extends TableFormatConfig { * *

See linux doc Documentation/vm/hugetlbpage.txt

* - * @param hugePageTlbSize_ + * @param hugePageTlbSize * @return the reference to the current config. */ - public PlainTableConfig setHugePageTlbSize_(int hugePageTlbSize_) { - this.hugePageTlbSize_ = hugePageTlbSize_; + public PlainTableConfig setHugePageTlbSize(int hugePageTlbSize) { + this.hugePageTlbSize_ = hugePageTlbSize; return this; } diff --git a/java/org/rocksdb/test/BlockBasedTableConfigTest.java b/java/org/rocksdb/test/BlockBasedTableConfigTest.java new file mode 100644 index 000000000..1f7a62698 --- /dev/null +++ b/java/org/rocksdb/test/BlockBasedTableConfigTest.java @@ -0,0 +1,64 @@ +// Copyright (c) 2014, Facebook, Inc. All rights reserved. +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. + +package org.rocksdb.test; + +import org.rocksdb.BlockBasedTableConfig; +import org.rocksdb.ChecksumType; +import org.rocksdb.IndexType; + +public class BlockBasedTableConfigTest { + + public static void main(String[] args) { + BlockBasedTableConfig blockBasedTableConfig = + new BlockBasedTableConfig(); + assert(!blockBasedTableConfig.noBlockCache()); + blockBasedTableConfig.setNoBlockCache(true); + assert(blockBasedTableConfig.noBlockCache()); + assert(blockBasedTableConfig.blockCacheSize() == (8*1024*1024)); + blockBasedTableConfig.setBlockCacheSize(8*1024); + assert(blockBasedTableConfig.blockCacheSize() == (8*1024)); + assert(blockBasedTableConfig.blockSizeDeviation() == 10); + blockBasedTableConfig.setBlockSizeDeviation(12); + assert(blockBasedTableConfig.blockSizeDeviation() == 12); + assert(blockBasedTableConfig.blockRestartInterval() == 16); + blockBasedTableConfig.setBlockRestartInterval(15); + assert(blockBasedTableConfig.blockRestartInterval() == 15); + assert(blockBasedTableConfig.wholeKeyFiltering()); + blockBasedTableConfig.setWholeKeyFiltering(false); + assert(!blockBasedTableConfig.wholeKeyFiltering()); + assert(!blockBasedTableConfig.cacheIndexAndFilterBlocks()); + blockBasedTableConfig.setCacheIndexAndFilterBlocks(true); + assert(blockBasedTableConfig.cacheIndexAndFilterBlocks()); + assert(blockBasedTableConfig.hashIndexAllowCollision()); + blockBasedTableConfig.setHashIndexAllowCollision(false); + assert(!blockBasedTableConfig.hashIndexAllowCollision()); + assert(blockBasedTableConfig.blockCacheCompressedSize() == 0); + blockBasedTableConfig.setBlockCacheCompressedSize(40); + assert(blockBasedTableConfig.blockCacheCompressedSize() == 40); + assert(blockBasedTableConfig.checksumType().equals( + ChecksumType.kCRC32c)); + blockBasedTableConfig.setChecksumType(ChecksumType.kNoChecksum); + assert(blockBasedTableConfig.checksumType().equals( + ChecksumType.kNoChecksum)); + blockBasedTableConfig.setChecksumType(ChecksumType.kxxHash); + assert(blockBasedTableConfig.checksumType().equals( + ChecksumType.kxxHash)); + assert(blockBasedTableConfig.indexType().equals( + IndexType.kBinarySearch)); + blockBasedTableConfig.setIndexType(IndexType.kHashSearch); + assert(blockBasedTableConfig.indexType().equals( + IndexType.kHashSearch)); + assert(blockBasedTableConfig.blockCacheCompressedNumShardBits() + == 0); + blockBasedTableConfig.setBlockCacheCompressedNumShardBits(4); + assert(blockBasedTableConfig.blockCacheCompressedNumShardBits() + == 4); + assert(blockBasedTableConfig.cacheNumShardBits() == 0); + blockBasedTableConfig.setCacheNumShardBits(5); + assert(blockBasedTableConfig.cacheNumShardBits() == 5); + System.out.println("BlockBasedTableConfig test passed"); + } +} diff --git a/java/org/rocksdb/test/PlainTableConfigTest.java b/java/org/rocksdb/test/PlainTableConfigTest.java new file mode 100644 index 000000000..d8edb9618 --- /dev/null +++ b/java/org/rocksdb/test/PlainTableConfigTest.java @@ -0,0 +1,43 @@ +// Copyright (c) 2014, Facebook, Inc. All rights reserved. +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. + +package org.rocksdb.test; + +import org.rocksdb.EncodingType; +import org.rocksdb.PlainTableConfig; + +public class PlainTableConfigTest { + + public static void main(String[] args) { + PlainTableConfig plainTableConfig = new PlainTableConfig(); + assert(plainTableConfig.keySize() == 0); + plainTableConfig.setKeySize(5); + assert(plainTableConfig.keySize() == 5); + assert(plainTableConfig.bloomBitsPerKey() == 10); + plainTableConfig.setBloomBitsPerKey(11); + assert(plainTableConfig.bloomBitsPerKey() == 11); + assert(plainTableConfig.hashTableRatio() == 0.75); + plainTableConfig.setHashTableRatio(0.95); + assert(plainTableConfig.hashTableRatio() == 0.95); + assert(plainTableConfig.indexSparseness() == 16); + plainTableConfig.setIndexSparseness(18); + assert(plainTableConfig.indexSparseness() == 18); + assert(plainTableConfig.hugePageTlbSize() == 0); + plainTableConfig.setHugePageTlbSize(1); + assert(plainTableConfig.hugePageTlbSize() == 1); + assert(plainTableConfig.encodingType().equals( + EncodingType.kPlain)); + plainTableConfig.setEncodingType(EncodingType.kPrefix); + assert(plainTableConfig.encodingType().equals( + EncodingType.kPrefix)); + assert(!plainTableConfig.fullScanMode()); + plainTableConfig.setFullScanMode(true); + assert(plainTableConfig.fullScanMode()); + assert(!plainTableConfig.storeIndexInFile()); + plainTableConfig.setStoreIndexInFile(true); + assert(plainTableConfig.storeIndexInFile()); + System.out.println("PlainTableConfig test passed"); + } +}