]> git.proxmox.com Git - ceph.git/blame - ceph/src/rocksdb/java/src/test/java/org/rocksdb/MutableOptionsGetSetTest.java
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / rocksdb / java / src / test / java / org / rocksdb / MutableOptionsGetSetTest.java
CommitLineData
1e59de90
TL
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).
5package org.rocksdb;
6
7import static java.nio.charset.StandardCharsets.UTF_8;
8import static org.assertj.core.api.Assertions.assertThat;
9
10import java.util.ArrayList;
11import java.util.Collections;
12import java.util.List;
13import org.junit.Rule;
14import org.junit.Test;
15import org.junit.rules.TemporaryFolder;
16
17public class MutableOptionsGetSetTest {
18 final int minBlobSize = 65536;
19
20 @Rule public TemporaryFolder dbFolder = new TemporaryFolder();
21
22 /**
23 * Validate the round-trip of blob options into and out of the C++ core of RocksDB
24 * From CF options on CF Creation to {RocksDB#getOptions}
25 * Uses 2x column families with different values for their options.
26 * NOTE that some constraints are applied to the options in the C++ core,
27 * e.g. on {ColumnFamilyOptions#setMemtablePrefixBloomSizeRatio}
28 *
29 * @throws RocksDBException if the database throws an exception
30 */
31 @Test
32 public void testGetMutableBlobOptionsAfterCreate() throws RocksDBException {
33 final ColumnFamilyOptions columnFamilyOptions0 = new ColumnFamilyOptions();
34 final ColumnFamilyDescriptor columnFamilyDescriptor0 =
35 new ColumnFamilyDescriptor("default".getBytes(UTF_8), columnFamilyOptions0);
36 final List<ColumnFamilyDescriptor> columnFamilyDescriptors =
37 Collections.singletonList(columnFamilyDescriptor0);
38 final List<ColumnFamilyHandle> columnFamilyHandles = new ArrayList<>();
39
40 try (final DBOptions dbOptions = new DBOptions().setCreateIfMissing(true);
41 final RocksDB db = RocksDB.open(dbOptions, dbFolder.getRoot().getAbsolutePath(),
42 columnFamilyDescriptors, columnFamilyHandles)) {
43 try (final ColumnFamilyOptions columnFamilyOptions1 =
44 new ColumnFamilyOptions()
45 .setMinBlobSize(minBlobSize)
46 .setEnableBlobFiles(true)
47 .setBlobGarbageCollectionAgeCutoff(0.25)
48 .setBlobGarbageCollectionForceThreshold(0.80)
49 .setBlobCompactionReadaheadSize(262144)
50 .setBlobFileStartingLevel(2)
51 .setArenaBlockSize(42)
52 .setMemtablePrefixBloomSizeRatio(0.17)
53 .setExperimentalMempurgeThreshold(0.005)
54 .setMemtableWholeKeyFiltering(false)
55 .setMemtableHugePageSize(3)
56 .setMaxSuccessiveMerges(4)
57 .setMaxWriteBufferNumber(12)
58 .setInplaceUpdateNumLocks(16)
59 .setDisableAutoCompactions(false)
60 .setSoftPendingCompactionBytesLimit(112)
61 .setHardPendingCompactionBytesLimit(280)
62 .setLevel0FileNumCompactionTrigger(200)
63 .setLevel0SlowdownWritesTrigger(312)
64 .setLevel0StopWritesTrigger(584)
65 .setMaxCompactionBytes(12)
66 .setTargetFileSizeBase(99)
67 .setTargetFileSizeMultiplier(112)
68 .setMaxSequentialSkipInIterations(50)
69 .setReportBgIoStats(true);
70
71 final ColumnFamilyOptions columnFamilyOptions2 =
72 new ColumnFamilyOptions()
73 .setMinBlobSize(minBlobSize)
74 .setEnableBlobFiles(false)
75 .setArenaBlockSize(42)
76 .setMemtablePrefixBloomSizeRatio(0.236)
77 .setExperimentalMempurgeThreshold(0.247)
78 .setMemtableWholeKeyFiltering(true)
79 .setMemtableHugePageSize(8)
80 .setMaxSuccessiveMerges(12)
81 .setMaxWriteBufferNumber(22)
82 .setInplaceUpdateNumLocks(160)
83 .setDisableAutoCompactions(true)
84 .setSoftPendingCompactionBytesLimit(1124)
85 .setHardPendingCompactionBytesLimit(2800)
86 .setLevel0FileNumCompactionTrigger(2000)
87 .setLevel0SlowdownWritesTrigger(5840)
88 .setLevel0StopWritesTrigger(31200)
89 .setMaxCompactionBytes(112)
90 .setTargetFileSizeBase(999)
91 .setTargetFileSizeMultiplier(1120)
92 .setMaxSequentialSkipInIterations(24)
93 .setReportBgIoStats(true)) {
94 final ColumnFamilyDescriptor columnFamilyDescriptor1 =
95 new ColumnFamilyDescriptor("column_family_1".getBytes(UTF_8), columnFamilyOptions1);
96 final ColumnFamilyDescriptor columnFamilyDescriptor2 =
97 new ColumnFamilyDescriptor("column_family_2".getBytes(UTF_8), columnFamilyOptions2);
98
99 // Create the column family with blob options
100 final ColumnFamilyHandle columnFamilyHandle1 =
101 db.createColumnFamily(columnFamilyDescriptor1);
102 final ColumnFamilyHandle columnFamilyHandle2 =
103 db.createColumnFamily(columnFamilyDescriptor2);
104
105 // Check the getOptions() brings back the creation options for CF1
106 final MutableColumnFamilyOptions.MutableColumnFamilyOptionsBuilder builder1 =
107 db.getOptions(columnFamilyHandle1);
108 assertThat(builder1.enableBlobFiles()).isEqualTo(true);
109 assertThat(builder1.blobGarbageCollectionAgeCutoff()).isEqualTo(0.25);
110 assertThat(builder1.blobGarbageCollectionForceThreshold()).isEqualTo(0.80);
111 assertThat(builder1.blobCompactionReadaheadSize()).isEqualTo(262144);
112 assertThat(builder1.blobFileStartingLevel()).isEqualTo(2);
113 assertThat(builder1.minBlobSize()).isEqualTo(minBlobSize);
114 assertThat(builder1.arenaBlockSize()).isEqualTo(42);
115 assertThat(builder1.memtablePrefixBloomSizeRatio()).isEqualTo(0.17);
116 assertThat(builder1.experimentalMempurgeThreshold()).isEqualTo(0.005);
117 assertThat(builder1.memtableWholeKeyFiltering()).isEqualTo(false);
118 assertThat(builder1.memtableHugePageSize()).isEqualTo(3);
119 assertThat(builder1.maxSuccessiveMerges()).isEqualTo(4);
120 assertThat(builder1.maxWriteBufferNumber()).isEqualTo(12);
121 assertThat(builder1.inplaceUpdateNumLocks()).isEqualTo(16);
122 assertThat(builder1.disableAutoCompactions()).isEqualTo(false);
123 assertThat(builder1.softPendingCompactionBytesLimit()).isEqualTo(112);
124 assertThat(builder1.hardPendingCompactionBytesLimit()).isEqualTo(280);
125 assertThat(builder1.level0FileNumCompactionTrigger()).isEqualTo(200);
126 assertThat(builder1.level0SlowdownWritesTrigger()).isEqualTo(312);
127 assertThat(builder1.level0StopWritesTrigger()).isEqualTo(584);
128 assertThat(builder1.maxCompactionBytes()).isEqualTo(12);
129 assertThat(builder1.targetFileSizeBase()).isEqualTo(99);
130 assertThat(builder1.targetFileSizeMultiplier()).isEqualTo(112);
131 assertThat(builder1.maxSequentialSkipInIterations()).isEqualTo(50);
132 assertThat(builder1.reportBgIoStats()).isEqualTo(true);
133
134 // Check the getOptions() brings back the creation options for CF2
135 final MutableColumnFamilyOptions.MutableColumnFamilyOptionsBuilder builder2 =
136 db.getOptions(columnFamilyHandle2);
137 assertThat(builder2.enableBlobFiles()).isEqualTo(false);
138 assertThat(builder2.minBlobSize()).isEqualTo(minBlobSize);
139 assertThat(builder2.arenaBlockSize()).isEqualTo(42);
140 assertThat(builder2.memtablePrefixBloomSizeRatio()).isEqualTo(0.236);
141 assertThat(builder2.experimentalMempurgeThreshold()).isEqualTo(0.247);
142 assertThat(builder2.memtableWholeKeyFiltering()).isEqualTo(true);
143 assertThat(builder2.memtableHugePageSize()).isEqualTo(8);
144 assertThat(builder2.maxSuccessiveMerges()).isEqualTo(12);
145 assertThat(builder2.maxWriteBufferNumber()).isEqualTo(22);
146 assertThat(builder2.inplaceUpdateNumLocks()).isEqualTo(160);
147 assertThat(builder2.disableAutoCompactions()).isEqualTo(true);
148 assertThat(builder2.softPendingCompactionBytesLimit()).isEqualTo(1124);
149 assertThat(builder2.hardPendingCompactionBytesLimit()).isEqualTo(2800);
150 assertThat(builder2.level0FileNumCompactionTrigger()).isEqualTo(2000);
151 assertThat(builder2.level0SlowdownWritesTrigger()).isEqualTo(5840);
152 assertThat(builder2.level0StopWritesTrigger()).isEqualTo(31200);
153 assertThat(builder2.maxCompactionBytes()).isEqualTo(112);
154 assertThat(builder2.targetFileSizeBase()).isEqualTo(999);
155 assertThat(builder2.targetFileSizeMultiplier()).isEqualTo(1120);
156 assertThat(builder2.maxSequentialSkipInIterations()).isEqualTo(24);
157 assertThat(builder2.reportBgIoStats()).isEqualTo(true);
158 }
159 }
160 }
161
162 /**
163 * Validate the round-trip of blob options into and out of the C++ core of RocksDB
164 * From {RocksDB#setOptions} to {RocksDB#getOptions}
165 * Uses 2x column families with different values for their options.
166 * NOTE that some constraints are applied to the options in the C++ core,
167 * e.g. on {ColumnFamilyOptions#setMemtablePrefixBloomSizeRatio}
168 *
169 * @throws RocksDBException if a database access has an error
170 */
171 @Test
172 public void testGetMutableBlobOptionsAfterSetCF() throws RocksDBException {
173 final ColumnFamilyOptions columnFamilyOptions0 = new ColumnFamilyOptions();
174 final ColumnFamilyDescriptor columnFamilyDescriptor0 =
175 new ColumnFamilyDescriptor("default".getBytes(UTF_8), columnFamilyOptions0);
176 final List<ColumnFamilyDescriptor> columnFamilyDescriptors =
177 Collections.singletonList(columnFamilyDescriptor0);
178 final List<ColumnFamilyHandle> columnFamilyHandles = new ArrayList<>();
179
180 try (final DBOptions dbOptions = new DBOptions().setCreateIfMissing(true);
181 final RocksDB db = RocksDB.open(dbOptions, dbFolder.getRoot().getAbsolutePath(),
182 columnFamilyDescriptors, columnFamilyHandles)) {
183 try (final ColumnFamilyOptions columnFamilyOptions1 = new ColumnFamilyOptions();
184
185 final ColumnFamilyOptions columnFamilyOptions2 = new ColumnFamilyOptions()) {
186 final ColumnFamilyDescriptor columnFamilyDescriptor1 =
187 new ColumnFamilyDescriptor("column_family_1".getBytes(UTF_8), columnFamilyOptions1);
188 final ColumnFamilyDescriptor columnFamilyDescriptor2 =
189 new ColumnFamilyDescriptor("column_family_2".getBytes(UTF_8), columnFamilyOptions2);
190
191 // Create the column family with blob options
192 final ColumnFamilyHandle columnFamilyHandle1 =
193 db.createColumnFamily(columnFamilyDescriptor1);
194 final ColumnFamilyHandle columnFamilyHandle2 =
195 db.createColumnFamily(columnFamilyDescriptor2);
196 db.flush(new FlushOptions().setWaitForFlush(true));
197
198 final MutableColumnFamilyOptions
199 .MutableColumnFamilyOptionsBuilder mutableColumnFamilyOptions1 =
200 MutableColumnFamilyOptions.builder()
201 .setMinBlobSize(minBlobSize)
202 .setEnableBlobFiles(true)
203 .setBlobGarbageCollectionAgeCutoff(0.25)
204 .setBlobGarbageCollectionForceThreshold(0.80)
205 .setBlobCompactionReadaheadSize(262144)
206 .setBlobFileStartingLevel(3)
207 .setArenaBlockSize(42)
208 .setMemtablePrefixBloomSizeRatio(0.17)
209 .setExperimentalMempurgeThreshold(0.005)
210 .setMemtableWholeKeyFiltering(false)
211 .setMemtableHugePageSize(3)
212 .setMaxSuccessiveMerges(4)
213 .setMaxWriteBufferNumber(12)
214 .setInplaceUpdateNumLocks(16)
215 .setDisableAutoCompactions(false)
216 .setSoftPendingCompactionBytesLimit(112)
217 .setHardPendingCompactionBytesLimit(280)
218 .setLevel0FileNumCompactionTrigger(200)
219 .setLevel0SlowdownWritesTrigger(312)
220 .setLevel0StopWritesTrigger(584)
221 .setMaxCompactionBytes(12)
222 .setTargetFileSizeBase(99)
223 .setTargetFileSizeMultiplier(112);
224 db.setOptions(columnFamilyHandle1, mutableColumnFamilyOptions1.build());
225
226 // Check the getOptions() brings back the creation options for CF1
227 final MutableColumnFamilyOptions.MutableColumnFamilyOptionsBuilder builder1 =
228 db.getOptions(columnFamilyHandle1);
229 assertThat(builder1.enableBlobFiles()).isEqualTo(true);
230 assertThat(builder1.blobGarbageCollectionAgeCutoff()).isEqualTo(0.25);
231 assertThat(builder1.blobGarbageCollectionForceThreshold()).isEqualTo(0.80);
232 assertThat(builder1.blobCompactionReadaheadSize()).isEqualTo(262144);
233 assertThat(builder1.blobFileStartingLevel()).isEqualTo(3);
234 assertThat(builder1.minBlobSize()).isEqualTo(minBlobSize);
235 assertThat(builder1.arenaBlockSize()).isEqualTo(42);
236 assertThat(builder1.memtablePrefixBloomSizeRatio()).isEqualTo(0.17);
237 assertThat(builder1.experimentalMempurgeThreshold()).isEqualTo(0.005);
238 assertThat(builder1.memtableWholeKeyFiltering()).isEqualTo(false);
239 assertThat(builder1.memtableHugePageSize()).isEqualTo(3);
240 assertThat(builder1.maxSuccessiveMerges()).isEqualTo(4);
241 assertThat(builder1.maxWriteBufferNumber()).isEqualTo(12);
242 assertThat(builder1.inplaceUpdateNumLocks()).isEqualTo(16);
243 assertThat(builder1.disableAutoCompactions()).isEqualTo(false);
244 assertThat(builder1.softPendingCompactionBytesLimit()).isEqualTo(112);
245 assertThat(builder1.hardPendingCompactionBytesLimit()).isEqualTo(280);
246 assertThat(builder1.level0FileNumCompactionTrigger()).isEqualTo(200);
247 assertThat(builder1.level0SlowdownWritesTrigger()).isEqualTo(312);
248 assertThat(builder1.level0StopWritesTrigger()).isEqualTo(584);
249 assertThat(builder1.maxCompactionBytes()).isEqualTo(12);
250 assertThat(builder1.targetFileSizeBase()).isEqualTo(99);
251 assertThat(builder1.targetFileSizeMultiplier()).isEqualTo(112);
252
253 final MutableColumnFamilyOptions
254 .MutableColumnFamilyOptionsBuilder mutableColumnFamilyOptions2 =
255 MutableColumnFamilyOptions.builder()
256 .setMinBlobSize(minBlobSize)
257 .setEnableBlobFiles(false)
258 .setArenaBlockSize(42)
259 .setMemtablePrefixBloomSizeRatio(0.236)
260 .setExperimentalMempurgeThreshold(0.247)
261 .setMemtableWholeKeyFiltering(true)
262 .setMemtableHugePageSize(8)
263 .setMaxSuccessiveMerges(12)
264 .setMaxWriteBufferNumber(22)
265 .setInplaceUpdateNumLocks(160)
266 .setDisableAutoCompactions(true)
267 .setSoftPendingCompactionBytesLimit(1124)
268 .setHardPendingCompactionBytesLimit(2800)
269 .setLevel0FileNumCompactionTrigger(2000)
270 .setLevel0SlowdownWritesTrigger(5840)
271 .setLevel0StopWritesTrigger(31200)
272 .setMaxCompactionBytes(112)
273 .setTargetFileSizeBase(999)
274 .setTargetFileSizeMultiplier(1120);
275 db.setOptions(columnFamilyHandle2, mutableColumnFamilyOptions2.build());
276
277 // Check the getOptions() brings back the creation options for CF2
278 final MutableColumnFamilyOptions.MutableColumnFamilyOptionsBuilder builder2 =
279 db.getOptions(columnFamilyHandle2);
280 assertThat(builder2.enableBlobFiles()).isEqualTo(false);
281 assertThat(builder2.minBlobSize()).isEqualTo(minBlobSize);
282 assertThat(builder2.arenaBlockSize()).isEqualTo(42);
283 assertThat(builder2.memtablePrefixBloomSizeRatio()).isEqualTo(0.236);
284 assertThat(builder2.experimentalMempurgeThreshold()).isEqualTo(0.247);
285 assertThat(builder2.memtableWholeKeyFiltering()).isEqualTo(true);
286 assertThat(builder2.memtableHugePageSize()).isEqualTo(8);
287 assertThat(builder2.maxSuccessiveMerges()).isEqualTo(12);
288 assertThat(builder2.maxWriteBufferNumber()).isEqualTo(22);
289 assertThat(builder2.inplaceUpdateNumLocks()).isEqualTo(160);
290 assertThat(builder2.disableAutoCompactions()).isEqualTo(true);
291 assertThat(builder2.softPendingCompactionBytesLimit()).isEqualTo(1124);
292 assertThat(builder2.hardPendingCompactionBytesLimit()).isEqualTo(2800);
293 assertThat(builder2.level0FileNumCompactionTrigger()).isEqualTo(2000);
294 assertThat(builder2.level0SlowdownWritesTrigger()).isEqualTo(5840);
295 assertThat(builder2.level0StopWritesTrigger()).isEqualTo(31200);
296 assertThat(builder2.maxCompactionBytes()).isEqualTo(112);
297 assertThat(builder2.targetFileSizeBase()).isEqualTo(999);
298 assertThat(builder2.targetFileSizeMultiplier()).isEqualTo(1120);
299 }
300 }
301 }
302
303 /**
304 * Validate the round-trip of blob options into and out of the C++ core of RocksDB
305 * From {RocksDB#setOptions} to {RocksDB#getOptions}
306 * Uses 2x column families with different values for their options.
307 * NOTE that some constraints are applied to the options in the C++ core,
308 * e.g. on {ColumnFamilyOptions#setMemtablePrefixBloomSizeRatio}
309 *
310 * @throws RocksDBException if a database access has an error
311 */
312 @Test
313 public void testGetMutableBlobOptionsAfterSet() throws RocksDBException {
314 final ColumnFamilyOptions columnFamilyOptions0 = new ColumnFamilyOptions();
315 final ColumnFamilyDescriptor columnFamilyDescriptor0 =
316 new ColumnFamilyDescriptor("default".getBytes(UTF_8), columnFamilyOptions0);
317 final List<ColumnFamilyDescriptor> columnFamilyDescriptors =
318 Collections.singletonList(columnFamilyDescriptor0);
319 final List<ColumnFamilyHandle> columnFamilyHandles = new ArrayList<>();
320
321 try (final DBOptions dbOptions = new DBOptions().setCreateIfMissing(true);
322 final RocksDB db = RocksDB.open(dbOptions, dbFolder.getRoot().getAbsolutePath(),
323 columnFamilyDescriptors, columnFamilyHandles)) {
324 final MutableColumnFamilyOptions
325 .MutableColumnFamilyOptionsBuilder mutableColumnFamilyOptions =
326 MutableColumnFamilyOptions.builder()
327 .setMinBlobSize(minBlobSize)
328 .setEnableBlobFiles(true)
329 .setBlobGarbageCollectionAgeCutoff(0.25)
330 .setBlobGarbageCollectionForceThreshold(0.80)
331 .setBlobCompactionReadaheadSize(131072)
332 .setBlobFileStartingLevel(4)
333 .setArenaBlockSize(42)
334 .setMemtablePrefixBloomSizeRatio(0.17)
335 .setExperimentalMempurgeThreshold(0.005)
336 .setMemtableWholeKeyFiltering(false)
337 .setMemtableHugePageSize(3)
338 .setMaxSuccessiveMerges(4)
339 .setMaxWriteBufferNumber(12)
340 .setInplaceUpdateNumLocks(16)
341 .setDisableAutoCompactions(false)
342 .setSoftPendingCompactionBytesLimit(112)
343 .setHardPendingCompactionBytesLimit(280)
344 .setLevel0FileNumCompactionTrigger(200)
345 .setLevel0SlowdownWritesTrigger(312)
346 .setLevel0StopWritesTrigger(584)
347 .setMaxCompactionBytes(12)
348 .setTargetFileSizeBase(99)
349 .setTargetFileSizeMultiplier(112);
350 db.setOptions(mutableColumnFamilyOptions.build());
351
352 // Check the getOptions() brings back the creation options for CF1
353 final MutableColumnFamilyOptions.MutableColumnFamilyOptionsBuilder builder1 = db.getOptions();
354 assertThat(builder1.enableBlobFiles()).isEqualTo(true);
355 assertThat(builder1.blobGarbageCollectionAgeCutoff()).isEqualTo(0.25);
356 assertThat(builder1.blobGarbageCollectionForceThreshold()).isEqualTo(0.80);
357 assertThat(builder1.blobCompactionReadaheadSize()).isEqualTo(131072);
358 assertThat(builder1.blobFileStartingLevel()).isEqualTo(4);
359 assertThat(builder1.minBlobSize()).isEqualTo(minBlobSize);
360 assertThat(builder1.arenaBlockSize()).isEqualTo(42);
361 assertThat(builder1.memtablePrefixBloomSizeRatio()).isEqualTo(0.17);
362 assertThat(builder1.experimentalMempurgeThreshold()).isEqualTo(0.005);
363 assertThat(builder1.memtableWholeKeyFiltering()).isEqualTo(false);
364 assertThat(builder1.memtableHugePageSize()).isEqualTo(3);
365 assertThat(builder1.maxSuccessiveMerges()).isEqualTo(4);
366 assertThat(builder1.maxWriteBufferNumber()).isEqualTo(12);
367 assertThat(builder1.inplaceUpdateNumLocks()).isEqualTo(16);
368 assertThat(builder1.disableAutoCompactions()).isEqualTo(false);
369 assertThat(builder1.softPendingCompactionBytesLimit()).isEqualTo(112);
370 assertThat(builder1.hardPendingCompactionBytesLimit()).isEqualTo(280);
371 assertThat(builder1.level0FileNumCompactionTrigger()).isEqualTo(200);
372 assertThat(builder1.level0SlowdownWritesTrigger()).isEqualTo(312);
373 assertThat(builder1.level0StopWritesTrigger()).isEqualTo(584);
374 assertThat(builder1.maxCompactionBytes()).isEqualTo(12);
375 assertThat(builder1.targetFileSizeBase()).isEqualTo(99);
376 assertThat(builder1.targetFileSizeMultiplier()).isEqualTo(112);
377 }
378 }
379
380 @Test
381 public void testGetMutableDBOptionsAfterSet() throws RocksDBException {
382 final ColumnFamilyOptions columnFamilyOptions0 = new ColumnFamilyOptions();
383 final ColumnFamilyDescriptor columnFamilyDescriptor0 =
384 new ColumnFamilyDescriptor("default".getBytes(UTF_8), columnFamilyOptions0);
385 final List<ColumnFamilyDescriptor> columnFamilyDescriptors =
386 Collections.singletonList(columnFamilyDescriptor0);
387 final List<ColumnFamilyHandle> columnFamilyHandles = new ArrayList<>();
388
389 try (final DBOptions dbOptions = new DBOptions().setCreateIfMissing(true);
390 final RocksDB db = RocksDB.open(dbOptions, dbFolder.getRoot().getAbsolutePath(),
391 columnFamilyDescriptors, columnFamilyHandles)) {
392 final MutableDBOptions.MutableDBOptionsBuilder mutableDBOptions =
393 MutableDBOptions.builder()
394 .setMaxBackgroundJobs(16)
395 .setAvoidFlushDuringShutdown(true)
396 .setWritableFileMaxBufferSize(2097152)
397 .setDelayedWriteRate(67108864)
398 .setMaxTotalWalSize(16777216)
399 .setDeleteObsoleteFilesPeriodMicros(86400000000L)
400 .setStatsDumpPeriodSec(1200)
401 .setStatsPersistPeriodSec(7200)
402 .setStatsHistoryBufferSize(6291456)
403 .setMaxOpenFiles(8)
404 .setBytesPerSync(4194304)
405 .setWalBytesPerSync(1048576)
406 .setStrictBytesPerSync(true)
407 .setCompactionReadaheadSize(1024);
408
409 db.setDBOptions(mutableDBOptions.build());
410
411 final MutableDBOptions.MutableDBOptionsBuilder getBuilder = db.getDBOptions();
412 assertThat(getBuilder.maxBackgroundJobs()).isEqualTo(16); // 4
413 assertThat(getBuilder.avoidFlushDuringShutdown()).isEqualTo(true); // false
414 assertThat(getBuilder.writableFileMaxBufferSize()).isEqualTo(2097152); // 1048576
415 assertThat(getBuilder.delayedWriteRate()).isEqualTo(67108864); // 16777216
416 assertThat(getBuilder.maxTotalWalSize()).isEqualTo(16777216);
417 assertThat(getBuilder.deleteObsoleteFilesPeriodMicros())
418 .isEqualTo(86400000000L); // 21600000000
419 assertThat(getBuilder.statsDumpPeriodSec()).isEqualTo(1200); // 600
420 assertThat(getBuilder.statsPersistPeriodSec()).isEqualTo(7200); // 600
421 assertThat(getBuilder.statsHistoryBufferSize()).isEqualTo(6291456); // 1048576
422 assertThat(getBuilder.maxOpenFiles()).isEqualTo(8); //-1
423 assertThat(getBuilder.bytesPerSync()).isEqualTo(4194304); // 1048576
424 assertThat(getBuilder.walBytesPerSync()).isEqualTo(1048576); // 0
425 assertThat(getBuilder.strictBytesPerSync()).isEqualTo(true); // false
426 assertThat(getBuilder.compactionReadaheadSize()).isEqualTo(1024); // 0
427 }
428 }
429}