mirror of
https://github.com/XRPLF/rippled.git
synced 2025-12-06 17:27:55 +00:00
Summary: * Add filluniquerandom * Add readseq, implemented using iterator. * Realize most command-line-arguments from db_bench.cc (70+). * Some code are commented out as some of the options in Options not yet have Java bindings. * Add default option to DbBenchmark. * RocksDB will now take the ownership of all c++ raw-pointers from Options, which includes a c++ raw-pointer for Filter. Test Plan: ./jdb_bench.sh --db=/tmp/rocksjava-bench/db --num_levels=6 --key_size=20 --prefix_size=20 --keys_per_prefix=0 --value_size=100 --block_size=4096 --cache_size=17179869184 --cache_numshardbits=6 --compression_ratio=1 --min_level_to_compress=-1 --disable_seek_compaction=1 --hard_rate_limit=2 --write_buffer_size=134217728 --max_write_buffer_number=2 --level0_file_num_compaction_trigger=8 --target_file_size_base=134217728 --max_bytes_for_level_base=1073741824 --disable_wal=0 --wal_dir=/tmp/rocksjava-bench/wal --sync=0 --disable_data_sync=1 --verify_checksum=1 --delete_obsolete_files_period_micros=314572800 --max_grandparent_overlap_factor=10 --max_background_compactions=4 --max_background_flushes=0 --level0_slowdown_writes_trigger=16 --level0_stop_writes_trigger=24 --statistics=0 --stats_per_interval=0 --stats_interval=1048576 --histogram=0 --use_plain_table=1 --open_files=-1 --mmap_read=1 --mmap_write=0 --memtablerep=prefix_hash --bloom_bits=10 --bloom_locality=1 --perf_level=0 --benchmarks=filluniquerandom,readseq,readrandom --use_existing_db=0 --threads=4 Reviewers: haobo, dhruba, sdong, ankgup87, rsumbaly, swapnilghike, zzbennett Reviewed By: haobo CC: leveldb Differential Revision: https://reviews.facebook.net/D18267
424 lines
12 KiB
Java
424 lines
12 KiB
Java
// 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 java.util.Random;
|
|
import org.rocksdb.Options;
|
|
|
|
public class OptionsTest {
|
|
static {
|
|
System.loadLibrary("rocksdbjni");
|
|
}
|
|
public static void main(String[] args) {
|
|
Options opt = new Options();
|
|
Random rand = new Random();
|
|
{ // CreateIfMissing test
|
|
boolean boolValue = rand.nextBoolean();
|
|
opt.setCreateIfMissing(boolValue);
|
|
assert(opt.createIfMissing() == boolValue);
|
|
}
|
|
|
|
{ // ErrorIfExists test
|
|
boolean boolValue = rand.nextBoolean();
|
|
opt.setErrorIfExists(boolValue);
|
|
assert(opt.errorIfExists() == boolValue);
|
|
}
|
|
|
|
{ // ParanoidChecks test
|
|
boolean boolValue = rand.nextBoolean();
|
|
opt.setParanoidChecks(boolValue);
|
|
assert(opt.paranoidChecks() == boolValue);
|
|
}
|
|
|
|
{ // MaxOpenFiles test
|
|
int intValue = rand.nextInt();
|
|
opt.setMaxOpenFiles(intValue);
|
|
assert(opt.maxOpenFiles() == intValue);
|
|
}
|
|
|
|
{ // DisableDataSync test
|
|
boolean boolValue = rand.nextBoolean();
|
|
opt.setDisableDataSync(boolValue);
|
|
assert(opt.disableDataSync() == boolValue);
|
|
}
|
|
|
|
{ // UseFsync test
|
|
boolean boolValue = rand.nextBoolean();
|
|
opt.setUseFsync(boolValue);
|
|
assert(opt.useFsync() == boolValue);
|
|
}
|
|
|
|
{ // DbStatsLogInterval test
|
|
int intValue = rand.nextInt();
|
|
opt.setDbStatsLogInterval(intValue);
|
|
assert(opt.dbStatsLogInterval() == intValue);
|
|
}
|
|
|
|
{ // DbLogDir test
|
|
String str = "path/to/DbLogDir";
|
|
opt.setDbLogDir(str);
|
|
assert(opt.dbLogDir().equals(str));
|
|
}
|
|
|
|
{ // WalDir test
|
|
String str = "path/to/WalDir";
|
|
opt.setWalDir(str);
|
|
assert(opt.walDir().equals(str));
|
|
}
|
|
|
|
{ // DeleteObsoleteFilesPeriodMicros test
|
|
long longValue = rand.nextLong();
|
|
opt.setDeleteObsoleteFilesPeriodMicros(longValue);
|
|
assert(opt.deleteObsoleteFilesPeriodMicros() == longValue);
|
|
}
|
|
|
|
{ // MaxBackgroundCompactions test
|
|
int intValue = rand.nextInt();
|
|
opt.setMaxBackgroundCompactions(intValue);
|
|
assert(opt.maxBackgroundCompactions() == intValue);
|
|
}
|
|
|
|
{ // MaxBackgroundFlushes test
|
|
int intValue = rand.nextInt();
|
|
opt.setMaxBackgroundFlushes(intValue);
|
|
assert(opt.maxBackgroundFlushes() == intValue);
|
|
}
|
|
|
|
{ // MaxLogFileSize test
|
|
long longValue = rand.nextLong();
|
|
opt.setMaxLogFileSize(longValue);
|
|
assert(opt.maxLogFileSize() == longValue);
|
|
}
|
|
|
|
{ // LogFileTimeToRoll test
|
|
long longValue = rand.nextLong();
|
|
opt.setLogFileTimeToRoll(longValue);
|
|
assert(opt.logFileTimeToRoll() == longValue);
|
|
}
|
|
|
|
{ // KeepLogFileNum test
|
|
long longValue = rand.nextLong();
|
|
opt.setKeepLogFileNum(longValue);
|
|
assert(opt.keepLogFileNum() == longValue);
|
|
}
|
|
|
|
{ // MaxManifestFileSize test
|
|
long longValue = rand.nextLong();
|
|
opt.setMaxManifestFileSize(longValue);
|
|
assert(opt.maxManifestFileSize() == longValue);
|
|
}
|
|
|
|
{ // TableCacheNumshardbits test
|
|
int intValue = rand.nextInt();
|
|
opt.setTableCacheNumshardbits(intValue);
|
|
assert(opt.tableCacheNumshardbits() == intValue);
|
|
}
|
|
|
|
{ // TableCacheRemoveScanCountLimit test
|
|
int intValue = rand.nextInt();
|
|
opt.setTableCacheRemoveScanCountLimit(intValue);
|
|
assert(opt.tableCacheRemoveScanCountLimit() == intValue);
|
|
}
|
|
|
|
{ // WalTtlSeconds test
|
|
long longValue = rand.nextLong();
|
|
opt.setWalTtlSeconds(longValue);
|
|
assert(opt.walTtlSeconds() == longValue);
|
|
}
|
|
|
|
{ // ManifestPreallocationSize test
|
|
long longValue = rand.nextLong();
|
|
opt.setManifestPreallocationSize(longValue);
|
|
assert(opt.manifestPreallocationSize() == longValue);
|
|
}
|
|
|
|
{ // AllowOsBuffer test
|
|
boolean boolValue = rand.nextBoolean();
|
|
opt.setAllowOsBuffer(boolValue);
|
|
assert(opt.allowOsBuffer() == boolValue);
|
|
}
|
|
|
|
{ // AllowMmapReads test
|
|
boolean boolValue = rand.nextBoolean();
|
|
opt.setAllowMmapReads(boolValue);
|
|
assert(opt.allowMmapReads() == boolValue);
|
|
}
|
|
|
|
{ // AllowMmapWrites test
|
|
boolean boolValue = rand.nextBoolean();
|
|
opt.setAllowMmapWrites(boolValue);
|
|
assert(opt.allowMmapWrites() == boolValue);
|
|
}
|
|
|
|
{ // IsFdCloseOnExec test
|
|
boolean boolValue = rand.nextBoolean();
|
|
opt.setIsFdCloseOnExec(boolValue);
|
|
assert(opt.isFdCloseOnExec() == boolValue);
|
|
}
|
|
|
|
{ // SkipLogErrorOnRecovery test
|
|
boolean boolValue = rand.nextBoolean();
|
|
opt.setSkipLogErrorOnRecovery(boolValue);
|
|
assert(opt.skipLogErrorOnRecovery() == boolValue);
|
|
}
|
|
|
|
{ // StatsDumpPeriodSec test
|
|
int intValue = rand.nextInt();
|
|
opt.setStatsDumpPeriodSec(intValue);
|
|
assert(opt.statsDumpPeriodSec() == intValue);
|
|
}
|
|
|
|
{ // AdviseRandomOnOpen test
|
|
boolean boolValue = rand.nextBoolean();
|
|
opt.setAdviseRandomOnOpen(boolValue);
|
|
assert(opt.adviseRandomOnOpen() == boolValue);
|
|
}
|
|
|
|
{ // UseAdaptiveMutex test
|
|
boolean boolValue = rand.nextBoolean();
|
|
opt.setUseAdaptiveMutex(boolValue);
|
|
assert(opt.useAdaptiveMutex() == boolValue);
|
|
}
|
|
|
|
{ // BytesPerSync test
|
|
long longValue = rand.nextLong();
|
|
opt.setBytesPerSync(longValue);
|
|
assert(opt.bytesPerSync() == longValue);
|
|
}
|
|
|
|
{ // AllowThreadLocal test
|
|
boolean boolValue = rand.nextBoolean();
|
|
opt.setAllowThreadLocal(boolValue);
|
|
assert(opt.allowThreadLocal() == boolValue);
|
|
}
|
|
|
|
{ // WriteBufferSize test
|
|
long longValue = rand.nextLong();
|
|
opt.setWriteBufferSize(longValue);
|
|
assert(opt.writeBufferSize() == longValue);
|
|
}
|
|
|
|
{ // MaxWriteBufferNumber test
|
|
int intValue = rand.nextInt();
|
|
opt.setMaxWriteBufferNumber(intValue);
|
|
assert(opt.maxWriteBufferNumber() == intValue);
|
|
}
|
|
|
|
{ // MinWriteBufferNumberToMerge test
|
|
int intValue = rand.nextInt();
|
|
opt.setMinWriteBufferNumberToMerge(intValue);
|
|
assert(opt.minWriteBufferNumberToMerge() == intValue);
|
|
}
|
|
|
|
{ // BlockSize test
|
|
long longValue = rand.nextLong();
|
|
opt.setBlockSize(longValue);
|
|
assert(opt.blockSize() == longValue);
|
|
}
|
|
|
|
{ // BlockRestartInterval test
|
|
int intValue = rand.nextInt();
|
|
opt.setBlockRestartInterval(intValue);
|
|
assert(opt.blockRestartInterval() == intValue);
|
|
}
|
|
|
|
{ // WholeKeyFiltering test
|
|
boolean boolValue = rand.nextBoolean();
|
|
opt.setWholeKeyFiltering(boolValue);
|
|
assert(opt.wholeKeyFiltering() == boolValue);
|
|
}
|
|
|
|
{ // NumLevels test
|
|
int intValue = rand.nextInt();
|
|
opt.setNumLevels(intValue);
|
|
assert(opt.numLevels() == intValue);
|
|
}
|
|
|
|
{ // LevelFileNumCompactionTrigger test
|
|
int intValue = rand.nextInt();
|
|
opt.setLevelZeroFileNumCompactionTrigger(intValue);
|
|
assert(opt.levelZeroFileNumCompactionTrigger() == intValue);
|
|
}
|
|
|
|
{ // LevelSlowdownWritesTrigger test
|
|
int intValue = rand.nextInt();
|
|
opt.setLevelZeroSlowdownWritesTrigger(intValue);
|
|
assert(opt.levelZeroSlowdownWritesTrigger() == intValue);
|
|
}
|
|
|
|
{ // LevelStopWritesTrigger test
|
|
int intValue = rand.nextInt();
|
|
opt.setLevelZeroStopWritesTrigger(intValue);
|
|
assert(opt.levelZeroStopWritesTrigger() == intValue);
|
|
}
|
|
|
|
{ // MaxMemCompactionLevel test
|
|
int intValue = rand.nextInt();
|
|
opt.setMaxMemCompactionLevel(intValue);
|
|
assert(opt.maxMemCompactionLevel() == intValue);
|
|
}
|
|
|
|
{ // TargetFileSizeBase test
|
|
int intValue = rand.nextInt();
|
|
opt.setTargetFileSizeBase(intValue);
|
|
assert(opt.targetFileSizeBase() == intValue);
|
|
}
|
|
|
|
{ // TargetFileSizeMultiplier test
|
|
int intValue = rand.nextInt();
|
|
opt.setTargetFileSizeMultiplier(intValue);
|
|
assert(opt.targetFileSizeMultiplier() == intValue);
|
|
}
|
|
|
|
{ // MaxBytesForLevelBase test
|
|
long longValue = rand.nextLong();
|
|
opt.setMaxBytesForLevelBase(longValue);
|
|
assert(opt.maxBytesForLevelBase() == longValue);
|
|
}
|
|
|
|
{ // MaxBytesForLevelMultiplier test
|
|
int intValue = rand.nextInt();
|
|
opt.setMaxBytesForLevelMultiplier(intValue);
|
|
assert(opt.maxBytesForLevelMultiplier() == intValue);
|
|
}
|
|
|
|
{ // ExpandedCompactionFactor test
|
|
int intValue = rand.nextInt();
|
|
opt.setExpandedCompactionFactor(intValue);
|
|
assert(opt.expandedCompactionFactor() == intValue);
|
|
}
|
|
|
|
{ // SourceCompactionFactor test
|
|
int intValue = rand.nextInt();
|
|
opt.setSourceCompactionFactor(intValue);
|
|
assert(opt.sourceCompactionFactor() == intValue);
|
|
}
|
|
|
|
{ // MaxGrandparentOverlapFactor test
|
|
int intValue = rand.nextInt();
|
|
opt.setMaxGrandparentOverlapFactor(intValue);
|
|
assert(opt.maxGrandparentOverlapFactor() == intValue);
|
|
}
|
|
|
|
{ // DisableSeekCompaction test
|
|
boolean boolValue = rand.nextBoolean();
|
|
opt.setDisableSeekCompaction(boolValue);
|
|
assert(opt.disableSeekCompaction() == boolValue);
|
|
}
|
|
|
|
{ // SoftRateLimit test
|
|
double doubleValue = rand.nextDouble();
|
|
opt.setSoftRateLimit(doubleValue);
|
|
assert(opt.softRateLimit() == doubleValue);
|
|
}
|
|
|
|
{ // HardRateLimit test
|
|
double doubleValue = rand.nextDouble();
|
|
opt.setHardRateLimit(doubleValue);
|
|
assert(opt.hardRateLimit() == doubleValue);
|
|
}
|
|
|
|
{ // RateLimitDelayMaxMilliseconds test
|
|
int intValue = rand.nextInt();
|
|
opt.setRateLimitDelayMaxMilliseconds(intValue);
|
|
assert(opt.rateLimitDelayMaxMilliseconds() == intValue);
|
|
}
|
|
|
|
{ // NoBlockCache test
|
|
boolean boolValue = rand.nextBoolean();
|
|
opt.setNoBlockCache(boolValue);
|
|
assert(opt.noBlockCache() == boolValue);
|
|
}
|
|
|
|
{ // ArenaBlockSize test
|
|
long longValue = rand.nextLong();
|
|
opt.setArenaBlockSize(longValue);
|
|
assert(opt.arenaBlockSize() == longValue);
|
|
}
|
|
|
|
{ // DisableAutoCompactions test
|
|
boolean boolValue = rand.nextBoolean();
|
|
opt.setDisableAutoCompactions(boolValue);
|
|
assert(opt.disableAutoCompactions() == boolValue);
|
|
}
|
|
|
|
{ // PurgeRedundantKvsWhileFlush test
|
|
boolean boolValue = rand.nextBoolean();
|
|
opt.setPurgeRedundantKvsWhileFlush(boolValue);
|
|
assert(opt.purgeRedundantKvsWhileFlush() == boolValue);
|
|
}
|
|
|
|
{ // BlockSizeDeviation test
|
|
int intValue = rand.nextInt();
|
|
opt.setBlockSizeDeviation(intValue);
|
|
assert(opt.blockSizeDeviation() == intValue);
|
|
}
|
|
|
|
{ // VerifyChecksumsInCompaction test
|
|
boolean boolValue = rand.nextBoolean();
|
|
opt.setVerifyChecksumsInCompaction(boolValue);
|
|
assert(opt.verifyChecksumsInCompaction() == boolValue);
|
|
}
|
|
|
|
{ // FilterDeletes test
|
|
boolean boolValue = rand.nextBoolean();
|
|
opt.setFilterDeletes(boolValue);
|
|
assert(opt.filterDeletes() == boolValue);
|
|
}
|
|
|
|
{ // MaxSequentialSkipInIterations test
|
|
long longValue = rand.nextLong();
|
|
opt.setMaxSequentialSkipInIterations(longValue);
|
|
assert(opt.maxSequentialSkipInIterations() == longValue);
|
|
}
|
|
|
|
{ // InplaceUpdateSupport test
|
|
boolean boolValue = rand.nextBoolean();
|
|
opt.setInplaceUpdateSupport(boolValue);
|
|
assert(opt.inplaceUpdateSupport() == boolValue);
|
|
}
|
|
|
|
{ // InplaceUpdateNumLocks test
|
|
long longValue = rand.nextLong();
|
|
opt.setInplaceUpdateNumLocks(longValue);
|
|
assert(opt.inplaceUpdateNumLocks() == longValue);
|
|
}
|
|
|
|
{ // MemtablePrefixBloomBits test
|
|
int intValue = rand.nextInt();
|
|
opt.setMemtablePrefixBloomBits(intValue);
|
|
assert(opt.memtablePrefixBloomBits() == intValue);
|
|
}
|
|
|
|
{ // MemtablePrefixBloomProbes test
|
|
int intValue = rand.nextInt();
|
|
opt.setMemtablePrefixBloomProbes(intValue);
|
|
assert(opt.memtablePrefixBloomProbes() == intValue);
|
|
}
|
|
|
|
{ // BloomLocality test
|
|
int intValue = rand.nextInt();
|
|
opt.setBloomLocality(intValue);
|
|
assert(opt.bloomLocality() == intValue);
|
|
}
|
|
|
|
{ // MaxSuccessiveMerges test
|
|
long longValue = rand.nextLong();
|
|
opt.setMaxSuccessiveMerges(longValue);
|
|
assert(opt.maxSuccessiveMerges() == longValue);
|
|
}
|
|
|
|
{ // MinPartialMergeOperands test
|
|
int intValue = rand.nextInt();
|
|
opt.setMinPartialMergeOperands(intValue);
|
|
assert(opt.minPartialMergeOperands() == intValue);
|
|
}
|
|
|
|
opt.dispose();
|
|
System.out.println("Passed OptionsTest");
|
|
}
|
|
}
|