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.ClassRule;
8 import org.junit.Test;
9 
10 import static org.assertj.core.api.Assertions.assertThat;
11 import static org.rocksdb.RateLimiter.*;
12 
13 public class RateLimiterTest {
14 
15   @ClassRule
16   public static final RocksNativeLibraryResource ROCKS_NATIVE_LIBRARY_RESOURCE =
17       new RocksNativeLibraryResource();
18 
19   @Test
bytesPerSecond()20   public void bytesPerSecond() {
21     try(final RateLimiter rateLimiter =
22             new RateLimiter(1000, DEFAULT_REFILL_PERIOD_MICROS,
23                 DEFAULT_FAIRNESS, DEFAULT_MODE, DEFAULT_AUTOTUNE)) {
24       assertThat(rateLimiter.getBytesPerSecond()).isGreaterThan(0);
25       rateLimiter.setBytesPerSecond(2000);
26       assertThat(rateLimiter.getBytesPerSecond()).isGreaterThan(0);
27     }
28   }
29 
30   @Test
getSingleBurstBytes()31   public void getSingleBurstBytes() {
32     try(final RateLimiter rateLimiter =
33             new RateLimiter(1000, DEFAULT_REFILL_PERIOD_MICROS,
34                 DEFAULT_FAIRNESS, DEFAULT_MODE, DEFAULT_AUTOTUNE)) {
35       assertThat(rateLimiter.getSingleBurstBytes()).isEqualTo(100);
36     }
37   }
38 
39   @Test
getTotalBytesThrough()40   public void getTotalBytesThrough() {
41     try(final RateLimiter rateLimiter =
42             new RateLimiter(1000, DEFAULT_REFILL_PERIOD_MICROS,
43                 DEFAULT_FAIRNESS, DEFAULT_MODE, DEFAULT_AUTOTUNE)) {
44       assertThat(rateLimiter.getTotalBytesThrough()).isEqualTo(0);
45     }
46   }
47 
48   @Test
getTotalRequests()49   public void getTotalRequests() {
50     try(final RateLimiter rateLimiter =
51             new RateLimiter(1000, DEFAULT_REFILL_PERIOD_MICROS,
52                 DEFAULT_FAIRNESS, DEFAULT_MODE, DEFAULT_AUTOTUNE)) {
53       assertThat(rateLimiter.getTotalRequests()).isEqualTo(0);
54     }
55   }
56 
57   @Test
autoTune()58   public void autoTune() {
59     try(final RateLimiter rateLimiter =
60             new RateLimiter(1000, DEFAULT_REFILL_PERIOD_MICROS,
61                 DEFAULT_FAIRNESS, DEFAULT_MODE, true)) {
62       assertThat(rateLimiter.getBytesPerSecond()).isGreaterThan(0);
63     }
64   }
65 }
66