]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/rocksdb/java/src/test/java/org/rocksdb/StatisticsTest.java
update sources to ceph Nautilus 14.2.1
[ceph.git] / ceph / src / rocksdb / java / src / test / java / org / rocksdb / StatisticsTest.java
diff --git a/ceph/src/rocksdb/java/src/test/java/org/rocksdb/StatisticsTest.java b/ceph/src/rocksdb/java/src/test/java/org/rocksdb/StatisticsTest.java
new file mode 100644 (file)
index 0000000..2103c2f
--- /dev/null
@@ -0,0 +1,160 @@
+// Copyright (c) 2011-present, Facebook, Inc.  All rights reserved.
+//  This source code is licensed under both the GPLv2 (found in the
+//  COPYING file in the root directory) and Apache 2.0 License
+//  (found in the LICENSE.Apache file in the root directory).
+
+package org.rocksdb;
+
+import org.junit.ClassRule;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+
+import java.nio.charset.StandardCharsets;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class StatisticsTest {
+
+  @ClassRule
+  public static final RocksMemoryResource rocksMemoryResource =
+      new RocksMemoryResource();
+
+  @Rule
+  public TemporaryFolder dbFolder = new TemporaryFolder();
+
+  @Test
+  public void statsLevel() throws RocksDBException {
+    final Statistics statistics = new Statistics();
+    statistics.setStatsLevel(StatsLevel.ALL);
+    assertThat(statistics.statsLevel()).isEqualTo(StatsLevel.ALL);
+  }
+
+  @Test
+  public void getTickerCount() throws RocksDBException {
+    try (final Statistics statistics = new Statistics();
+         final Options opt = new Options()
+             .setStatistics(statistics)
+             .setCreateIfMissing(true);
+         final RocksDB db = RocksDB.open(opt,
+             dbFolder.getRoot().getAbsolutePath())) {
+
+      final byte[] key = "some-key".getBytes(StandardCharsets.UTF_8);
+      final byte[] value = "some-value".getBytes(StandardCharsets.UTF_8);
+
+      db.put(key, value);
+      for(int i = 0; i < 10; i++) {
+        db.get(key);
+      }
+
+      assertThat(statistics.getTickerCount(TickerType.BYTES_READ)).isGreaterThan(0);
+    }
+  }
+
+  @Test
+  public void getAndResetTickerCount() throws RocksDBException {
+    try (final Statistics statistics = new Statistics();
+         final Options opt = new Options()
+             .setStatistics(statistics)
+             .setCreateIfMissing(true);
+         final RocksDB db = RocksDB.open(opt,
+             dbFolder.getRoot().getAbsolutePath())) {
+
+      final byte[] key = "some-key".getBytes(StandardCharsets.UTF_8);
+      final byte[] value = "some-value".getBytes(StandardCharsets.UTF_8);
+
+      db.put(key, value);
+      for(int i = 0; i < 10; i++) {
+        db.get(key);
+      }
+
+      final long read = statistics.getAndResetTickerCount(TickerType.BYTES_READ);
+      assertThat(read).isGreaterThan(0);
+
+      final long readAfterReset = statistics.getTickerCount(TickerType.BYTES_READ);
+      assertThat(readAfterReset).isLessThan(read);
+    }
+  }
+
+  @Test
+  public void getHistogramData() throws RocksDBException {
+    try (final Statistics statistics = new Statistics();
+         final Options opt = new Options()
+             .setStatistics(statistics)
+             .setCreateIfMissing(true);
+         final RocksDB db = RocksDB.open(opt,
+             dbFolder.getRoot().getAbsolutePath())) {
+
+      final byte[] key = "some-key".getBytes(StandardCharsets.UTF_8);
+      final byte[] value = "some-value".getBytes(StandardCharsets.UTF_8);
+
+      db.put(key, value);
+      for(int i = 0; i < 10; i++) {
+        db.get(key);
+      }
+
+      final HistogramData histogramData = statistics.getHistogramData(HistogramType.BYTES_PER_READ);
+      assertThat(histogramData).isNotNull();
+      assertThat(histogramData.getAverage()).isGreaterThan(0);
+    }
+  }
+
+  @Test
+  public void getHistogramString() throws RocksDBException {
+    try (final Statistics statistics = new Statistics();
+         final Options opt = new Options()
+             .setStatistics(statistics)
+             .setCreateIfMissing(true);
+         final RocksDB db = RocksDB.open(opt,
+             dbFolder.getRoot().getAbsolutePath())) {
+
+      final byte[] key = "some-key".getBytes(StandardCharsets.UTF_8);
+      final byte[] value = "some-value".getBytes(StandardCharsets.UTF_8);
+
+      for(int i = 0; i < 10; i++) {
+        db.put(key, value);
+      }
+
+      assertThat(statistics.getHistogramString(HistogramType.BYTES_PER_WRITE)).isNotNull();
+    }
+  }
+
+  @Test
+  public void reset() throws RocksDBException {
+    try (final Statistics statistics = new Statistics();
+         final Options opt = new Options()
+             .setStatistics(statistics)
+             .setCreateIfMissing(true);
+         final RocksDB db = RocksDB.open(opt,
+             dbFolder.getRoot().getAbsolutePath())) {
+
+      final byte[] key = "some-key".getBytes(StandardCharsets.UTF_8);
+      final byte[] value = "some-value".getBytes(StandardCharsets.UTF_8);
+
+      db.put(key, value);
+      for(int i = 0; i < 10; i++) {
+        db.get(key);
+      }
+
+      final long read = statistics.getTickerCount(TickerType.BYTES_READ);
+      assertThat(read).isGreaterThan(0);
+
+      statistics.reset();
+
+      final long readAfterReset = statistics.getTickerCount(TickerType.BYTES_READ);
+      assertThat(readAfterReset).isLessThan(read);
+    }
+  }
+
+  @Test
+  public void ToString() throws RocksDBException {
+    try (final Statistics statistics = new Statistics();
+         final Options opt = new Options()
+             .setStatistics(statistics)
+             .setCreateIfMissing(true);
+         final RocksDB db = RocksDB.open(opt,
+             dbFolder.getRoot().getAbsolutePath())) {
+      assertThat(statistics.toString()).isNotNull();
+    }
+  }
+}