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.MutableColumnFamilyOptions.MutableColumnFamilyOptionsBuilder;
9 
10 import java.util.NoSuchElementException;
11 
12 import static org.assertj.core.api.Assertions.assertThat;
13 
14 public class MutableColumnFamilyOptionsTest {
15 
16   @Test
builder()17   public void builder() {
18     final MutableColumnFamilyOptionsBuilder builder =
19         MutableColumnFamilyOptions.builder();
20         builder
21             .setWriteBufferSize(10)
22             .setInplaceUpdateNumLocks(5)
23             .setDisableAutoCompactions(true)
24             .setParanoidFileChecks(true);
25 
26     assertThat(builder.writeBufferSize()).isEqualTo(10);
27     assertThat(builder.inplaceUpdateNumLocks()).isEqualTo(5);
28     assertThat(builder.disableAutoCompactions()).isEqualTo(true);
29     assertThat(builder.paranoidFileChecks()).isEqualTo(true);
30   }
31 
32   @Test(expected = NoSuchElementException.class)
builder_getWhenNotSet()33   public void builder_getWhenNotSet() {
34     final MutableColumnFamilyOptionsBuilder builder =
35         MutableColumnFamilyOptions.builder();
36 
37     builder.writeBufferSize();
38   }
39 
40   @Test
builder_build()41   public void builder_build() {
42     final MutableColumnFamilyOptions options = MutableColumnFamilyOptions
43         .builder()
44           .setWriteBufferSize(10)
45           .setParanoidFileChecks(true)
46           .build();
47 
48     assertThat(options.getKeys().length).isEqualTo(2);
49     assertThat(options.getValues().length).isEqualTo(2);
50     assertThat(options.getKeys()[0])
51         .isEqualTo(
52             MutableColumnFamilyOptions.MemtableOption.write_buffer_size.name());
53     assertThat(options.getValues()[0]).isEqualTo("10");
54     assertThat(options.getKeys()[1])
55         .isEqualTo(
56             MutableColumnFamilyOptions.MiscOption.paranoid_file_checks.name());
57     assertThat(options.getValues()[1]).isEqualTo("true");
58   }
59 
60   @Test
mutableColumnFamilyOptions_toString()61   public void mutableColumnFamilyOptions_toString() {
62     final String str = MutableColumnFamilyOptions
63         .builder()
64         .setWriteBufferSize(10)
65         .setInplaceUpdateNumLocks(5)
66         .setDisableAutoCompactions(true)
67         .setParanoidFileChecks(true)
68         .build()
69         .toString();
70 
71     assertThat(str).isEqualTo("write_buffer_size=10;inplace_update_num_locks=5;"
72         + "disable_auto_compactions=true;paranoid_file_checks=true");
73   }
74 
75   @Test
mutableColumnFamilyOptions_parse()76   public void mutableColumnFamilyOptions_parse() {
77     final String str = "write_buffer_size=10;inplace_update_num_locks=5;"
78         + "disable_auto_compactions=true;paranoid_file_checks=true";
79 
80     final MutableColumnFamilyOptionsBuilder builder =
81         MutableColumnFamilyOptions.parse(str);
82 
83     assertThat(builder.writeBufferSize()).isEqualTo(10);
84     assertThat(builder.inplaceUpdateNumLocks()).isEqualTo(5);
85     assertThat(builder.disableAutoCompactions()).isEqualTo(true);
86     assertThat(builder.paranoidFileChecks()).isEqualTo(true);
87   }
88 }
89