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).
8 import org
.junit
.ClassRule
;
11 import static org
.assertj
.core
.api
.Assertions
.assertThat
;
13 public class MemTableTest
{
16 public static final RocksNativeLibraryResource ROCKS_NATIVE_LIBRARY_RESOURCE
=
17 new RocksNativeLibraryResource();
20 public void hashSkipListMemTable() throws RocksDBException
{
21 try(final Options options
= new Options()) {
22 // Test HashSkipListMemTableConfig
23 HashSkipListMemTableConfig memTableConfig
=
24 new HashSkipListMemTableConfig();
25 assertThat(memTableConfig
.bucketCount()).
27 memTableConfig
.setBucketCount(2000000);
28 assertThat(memTableConfig
.bucketCount()).
30 assertThat(memTableConfig
.height()).
32 memTableConfig
.setHeight(5);
33 assertThat(memTableConfig
.height()).
35 assertThat(memTableConfig
.branchingFactor()).
37 memTableConfig
.setBranchingFactor(6);
38 assertThat(memTableConfig
.branchingFactor()).
40 options
.setMemTableConfig(memTableConfig
);
45 public void skipListMemTable() throws RocksDBException
{
46 try(final Options options
= new Options()) {
47 SkipListMemTableConfig skipMemTableConfig
=
48 new SkipListMemTableConfig();
49 assertThat(skipMemTableConfig
.lookahead()).
51 skipMemTableConfig
.setLookahead(20);
52 assertThat(skipMemTableConfig
.lookahead()).
54 options
.setMemTableConfig(skipMemTableConfig
);
59 public void hashLinkedListMemTable() throws RocksDBException
{
60 try(final Options options
= new Options()) {
61 HashLinkedListMemTableConfig hashLinkedListMemTableConfig
=
62 new HashLinkedListMemTableConfig();
63 assertThat(hashLinkedListMemTableConfig
.bucketCount()).
65 hashLinkedListMemTableConfig
.setBucketCount(100000);
66 assertThat(hashLinkedListMemTableConfig
.bucketCount()).
68 assertThat(hashLinkedListMemTableConfig
.hugePageTlbSize()).
70 hashLinkedListMemTableConfig
.setHugePageTlbSize(1);
71 assertThat(hashLinkedListMemTableConfig
.hugePageTlbSize()).
73 assertThat(hashLinkedListMemTableConfig
.
74 bucketEntriesLoggingThreshold()).
76 hashLinkedListMemTableConfig
.
77 setBucketEntriesLoggingThreshold(200);
78 assertThat(hashLinkedListMemTableConfig
.
79 bucketEntriesLoggingThreshold()).
81 assertThat(hashLinkedListMemTableConfig
.
82 ifLogBucketDistWhenFlush()).isTrue();
83 hashLinkedListMemTableConfig
.
84 setIfLogBucketDistWhenFlush(false);
85 assertThat(hashLinkedListMemTableConfig
.
86 ifLogBucketDistWhenFlush()).isFalse();
87 assertThat(hashLinkedListMemTableConfig
.
88 thresholdUseSkiplist()).
90 hashLinkedListMemTableConfig
.setThresholdUseSkiplist(29);
91 assertThat(hashLinkedListMemTableConfig
.
92 thresholdUseSkiplist()).
94 options
.setMemTableConfig(hashLinkedListMemTableConfig
);
99 public void vectorMemTable() throws RocksDBException
{
100 try(final Options options
= new Options()) {
101 VectorMemTableConfig vectorMemTableConfig
=
102 new VectorMemTableConfig();
103 assertThat(vectorMemTableConfig
.reservedSize()).
105 vectorMemTableConfig
.setReservedSize(123);
106 assertThat(vectorMemTableConfig
.reservedSize()).
108 options
.setMemTableConfig(vectorMemTableConfig
);