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 org.junit.ClassRule; 9 import org.junit.Test; 10 11 import java.util.Random; 12 13 import static org.assertj.core.api.Assertions.assertThat; 14 15 public class EnvOptionsTest { 16 @ClassRule 17 public static final RocksNativeLibraryResource ROCKS_NATIVE_LIBRARY_RESOURCE = new RocksNativeLibraryResource(); 18 19 public static final Random rand = PlatformRandomHelper.getPlatformSpecificRandomFactory(); 20 21 @Test dbOptionsConstructor()22 public void dbOptionsConstructor() { 23 final long compactionReadaheadSize = 4 * 1024 * 1024; 24 try (final DBOptions dbOptions = new DBOptions() 25 .setCompactionReadaheadSize(compactionReadaheadSize)) { 26 try (final EnvOptions envOptions = new EnvOptions(dbOptions)) { 27 assertThat(envOptions.compactionReadaheadSize()) 28 .isEqualTo(compactionReadaheadSize); 29 } 30 } 31 } 32 33 @Test useMmapReads()34 public void useMmapReads() { 35 try (final EnvOptions envOptions = new EnvOptions()) { 36 final boolean boolValue = rand.nextBoolean(); 37 envOptions.setUseMmapReads(boolValue); 38 assertThat(envOptions.useMmapReads()).isEqualTo(boolValue); 39 } 40 } 41 42 @Test useMmapWrites()43 public void useMmapWrites() { 44 try (final EnvOptions envOptions = new EnvOptions()) { 45 final boolean boolValue = rand.nextBoolean(); 46 envOptions.setUseMmapWrites(boolValue); 47 assertThat(envOptions.useMmapWrites()).isEqualTo(boolValue); 48 } 49 } 50 51 @Test useDirectReads()52 public void useDirectReads() { 53 try (final EnvOptions envOptions = new EnvOptions()) { 54 final boolean boolValue = rand.nextBoolean(); 55 envOptions.setUseDirectReads(boolValue); 56 assertThat(envOptions.useDirectReads()).isEqualTo(boolValue); 57 } 58 } 59 60 @Test useDirectWrites()61 public void useDirectWrites() { 62 try (final EnvOptions envOptions = new EnvOptions()) { 63 final boolean boolValue = rand.nextBoolean(); 64 envOptions.setUseDirectWrites(boolValue); 65 assertThat(envOptions.useDirectWrites()).isEqualTo(boolValue); 66 } 67 } 68 69 @Test allowFallocate()70 public void allowFallocate() { 71 try (final EnvOptions envOptions = new EnvOptions()) { 72 final boolean boolValue = rand.nextBoolean(); 73 envOptions.setAllowFallocate(boolValue); 74 assertThat(envOptions.allowFallocate()).isEqualTo(boolValue); 75 } 76 } 77 78 @Test setFdCloexecs()79 public void setFdCloexecs() { 80 try (final EnvOptions envOptions = new EnvOptions()) { 81 final boolean boolValue = rand.nextBoolean(); 82 envOptions.setSetFdCloexec(boolValue); 83 assertThat(envOptions.setFdCloexec()).isEqualTo(boolValue); 84 } 85 } 86 87 @Test bytesPerSync()88 public void bytesPerSync() { 89 try (final EnvOptions envOptions = new EnvOptions()) { 90 final long longValue = rand.nextLong(); 91 envOptions.setBytesPerSync(longValue); 92 assertThat(envOptions.bytesPerSync()).isEqualTo(longValue); 93 } 94 } 95 96 @Test fallocateWithKeepSize()97 public void fallocateWithKeepSize() { 98 try (final EnvOptions envOptions = new EnvOptions()) { 99 final boolean boolValue = rand.nextBoolean(); 100 envOptions.setFallocateWithKeepSize(boolValue); 101 assertThat(envOptions.fallocateWithKeepSize()).isEqualTo(boolValue); 102 } 103 } 104 105 @Test compactionReadaheadSize()106 public void compactionReadaheadSize() { 107 try (final EnvOptions envOptions = new EnvOptions()) { 108 final int intValue = rand.nextInt(); 109 envOptions.setCompactionReadaheadSize(intValue); 110 assertThat(envOptions.compactionReadaheadSize()).isEqualTo(intValue); 111 } 112 } 113 114 @Test randomAccessMaxBufferSize()115 public void randomAccessMaxBufferSize() { 116 try (final EnvOptions envOptions = new EnvOptions()) { 117 final int intValue = rand.nextInt(); 118 envOptions.setRandomAccessMaxBufferSize(intValue); 119 assertThat(envOptions.randomAccessMaxBufferSize()).isEqualTo(intValue); 120 } 121 } 122 123 @Test writableFileMaxBufferSize()124 public void writableFileMaxBufferSize() { 125 try (final EnvOptions envOptions = new EnvOptions()) { 126 final int intValue = rand.nextInt(); 127 envOptions.setWritableFileMaxBufferSize(intValue); 128 assertThat(envOptions.writableFileMaxBufferSize()).isEqualTo(intValue); 129 } 130 } 131 132 @Test rateLimiter()133 public void rateLimiter() { 134 try (final EnvOptions envOptions = new EnvOptions(); 135 final RateLimiter rateLimiter1 = new RateLimiter(1000, 100 * 1000, 1)) { 136 envOptions.setRateLimiter(rateLimiter1); 137 assertThat(envOptions.rateLimiter()).isEqualTo(rateLimiter1); 138 139 try(final RateLimiter rateLimiter2 = new RateLimiter(1000)) { 140 envOptions.setRateLimiter(rateLimiter2); 141 assertThat(envOptions.rateLimiter()).isEqualTo(rateLimiter2); 142 } 143 } 144 } 145 } 146