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 static org.assertj.core.api.Assertions.assertThat; 12 13 public class MemTableTest { 14 15 @ClassRule 16 public static final RocksNativeLibraryResource ROCKS_NATIVE_LIBRARY_RESOURCE = 17 new RocksNativeLibraryResource(); 18 19 @Test hashSkipListMemTable()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()). 26 isEqualTo(1000000); 27 memTableConfig.setBucketCount(2000000); 28 assertThat(memTableConfig.bucketCount()). 29 isEqualTo(2000000); 30 assertThat(memTableConfig.height()). 31 isEqualTo(4); 32 memTableConfig.setHeight(5); 33 assertThat(memTableConfig.height()). 34 isEqualTo(5); 35 assertThat(memTableConfig.branchingFactor()). 36 isEqualTo(4); 37 memTableConfig.setBranchingFactor(6); 38 assertThat(memTableConfig.branchingFactor()). 39 isEqualTo(6); 40 options.setMemTableConfig(memTableConfig); 41 } 42 } 43 44 @Test skipListMemTable()45 public void skipListMemTable() throws RocksDBException { 46 try(final Options options = new Options()) { 47 SkipListMemTableConfig skipMemTableConfig = 48 new SkipListMemTableConfig(); 49 assertThat(skipMemTableConfig.lookahead()). 50 isEqualTo(0); 51 skipMemTableConfig.setLookahead(20); 52 assertThat(skipMemTableConfig.lookahead()). 53 isEqualTo(20); 54 options.setMemTableConfig(skipMemTableConfig); 55 } 56 } 57 58 @Test hashLinkedListMemTable()59 public void hashLinkedListMemTable() throws RocksDBException { 60 try(final Options options = new Options()) { 61 HashLinkedListMemTableConfig hashLinkedListMemTableConfig = 62 new HashLinkedListMemTableConfig(); 63 assertThat(hashLinkedListMemTableConfig.bucketCount()). 64 isEqualTo(50000); 65 hashLinkedListMemTableConfig.setBucketCount(100000); 66 assertThat(hashLinkedListMemTableConfig.bucketCount()). 67 isEqualTo(100000); 68 assertThat(hashLinkedListMemTableConfig.hugePageTlbSize()). 69 isEqualTo(0); 70 hashLinkedListMemTableConfig.setHugePageTlbSize(1); 71 assertThat(hashLinkedListMemTableConfig.hugePageTlbSize()). 72 isEqualTo(1); 73 assertThat(hashLinkedListMemTableConfig. 74 bucketEntriesLoggingThreshold()). 75 isEqualTo(4096); 76 hashLinkedListMemTableConfig. 77 setBucketEntriesLoggingThreshold(200); 78 assertThat(hashLinkedListMemTableConfig. 79 bucketEntriesLoggingThreshold()). 80 isEqualTo(200); 81 assertThat(hashLinkedListMemTableConfig. 82 ifLogBucketDistWhenFlush()).isTrue(); 83 hashLinkedListMemTableConfig. 84 setIfLogBucketDistWhenFlush(false); 85 assertThat(hashLinkedListMemTableConfig. 86 ifLogBucketDistWhenFlush()).isFalse(); 87 assertThat(hashLinkedListMemTableConfig. 88 thresholdUseSkiplist()). 89 isEqualTo(256); 90 hashLinkedListMemTableConfig.setThresholdUseSkiplist(29); 91 assertThat(hashLinkedListMemTableConfig. 92 thresholdUseSkiplist()). 93 isEqualTo(29); 94 options.setMemTableConfig(hashLinkedListMemTableConfig); 95 } 96 } 97 98 @Test vectorMemTable()99 public void vectorMemTable() throws RocksDBException { 100 try(final Options options = new Options()) { 101 VectorMemTableConfig vectorMemTableConfig = 102 new VectorMemTableConfig(); 103 assertThat(vectorMemTableConfig.reservedSize()). 104 isEqualTo(0); 105 vectorMemTableConfig.setReservedSize(123); 106 assertThat(vectorMemTableConfig.reservedSize()). 107 isEqualTo(123); 108 options.setMemTableConfig(vectorMemTableConfig); 109 } 110 } 111 } 112