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 package org.rocksdb;
6 
7 import org.junit.Test;
8 import org.rocksdb.MutableDBOptions.MutableDBOptionsBuilder;
9 
10 import java.util.NoSuchElementException;
11 
12 import static org.assertj.core.api.Assertions.assertThat;
13 
14 public class MutableDBOptionsTest {
15 
16   @Test
builder()17   public void builder() {
18     final MutableDBOptionsBuilder builder =
19         MutableDBOptions.builder();
20         builder
21             .setBytesPerSync(1024 * 1024 * 7)
22             .setMaxBackgroundJobs(5)
23             .setAvoidFlushDuringShutdown(false);
24 
25     assertThat(builder.bytesPerSync()).isEqualTo(1024 * 1024 * 7);
26     assertThat(builder.maxBackgroundJobs()).isEqualTo(5);
27     assertThat(builder.avoidFlushDuringShutdown()).isEqualTo(false);
28   }
29 
30   @Test(expected = NoSuchElementException.class)
builder_getWhenNotSet()31   public void builder_getWhenNotSet() {
32     final MutableDBOptionsBuilder builder =
33         MutableDBOptions.builder();
34 
35     builder.bytesPerSync();
36   }
37 
38   @Test
builder_build()39   public void builder_build() {
40     final MutableDBOptions options = MutableDBOptions
41         .builder()
42           .setBytesPerSync(1024 * 1024 * 7)
43           .setMaxBackgroundJobs(5)
44           .build();
45 
46     assertThat(options.getKeys().length).isEqualTo(2);
47     assertThat(options.getValues().length).isEqualTo(2);
48     assertThat(options.getKeys()[0])
49         .isEqualTo(
50             MutableDBOptions.DBOption.bytes_per_sync.name());
51     assertThat(options.getValues()[0]).isEqualTo("7340032");
52     assertThat(options.getKeys()[1])
53         .isEqualTo(
54             MutableDBOptions.DBOption.max_background_jobs.name());
55     assertThat(options.getValues()[1]).isEqualTo("5");
56   }
57 
58   @Test
mutableDBOptions_toString()59   public void mutableDBOptions_toString() {
60     final String str = MutableDBOptions
61         .builder()
62         .setMaxOpenFiles(99)
63         .setDelayedWriteRate(789)
64         .setAvoidFlushDuringShutdown(true)
65         .setStrictBytesPerSync(true)
66         .build()
67         .toString();
68 
69     assertThat(str).isEqualTo("max_open_files=99;delayed_write_rate=789;"
70         + "avoid_flush_during_shutdown=true;strict_bytes_per_sync=true");
71   }
72 
73   @Test
mutableDBOptions_parse()74   public void mutableDBOptions_parse() {
75     final String str = "max_open_files=99;delayed_write_rate=789;"
76         + "avoid_flush_during_shutdown=true";
77 
78     final MutableDBOptionsBuilder builder =
79         MutableDBOptions.parse(str);
80 
81     assertThat(builder.maxOpenFiles()).isEqualTo(99);
82     assertThat(builder.delayedWriteRate()).isEqualTo(789);
83     assertThat(builder.avoidFlushDuringShutdown()).isEqualTo(true);
84   }
85 }
86