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.Rule; 10 import org.junit.Test; 11 import org.junit.rules.TemporaryFolder; 12 13 import java.util.Collection; 14 import java.util.List; 15 16 import static org.assertj.core.api.Assertions.assertThat; 17 18 public class DefaultEnvTest { 19 20 @ClassRule 21 public static final RocksNativeLibraryResource ROCKS_NATIVE_LIBRARY_RESOURCE = 22 new RocksNativeLibraryResource(); 23 24 @Rule 25 public TemporaryFolder dbFolder = new TemporaryFolder(); 26 27 @Test 28 public void backgroundThreads() { 29 try (final Env defaultEnv = RocksEnv.getDefault()) { 30 defaultEnv.setBackgroundThreads(5, Priority.BOTTOM); 31 assertThat(defaultEnv.getBackgroundThreads(Priority.BOTTOM)).isEqualTo(5); 32 33 defaultEnv.setBackgroundThreads(5); 34 assertThat(defaultEnv.getBackgroundThreads(Priority.LOW)).isEqualTo(5); 35 36 defaultEnv.setBackgroundThreads(5, Priority.LOW); 37 assertThat(defaultEnv.getBackgroundThreads(Priority.LOW)).isEqualTo(5); 38 39 defaultEnv.setBackgroundThreads(5, Priority.HIGH); 40 assertThat(defaultEnv.getBackgroundThreads(Priority.HIGH)).isEqualTo(5); 41 } 42 } 43 44 @Test 45 public void threadPoolQueueLen() { 46 try (final Env defaultEnv = RocksEnv.getDefault()) { 47 assertThat(defaultEnv.getThreadPoolQueueLen(Priority.BOTTOM)).isEqualTo(0); 48 assertThat(defaultEnv.getThreadPoolQueueLen(Priority.LOW)).isEqualTo(0); 49 assertThat(defaultEnv.getThreadPoolQueueLen(Priority.HIGH)).isEqualTo(0); 50 } 51 } 52 53 @Test 54 public void incBackgroundThreadsIfNeeded() { 55 try (final Env defaultEnv = RocksEnv.getDefault()) { 56 defaultEnv.incBackgroundThreadsIfNeeded(20, Priority.BOTTOM); 57 assertThat(defaultEnv.getBackgroundThreads(Priority.BOTTOM)).isGreaterThanOrEqualTo(20); 58 59 defaultEnv.incBackgroundThreadsIfNeeded(20, Priority.LOW); 60 assertThat(defaultEnv.getBackgroundThreads(Priority.LOW)).isGreaterThanOrEqualTo(20); 61 62 defaultEnv.incBackgroundThreadsIfNeeded(20, Priority.HIGH); 63 assertThat(defaultEnv.getBackgroundThreads(Priority.HIGH)).isGreaterThanOrEqualTo(20); 64 } 65 } 66 67 @Test 68 public void lowerThreadPoolIOPriority() { 69 try (final Env defaultEnv = RocksEnv.getDefault()) { 70 defaultEnv.lowerThreadPoolIOPriority(Priority.BOTTOM); 71 72 defaultEnv.lowerThreadPoolIOPriority(Priority.LOW); 73 74 defaultEnv.lowerThreadPoolIOPriority(Priority.HIGH); 75 } 76 } 77 78 @Test 79 public void lowerThreadPoolCPUPriority() { 80 try (final Env defaultEnv = RocksEnv.getDefault()) { 81 defaultEnv.lowerThreadPoolCPUPriority(Priority.BOTTOM); 82 83 defaultEnv.lowerThreadPoolCPUPriority(Priority.LOW); 84 85 defaultEnv.lowerThreadPoolCPUPriority(Priority.HIGH); 86 } 87 } 88 89 @Test 90 public void threadList() throws RocksDBException { 91 try (final Env defaultEnv = RocksEnv.getDefault()) { 92 final Collection<ThreadStatus> threadList = defaultEnv.getThreadList(); 93 assertThat(threadList.size()).isGreaterThan(0); 94 } 95 } 96 97 @Test 98 public void threadList_integration() throws RocksDBException { 99 try (final Env env = RocksEnv.getDefault(); 100 final Options opt = new Options() 101 .setCreateIfMissing(true) 102 .setCreateMissingColumnFamilies(true) 103 .setEnv(env)) { 104 // open database 105 try (final RocksDB db = RocksDB.open(opt, 106 dbFolder.getRoot().getAbsolutePath())) { 107 108 final List<ThreadStatus> threadList = env.getThreadList(); 109 assertThat(threadList.size()).isGreaterThan(0); 110 } 111 } 112 } 113 } 114