1 // Copyright (c) 2011-present, Facebook, Inc. All rights reserved. 2 // This source code is licensed under both the GPLv2 (found in the 3 // COPYING file in the root directory) and Apache 2.0 License 4 // (found in the LICENSE.Apache file in the root directory). 5 6 package org.rocksdb; 7 8 import static org.assertj.core.api.Assertions.assertThat; 9 import static org.junit.Assert.assertEquals; 10 11 import java.io.IOException; 12 import java.nio.file.Files; 13 import java.nio.file.Paths; 14 import java.util.*; 15 import org.junit.ClassRule; 16 import org.junit.Test; 17 import org.rocksdb.test.RemoveEmptyValueCompactionFilterFactory; 18 19 public class ColumnFamilyOptionsTest { 20 21 @ClassRule 22 public static final RocksNativeLibraryResource ROCKS_NATIVE_LIBRARY_RESOURCE = 23 new RocksNativeLibraryResource(); 24 25 public static final Random rand = PlatformRandomHelper. 26 getPlatformSpecificRandomFactory(); 27 28 @Test copyConstructor()29 public void copyConstructor() { 30 ColumnFamilyOptions origOpts = new ColumnFamilyOptions(); 31 origOpts.setNumLevels(rand.nextInt(8)); 32 origOpts.setTargetFileSizeMultiplier(rand.nextInt(100)); 33 origOpts.setLevel0StopWritesTrigger(rand.nextInt(50)); 34 ColumnFamilyOptions copyOpts = new ColumnFamilyOptions(origOpts); 35 assertThat(origOpts.numLevels()).isEqualTo(copyOpts.numLevels()); 36 assertThat(origOpts.targetFileSizeMultiplier()).isEqualTo(copyOpts.targetFileSizeMultiplier()); 37 assertThat(origOpts.level0StopWritesTrigger()).isEqualTo(copyOpts.level0StopWritesTrigger()); 38 } 39 40 @Test getColumnFamilyOptionsFromProps()41 public void getColumnFamilyOptionsFromProps() { 42 Properties properties = new Properties(); 43 properties.put("write_buffer_size", "112"); 44 properties.put("max_write_buffer_number", "13"); 45 46 try (final ColumnFamilyOptions opt = ColumnFamilyOptions. 47 getColumnFamilyOptionsFromProps(properties)) { 48 // setup sample properties 49 assertThat(opt).isNotNull(); 50 assertThat(String.valueOf(opt.writeBufferSize())). 51 isEqualTo(properties.get("write_buffer_size")); 52 assertThat(String.valueOf(opt.maxWriteBufferNumber())). 53 isEqualTo(properties.get("max_write_buffer_number")); 54 } 55 } 56 57 @Test getColumnFamilyOptionsFromPropsWithIgnoreIllegalValue()58 public void getColumnFamilyOptionsFromPropsWithIgnoreIllegalValue() { 59 // setup sample properties 60 final Properties properties = new Properties(); 61 properties.put("tomato", "1024"); 62 properties.put("burger", "2"); 63 properties.put("write_buffer_size", "112"); 64 properties.put("max_write_buffer_number", "13"); 65 66 try (final ConfigOptions cfgOpts = new ConfigOptions().setIgnoreUnknownOptions(true); 67 final ColumnFamilyOptions opt = 68 ColumnFamilyOptions.getColumnFamilyOptionsFromProps(cfgOpts, properties)) { 69 // setup sample properties 70 assertThat(opt).isNotNull(); 71 assertThat(String.valueOf(opt.writeBufferSize())) 72 .isEqualTo(properties.get("write_buffer_size")); 73 assertThat(String.valueOf(opt.maxWriteBufferNumber())) 74 .isEqualTo(properties.get("max_write_buffer_number")); 75 } 76 } 77 78 @Test failColumnFamilyOptionsFromPropsWithIllegalValue()79 public void failColumnFamilyOptionsFromPropsWithIllegalValue() { 80 // setup sample properties 81 final Properties properties = new Properties(); 82 properties.put("tomato", "1024"); 83 properties.put("burger", "2"); 84 85 try (final ColumnFamilyOptions opt = 86 ColumnFamilyOptions.getColumnFamilyOptionsFromProps(properties)) { 87 assertThat(opt).isNull(); 88 } 89 } 90 91 @Test(expected = IllegalArgumentException.class) failColumnFamilyOptionsFromPropsWithNullValue()92 public void failColumnFamilyOptionsFromPropsWithNullValue() { 93 try (final ColumnFamilyOptions opt = 94 ColumnFamilyOptions.getColumnFamilyOptionsFromProps(null)) { 95 } 96 } 97 98 @Test(expected = IllegalArgumentException.class) failColumnFamilyOptionsFromPropsWithEmptyProps()99 public void failColumnFamilyOptionsFromPropsWithEmptyProps() { 100 try (final ColumnFamilyOptions opt = 101 ColumnFamilyOptions.getColumnFamilyOptionsFromProps( 102 new Properties())) { 103 } 104 } 105 106 @Test writeBufferSize()107 public void writeBufferSize() throws RocksDBException { 108 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { 109 final long longValue = rand.nextLong(); 110 opt.setWriteBufferSize(longValue); 111 assertThat(opt.writeBufferSize()).isEqualTo(longValue); 112 } 113 } 114 115 @Test maxWriteBufferNumber()116 public void maxWriteBufferNumber() { 117 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { 118 final int intValue = rand.nextInt(); 119 opt.setMaxWriteBufferNumber(intValue); 120 assertThat(opt.maxWriteBufferNumber()).isEqualTo(intValue); 121 } 122 } 123 124 @Test minWriteBufferNumberToMerge()125 public void minWriteBufferNumberToMerge() { 126 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { 127 final int intValue = rand.nextInt(); 128 opt.setMinWriteBufferNumberToMerge(intValue); 129 assertThat(opt.minWriteBufferNumberToMerge()).isEqualTo(intValue); 130 } 131 } 132 133 @Test numLevels()134 public void numLevels() { 135 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { 136 final int intValue = rand.nextInt(); 137 opt.setNumLevels(intValue); 138 assertThat(opt.numLevels()).isEqualTo(intValue); 139 } 140 } 141 142 @Test levelZeroFileNumCompactionTrigger()143 public void levelZeroFileNumCompactionTrigger() { 144 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { 145 final int intValue = rand.nextInt(); 146 opt.setLevelZeroFileNumCompactionTrigger(intValue); 147 assertThat(opt.levelZeroFileNumCompactionTrigger()).isEqualTo(intValue); 148 } 149 } 150 151 @Test levelZeroSlowdownWritesTrigger()152 public void levelZeroSlowdownWritesTrigger() { 153 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { 154 final int intValue = rand.nextInt(); 155 opt.setLevelZeroSlowdownWritesTrigger(intValue); 156 assertThat(opt.levelZeroSlowdownWritesTrigger()).isEqualTo(intValue); 157 } 158 } 159 160 @Test levelZeroStopWritesTrigger()161 public void levelZeroStopWritesTrigger() { 162 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { 163 final int intValue = rand.nextInt(); 164 opt.setLevelZeroStopWritesTrigger(intValue); 165 assertThat(opt.levelZeroStopWritesTrigger()).isEqualTo(intValue); 166 } 167 } 168 169 @Test targetFileSizeBase()170 public void targetFileSizeBase() { 171 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { 172 final long longValue = rand.nextLong(); 173 opt.setTargetFileSizeBase(longValue); 174 assertThat(opt.targetFileSizeBase()).isEqualTo(longValue); 175 } 176 } 177 178 @Test targetFileSizeMultiplier()179 public void targetFileSizeMultiplier() { 180 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { 181 final int intValue = rand.nextInt(); 182 opt.setTargetFileSizeMultiplier(intValue); 183 assertThat(opt.targetFileSizeMultiplier()).isEqualTo(intValue); 184 } 185 } 186 187 @Test maxBytesForLevelBase()188 public void maxBytesForLevelBase() { 189 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { 190 final long longValue = rand.nextLong(); 191 opt.setMaxBytesForLevelBase(longValue); 192 assertThat(opt.maxBytesForLevelBase()).isEqualTo(longValue); 193 } 194 } 195 196 @Test levelCompactionDynamicLevelBytes()197 public void levelCompactionDynamicLevelBytes() { 198 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { 199 final boolean boolValue = rand.nextBoolean(); 200 opt.setLevelCompactionDynamicLevelBytes(boolValue); 201 assertThat(opt.levelCompactionDynamicLevelBytes()) 202 .isEqualTo(boolValue); 203 } 204 } 205 206 @Test maxBytesForLevelMultiplier()207 public void maxBytesForLevelMultiplier() { 208 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { 209 final double doubleValue = rand.nextDouble(); 210 opt.setMaxBytesForLevelMultiplier(doubleValue); 211 assertThat(opt.maxBytesForLevelMultiplier()).isEqualTo(doubleValue); 212 } 213 } 214 215 @Test maxBytesForLevelMultiplierAdditional()216 public void maxBytesForLevelMultiplierAdditional() { 217 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { 218 final int intValue1 = rand.nextInt(); 219 final int intValue2 = rand.nextInt(); 220 final int[] ints = new int[]{intValue1, intValue2}; 221 opt.setMaxBytesForLevelMultiplierAdditional(ints); 222 assertThat(opt.maxBytesForLevelMultiplierAdditional()).isEqualTo(ints); 223 } 224 } 225 226 @Test maxCompactionBytes()227 public void maxCompactionBytes() { 228 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { 229 final long longValue = rand.nextLong(); 230 opt.setMaxCompactionBytes(longValue); 231 assertThat(opt.maxCompactionBytes()).isEqualTo(longValue); 232 } 233 } 234 235 @Test softPendingCompactionBytesLimit()236 public void softPendingCompactionBytesLimit() { 237 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { 238 final long longValue = rand.nextLong(); 239 opt.setSoftPendingCompactionBytesLimit(longValue); 240 assertThat(opt.softPendingCompactionBytesLimit()).isEqualTo(longValue); 241 } 242 } 243 244 @Test hardPendingCompactionBytesLimit()245 public void hardPendingCompactionBytesLimit() { 246 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { 247 final long longValue = rand.nextLong(); 248 opt.setHardPendingCompactionBytesLimit(longValue); 249 assertThat(opt.hardPendingCompactionBytesLimit()).isEqualTo(longValue); 250 } 251 } 252 253 @Test level0FileNumCompactionTrigger()254 public void level0FileNumCompactionTrigger() { 255 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { 256 final int intValue = rand.nextInt(); 257 opt.setLevel0FileNumCompactionTrigger(intValue); 258 assertThat(opt.level0FileNumCompactionTrigger()).isEqualTo(intValue); 259 } 260 } 261 262 @Test level0SlowdownWritesTrigger()263 public void level0SlowdownWritesTrigger() { 264 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { 265 final int intValue = rand.nextInt(); 266 opt.setLevel0SlowdownWritesTrigger(intValue); 267 assertThat(opt.level0SlowdownWritesTrigger()).isEqualTo(intValue); 268 } 269 } 270 271 @Test level0StopWritesTrigger()272 public void level0StopWritesTrigger() { 273 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { 274 final int intValue = rand.nextInt(); 275 opt.setLevel0StopWritesTrigger(intValue); 276 assertThat(opt.level0StopWritesTrigger()).isEqualTo(intValue); 277 } 278 } 279 280 @Test arenaBlockSize()281 public void arenaBlockSize() throws RocksDBException { 282 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { 283 final long longValue = rand.nextLong(); 284 opt.setArenaBlockSize(longValue); 285 assertThat(opt.arenaBlockSize()).isEqualTo(longValue); 286 } 287 } 288 289 @Test disableAutoCompactions()290 public void disableAutoCompactions() { 291 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { 292 final boolean boolValue = rand.nextBoolean(); 293 opt.setDisableAutoCompactions(boolValue); 294 assertThat(opt.disableAutoCompactions()).isEqualTo(boolValue); 295 } 296 } 297 298 @Test maxSequentialSkipInIterations()299 public void maxSequentialSkipInIterations() { 300 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { 301 final long longValue = rand.nextLong(); 302 opt.setMaxSequentialSkipInIterations(longValue); 303 assertThat(opt.maxSequentialSkipInIterations()).isEqualTo(longValue); 304 } 305 } 306 307 @Test inplaceUpdateSupport()308 public void inplaceUpdateSupport() { 309 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { 310 final boolean boolValue = rand.nextBoolean(); 311 opt.setInplaceUpdateSupport(boolValue); 312 assertThat(opt.inplaceUpdateSupport()).isEqualTo(boolValue); 313 } 314 } 315 316 @Test inplaceUpdateNumLocks()317 public void inplaceUpdateNumLocks() throws RocksDBException { 318 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { 319 final long longValue = rand.nextLong(); 320 opt.setInplaceUpdateNumLocks(longValue); 321 assertThat(opt.inplaceUpdateNumLocks()).isEqualTo(longValue); 322 } 323 } 324 325 @Test memtablePrefixBloomSizeRatio()326 public void memtablePrefixBloomSizeRatio() { 327 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { 328 final double doubleValue = rand.nextDouble(); 329 opt.setMemtablePrefixBloomSizeRatio(doubleValue); 330 assertThat(opt.memtablePrefixBloomSizeRatio()).isEqualTo(doubleValue); 331 } 332 } 333 334 @Test memtableHugePageSize()335 public void memtableHugePageSize() { 336 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { 337 final long longValue = rand.nextLong(); 338 opt.setMemtableHugePageSize(longValue); 339 assertThat(opt.memtableHugePageSize()).isEqualTo(longValue); 340 } 341 } 342 343 @Test bloomLocality()344 public void bloomLocality() { 345 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { 346 final int intValue = rand.nextInt(); 347 opt.setBloomLocality(intValue); 348 assertThat(opt.bloomLocality()).isEqualTo(intValue); 349 } 350 } 351 352 @Test maxSuccessiveMerges()353 public void maxSuccessiveMerges() throws RocksDBException { 354 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { 355 final long longValue = rand.nextLong(); 356 opt.setMaxSuccessiveMerges(longValue); 357 assertThat(opt.maxSuccessiveMerges()).isEqualTo(longValue); 358 } 359 } 360 361 @Test optimizeFiltersForHits()362 public void optimizeFiltersForHits() { 363 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { 364 final boolean aBoolean = rand.nextBoolean(); 365 opt.setOptimizeFiltersForHits(aBoolean); 366 assertThat(opt.optimizeFiltersForHits()).isEqualTo(aBoolean); 367 } 368 } 369 370 @Test memTable()371 public void memTable() throws RocksDBException { 372 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { 373 opt.setMemTableConfig(new HashLinkedListMemTableConfig()); 374 assertThat(opt.memTableFactoryName()). 375 isEqualTo("HashLinkedListRepFactory"); 376 } 377 } 378 379 @Test comparator()380 public void comparator() throws RocksDBException { 381 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { 382 opt.setComparator(BuiltinComparator.BYTEWISE_COMPARATOR); 383 } 384 } 385 386 @Test linkageOfPrepMethods()387 public void linkageOfPrepMethods() { 388 try (final ColumnFamilyOptions options = new ColumnFamilyOptions()) { 389 options.optimizeUniversalStyleCompaction(); 390 options.optimizeUniversalStyleCompaction(4000); 391 options.optimizeLevelStyleCompaction(); 392 options.optimizeLevelStyleCompaction(3000); 393 options.optimizeForPointLookup(10); 394 options.optimizeForSmallDb(); 395 } 396 } 397 398 @Test shouldSetTestPrefixExtractor()399 public void shouldSetTestPrefixExtractor() { 400 try (final ColumnFamilyOptions options = new ColumnFamilyOptions()) { 401 options.useFixedLengthPrefixExtractor(100); 402 options.useFixedLengthPrefixExtractor(10); 403 } 404 } 405 406 @Test shouldSetTestCappedPrefixExtractor()407 public void shouldSetTestCappedPrefixExtractor() { 408 try (final ColumnFamilyOptions options = new ColumnFamilyOptions()) { 409 options.useCappedPrefixExtractor(100); 410 options.useCappedPrefixExtractor(10); 411 } 412 } 413 414 @Test compressionTypes()415 public void compressionTypes() { 416 try (final ColumnFamilyOptions columnFamilyOptions 417 = new ColumnFamilyOptions()) { 418 for (final CompressionType compressionType : 419 CompressionType.values()) { 420 columnFamilyOptions.setCompressionType(compressionType); 421 assertThat(columnFamilyOptions.compressionType()). 422 isEqualTo(compressionType); 423 assertThat(CompressionType.valueOf("NO_COMPRESSION")). 424 isEqualTo(CompressionType.NO_COMPRESSION); 425 } 426 } 427 } 428 429 @Test compressionPerLevel()430 public void compressionPerLevel() { 431 try (final ColumnFamilyOptions columnFamilyOptions 432 = new ColumnFamilyOptions()) { 433 assertThat(columnFamilyOptions.compressionPerLevel()).isEmpty(); 434 List<CompressionType> compressionTypeList = new ArrayList<>(); 435 for (int i = 0; i < columnFamilyOptions.numLevels(); i++) { 436 compressionTypeList.add(CompressionType.NO_COMPRESSION); 437 } 438 columnFamilyOptions.setCompressionPerLevel(compressionTypeList); 439 compressionTypeList = columnFamilyOptions.compressionPerLevel(); 440 for (CompressionType compressionType : compressionTypeList) { 441 assertThat(compressionType).isEqualTo( 442 CompressionType.NO_COMPRESSION); 443 } 444 } 445 } 446 447 @Test differentCompressionsPerLevel()448 public void differentCompressionsPerLevel() { 449 try (final ColumnFamilyOptions columnFamilyOptions 450 = new ColumnFamilyOptions()) { 451 columnFamilyOptions.setNumLevels(3); 452 453 assertThat(columnFamilyOptions.compressionPerLevel()).isEmpty(); 454 List<CompressionType> compressionTypeList = new ArrayList<>(); 455 456 compressionTypeList.add(CompressionType.BZLIB2_COMPRESSION); 457 compressionTypeList.add(CompressionType.SNAPPY_COMPRESSION); 458 compressionTypeList.add(CompressionType.LZ4_COMPRESSION); 459 460 columnFamilyOptions.setCompressionPerLevel(compressionTypeList); 461 compressionTypeList = columnFamilyOptions.compressionPerLevel(); 462 463 assertThat(compressionTypeList.size()).isEqualTo(3); 464 assertThat(compressionTypeList). 465 containsExactly( 466 CompressionType.BZLIB2_COMPRESSION, 467 CompressionType.SNAPPY_COMPRESSION, 468 CompressionType.LZ4_COMPRESSION); 469 470 } 471 } 472 473 @Test bottommostCompressionType()474 public void bottommostCompressionType() { 475 try (final ColumnFamilyOptions columnFamilyOptions 476 = new ColumnFamilyOptions()) { 477 assertThat(columnFamilyOptions.bottommostCompressionType()) 478 .isEqualTo(CompressionType.DISABLE_COMPRESSION_OPTION); 479 480 for (final CompressionType compressionType : CompressionType.values()) { 481 columnFamilyOptions.setBottommostCompressionType(compressionType); 482 assertThat(columnFamilyOptions.bottommostCompressionType()) 483 .isEqualTo(compressionType); 484 } 485 } 486 } 487 488 @Test bottommostCompressionOptions()489 public void bottommostCompressionOptions() { 490 try (final ColumnFamilyOptions columnFamilyOptions = 491 new ColumnFamilyOptions(); 492 final CompressionOptions bottommostCompressionOptions = 493 new CompressionOptions() 494 .setMaxDictBytes(123)) { 495 496 columnFamilyOptions.setBottommostCompressionOptions( 497 bottommostCompressionOptions); 498 assertThat(columnFamilyOptions.bottommostCompressionOptions()) 499 .isEqualTo(bottommostCompressionOptions); 500 assertThat(columnFamilyOptions.bottommostCompressionOptions() 501 .maxDictBytes()).isEqualTo(123); 502 } 503 } 504 505 @Test compressionOptions()506 public void compressionOptions() { 507 try (final ColumnFamilyOptions columnFamilyOptions 508 = new ColumnFamilyOptions(); 509 final CompressionOptions compressionOptions = new CompressionOptions() 510 .setMaxDictBytes(123)) { 511 512 columnFamilyOptions.setCompressionOptions(compressionOptions); 513 assertThat(columnFamilyOptions.compressionOptions()) 514 .isEqualTo(compressionOptions); 515 assertThat(columnFamilyOptions.compressionOptions().maxDictBytes()) 516 .isEqualTo(123); 517 } 518 } 519 520 @Test compactionStyles()521 public void compactionStyles() { 522 try (final ColumnFamilyOptions columnFamilyOptions 523 = new ColumnFamilyOptions()) { 524 for (final CompactionStyle compactionStyle : 525 CompactionStyle.values()) { 526 columnFamilyOptions.setCompactionStyle(compactionStyle); 527 assertThat(columnFamilyOptions.compactionStyle()). 528 isEqualTo(compactionStyle); 529 assertThat(CompactionStyle.valueOf("FIFO")). 530 isEqualTo(CompactionStyle.FIFO); 531 } 532 } 533 } 534 535 @Test maxTableFilesSizeFIFO()536 public void maxTableFilesSizeFIFO() { 537 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { 538 long longValue = rand.nextLong(); 539 // Size has to be positive 540 longValue = (longValue < 0) ? -longValue : longValue; 541 longValue = (longValue == 0) ? longValue + 1 : longValue; 542 opt.setMaxTableFilesSizeFIFO(longValue); 543 assertThat(opt.maxTableFilesSizeFIFO()). 544 isEqualTo(longValue); 545 } 546 } 547 548 @Test maxWriteBufferNumberToMaintain()549 public void maxWriteBufferNumberToMaintain() { 550 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { 551 int intValue = rand.nextInt(); 552 // Size has to be positive 553 intValue = (intValue < 0) ? -intValue : intValue; 554 intValue = (intValue == 0) ? intValue + 1 : intValue; 555 opt.setMaxWriteBufferNumberToMaintain(intValue); 556 assertThat(opt.maxWriteBufferNumberToMaintain()). 557 isEqualTo(intValue); 558 } 559 } 560 561 @Test compactionPriorities()562 public void compactionPriorities() { 563 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { 564 for (final CompactionPriority compactionPriority : 565 CompactionPriority.values()) { 566 opt.setCompactionPriority(compactionPriority); 567 assertThat(opt.compactionPriority()). 568 isEqualTo(compactionPriority); 569 } 570 } 571 } 572 573 @Test reportBgIoStats()574 public void reportBgIoStats() { 575 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { 576 final boolean booleanValue = true; 577 opt.setReportBgIoStats(booleanValue); 578 assertThat(opt.reportBgIoStats()). 579 isEqualTo(booleanValue); 580 } 581 } 582 583 @Test ttl()584 public void ttl() { 585 try (final ColumnFamilyOptions options = new ColumnFamilyOptions()) { 586 options.setTtl(1000 * 60); 587 assertThat(options.ttl()). 588 isEqualTo(1000 * 60); 589 } 590 } 591 592 @Test compactionOptionsUniversal()593 public void compactionOptionsUniversal() { 594 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions(); 595 final CompactionOptionsUniversal optUni = new CompactionOptionsUniversal() 596 .setCompressionSizePercent(7)) { 597 opt.setCompactionOptionsUniversal(optUni); 598 assertThat(opt.compactionOptionsUniversal()). 599 isEqualTo(optUni); 600 assertThat(opt.compactionOptionsUniversal().compressionSizePercent()) 601 .isEqualTo(7); 602 } 603 } 604 605 @Test compactionOptionsFIFO()606 public void compactionOptionsFIFO() { 607 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions(); 608 final CompactionOptionsFIFO optFifo = new CompactionOptionsFIFO() 609 .setMaxTableFilesSize(2000)) { 610 opt.setCompactionOptionsFIFO(optFifo); 611 assertThat(opt.compactionOptionsFIFO()). 612 isEqualTo(optFifo); 613 assertThat(opt.compactionOptionsFIFO().maxTableFilesSize()) 614 .isEqualTo(2000); 615 } 616 } 617 618 @Test forceConsistencyChecks()619 public void forceConsistencyChecks() { 620 try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { 621 final boolean booleanValue = true; 622 opt.setForceConsistencyChecks(booleanValue); 623 assertThat(opt.forceConsistencyChecks()). 624 isEqualTo(booleanValue); 625 } 626 } 627 628 @Test compactionFilter()629 public void compactionFilter() { 630 try(final ColumnFamilyOptions options = new ColumnFamilyOptions(); 631 final RemoveEmptyValueCompactionFilter cf = new RemoveEmptyValueCompactionFilter()) { 632 options.setCompactionFilter(cf); 633 assertThat(options.compactionFilter()).isEqualTo(cf); 634 } 635 } 636 637 @Test compactionFilterFactory()638 public void compactionFilterFactory() { 639 try(final ColumnFamilyOptions options = new ColumnFamilyOptions(); 640 final RemoveEmptyValueCompactionFilterFactory cff = new RemoveEmptyValueCompactionFilterFactory()) { 641 options.setCompactionFilterFactory(cff); 642 assertThat(options.compactionFilterFactory()).isEqualTo(cff); 643 } 644 } 645 646 @Test compactionThreadLimiter()647 public void compactionThreadLimiter() { 648 try (final ColumnFamilyOptions options = new ColumnFamilyOptions(); 649 final ConcurrentTaskLimiter compactionThreadLimiter = 650 new ConcurrentTaskLimiterImpl("name", 3)) { 651 options.setCompactionThreadLimiter(compactionThreadLimiter); 652 assertThat(options.compactionThreadLimiter()).isEqualTo(compactionThreadLimiter); 653 } 654 } 655 656 @Test oldDefaults()657 public void oldDefaults() { 658 try (final ColumnFamilyOptions options = new ColumnFamilyOptions()) { 659 options.oldDefaults(4, 6); 660 assertEquals(4 << 20, options.writeBufferSize()); 661 assertThat(options.compactionPriority()).isEqualTo(CompactionPriority.ByCompensatedSize); 662 assertThat(options.targetFileSizeBase()).isEqualTo(2 * 1048576); 663 assertThat(options.maxBytesForLevelBase()).isEqualTo(10 * 1048576); 664 assertThat(options.softPendingCompactionBytesLimit()).isEqualTo(0); 665 assertThat(options.hardPendingCompactionBytesLimit()).isEqualTo(0); 666 assertThat(options.level0StopWritesTrigger()).isEqualTo(24); 667 } 668 } 669 670 @Test optimizeForSmallDbWithCache()671 public void optimizeForSmallDbWithCache() { 672 try (final ColumnFamilyOptions options = new ColumnFamilyOptions(); 673 final Cache cache = new LRUCache(1024)) { 674 assertThat(options.optimizeForSmallDb(cache)).isEqualTo(options); 675 } 676 } 677 678 @Test cfPaths()679 public void cfPaths() throws IOException { 680 try (final ColumnFamilyOptions options = new ColumnFamilyOptions()) { 681 final List<DbPath> paths = Arrays.asList( 682 new DbPath(Paths.get("test1"), 2 << 25), new DbPath(Paths.get("/test2/path"), 2 << 25)); 683 assertThat(options.cfPaths()).isEqualTo(Collections.emptyList()); 684 assertThat(options.setCfPaths(paths)).isEqualTo(options); 685 assertThat(options.cfPaths()).isEqualTo(paths); 686 } 687 } 688 } 689