From b092686959dffec61f5afff5c29b15215239dfb5 Mon Sep 17 00:00:00 2001 From: fyrz Date: Mon, 3 Nov 2014 09:59:52 +0100 Subject: [PATCH] [RocksJava] Extended testcases + 7% coverage + 3% branch coverage --- java/Makefile | 1 + .../test/BlockBasedTableConfigTest.java | 3 +- java/org/rocksdb/test/ComparatorTest.java | 129 +++++++++++++++++- java/org/rocksdb/test/WriteOptionsTest.java | 38 ++++++ 4 files changed, 168 insertions(+), 3 deletions(-) create mode 100644 java/org/rocksdb/test/WriteOptionsTest.java diff --git a/java/Makefile b/java/Makefile index d3bd8d8d4..d99821f05 100644 --- a/java/Makefile +++ b/java/Makefile @@ -71,6 +71,7 @@ JAVA_TESTS = org.rocksdb.test.AbstractComparatorTest\ org.rocksdb.test.StatisticsCollectorTest\ org.rocksdb.test.WirteBatchHandlerTest\ org.rocksdb.test.WriteBatchTest\ + org.rocksdb.test.WriteOptionsTest\ JAVA_TEST_LIBDIR = ./test-libs/ JAVA_JUNIT_JAR = $(JAVA_TEST_LIBDIR)junit-4.12-beta-2.jar diff --git a/java/org/rocksdb/test/BlockBasedTableConfigTest.java b/java/org/rocksdb/test/BlockBasedTableConfigTest.java index 6e90f340a..0b1961569 100644 --- a/java/org/rocksdb/test/BlockBasedTableConfigTest.java +++ b/java/org/rocksdb/test/BlockBasedTableConfigTest.java @@ -20,7 +20,7 @@ public class BlockBasedTableConfigTest { @AfterClass public static void printMessage(){ - System.out.println("Passed BlockBasedTableConfigTst."); + System.out.println("Passed BlockBasedTableConfigTest."); } @Test @@ -65,7 +65,6 @@ public class BlockBasedTableConfigTest { isEqualTo(5); blockBasedTableConfig.setBlockSize(10); assertThat(blockBasedTableConfig.blockSize()).isEqualTo(10); - System.out.println("Passed BlockBasedTableConfigTest."); } @Test diff --git a/java/org/rocksdb/test/ComparatorTest.java b/java/org/rocksdb/test/ComparatorTest.java index d65a0653a..26523c719 100644 --- a/java/org/rocksdb/test/ComparatorTest.java +++ b/java/org/rocksdb/test/ComparatorTest.java @@ -5,6 +5,7 @@ package org.rocksdb.test; +import org.junit.AfterClass; import org.junit.ClassRule; import org.junit.Rule; import org.junit.Test; @@ -14,6 +15,8 @@ import org.rocksdb.*; import java.io.IOException; import java.nio.file.FileSystems; +import static org.assertj.core.api.Assertions.assertThat; + public class ComparatorTest { @ClassRule @@ -23,6 +26,11 @@ public class ComparatorTest { @Rule public TemporaryFolder dbFolder = new TemporaryFolder(); + @AfterClass + public static void printMessage(){ + System.out.println("Passed ComparatorTest."); + } + @Test public void shouldTestComparator() throws IOException { @@ -47,7 +55,126 @@ public class ComparatorTest { // test the round-tripability of keys written and read with the Comparator comparatorTest.testRoundtrip(FileSystems.getDefault().getPath( dbFolder.getRoot().getAbsolutePath())); + } - System.out.println("Passed ComparatorTest"); + @Test + public void shouldTestBuiltinForwardComparator() + throws RocksDBException { + Options options = new Options(); + options.setCreateIfMissing(true); + options.setComparator(BuiltinComparator.BYTEWISE_COMPARATOR); + RocksDB rocksDB = RocksDB.open(options, + dbFolder.getRoot().getAbsolutePath()); + + rocksDB.put("abc1".getBytes(), "abc1".getBytes()); + rocksDB.put("abc2".getBytes(), "abc2".getBytes()); + rocksDB.put("abc3".getBytes(), "abc3".getBytes()); + + RocksIterator rocksIterator = rocksDB.newIterator(); + // Iterate over keys using a iterator + rocksIterator.seekToFirst(); + assertThat(rocksIterator.isValid()).isTrue(); + assertThat(rocksIterator.key()).isEqualTo( + "abc1".getBytes()); + assertThat(rocksIterator.value()).isEqualTo( + "abc1".getBytes()); + rocksIterator.next(); + assertThat(rocksIterator.isValid()).isTrue(); + assertThat(rocksIterator.key()).isEqualTo( + "abc2".getBytes()); + assertThat(rocksIterator.value()).isEqualTo( + "abc2".getBytes()); + rocksIterator.next(); + assertThat(rocksIterator.isValid()).isTrue(); + assertThat(rocksIterator.key()).isEqualTo( + "abc3".getBytes()); + assertThat(rocksIterator.value()).isEqualTo( + "abc3".getBytes()); + rocksIterator.next(); + assertThat(rocksIterator.isValid()).isFalse(); + // Get last one + rocksIterator.seekToLast(); + assertThat(rocksIterator.isValid()).isTrue(); + assertThat(rocksIterator.key()).isEqualTo( + "abc3".getBytes()); + assertThat(rocksIterator.value()).isEqualTo( + "abc3".getBytes()); + // Seek for abc + rocksIterator.seek("abc".getBytes()); + assertThat(rocksIterator.isValid()).isTrue(); + assertThat(rocksIterator.key()).isEqualTo( + "abc1".getBytes()); + assertThat(rocksIterator.value()).isEqualTo( + "abc1".getBytes()); + rocksIterator.dispose(); + rocksDB.close(); + options.dispose(); + } + + @Test + public void shouldTestBuiltinReverseComparator() + throws RocksDBException { + Options options = new Options(); + options.setCreateIfMissing(true); + options.setComparator( + BuiltinComparator.REVERSE_BYTEWISE_COMPARATOR); + RocksDB rocksDB = RocksDB.open(options, + dbFolder.getRoot().getAbsolutePath()); + + rocksDB.put("abc1".getBytes(), "abc1".getBytes()); + rocksDB.put("abc2".getBytes(), "abc2".getBytes()); + rocksDB.put("abc3".getBytes(), "abc3".getBytes()); + + RocksIterator rocksIterator = rocksDB.newIterator(); + // Iterate over keys using a iterator + rocksIterator.seekToFirst(); + assertThat(rocksIterator.isValid()).isTrue(); + assertThat(rocksIterator.key()).isEqualTo( + "abc3".getBytes()); + assertThat(rocksIterator.value()).isEqualTo( + "abc3".getBytes()); + rocksIterator.next(); + assertThat(rocksIterator.isValid()).isTrue(); + assertThat(rocksIterator.key()).isEqualTo( + "abc2".getBytes()); + assertThat(rocksIterator.value()).isEqualTo( + "abc2".getBytes()); + rocksIterator.next(); + assertThat(rocksIterator.isValid()).isTrue(); + assertThat(rocksIterator.key()).isEqualTo( + "abc1".getBytes()); + assertThat(rocksIterator.value()).isEqualTo( + "abc1".getBytes()); + rocksIterator.next(); + assertThat(rocksIterator.isValid()).isFalse(); + // Get last one + rocksIterator.seekToLast(); + assertThat(rocksIterator.isValid()).isTrue(); + assertThat(rocksIterator.key()).isEqualTo( + "abc1".getBytes()); + assertThat(rocksIterator.value()).isEqualTo( + "abc1".getBytes()); + // Will be invalid because abc is after abc1 + rocksIterator.seek("abc".getBytes()); + assertThat(rocksIterator.isValid()).isFalse(); + // Will be abc3 because the next one after abc999 + // is abc3 + rocksIterator.seek("abc999".getBytes()); + assertThat(rocksIterator.key()).isEqualTo( + "abc3".getBytes()); + assertThat(rocksIterator.value()).isEqualTo( + "abc3".getBytes()); + rocksIterator.dispose(); + rocksDB.close(); + options.dispose(); + } + + @Test + public void shouldTestBuiltinComparatorEnum(){ + assertThat(BuiltinComparator.BYTEWISE_COMPARATOR.ordinal()) + .isEqualTo(0); + assertThat( + BuiltinComparator.REVERSE_BYTEWISE_COMPARATOR.ordinal()) + .isEqualTo(1); } } diff --git a/java/org/rocksdb/test/WriteOptionsTest.java b/java/org/rocksdb/test/WriteOptionsTest.java new file mode 100644 index 000000000..7a92bf9fa --- /dev/null +++ b/java/org/rocksdb/test/WriteOptionsTest.java @@ -0,0 +1,38 @@ +// Copyright (c) 2014, Facebook, Inc. All rights reserved. +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. An additional grant +// of patent rights can be found in the PATENTS file in the same directory. + +package org.rocksdb.test; + +import org.junit.AfterClass; +import org.junit.ClassRule; +import org.junit.Test; +import org.rocksdb.WriteOptions; + +import static org.assertj.core.api.Assertions.assertThat; + +public class WriteOptionsTest { + + @ClassRule + public static final RocksMemoryResource rocksMemoryResource = + new RocksMemoryResource(); + + @AfterClass + public static void printMessage(){ + System.out.println("Passed WriteOptionsTest."); + } + + @Test + public void shouldTestWriteOptions(){ + WriteOptions writeOptions = new WriteOptions(); + writeOptions.setDisableWAL(true); + assertThat(writeOptions.disableWAL()).isTrue(); + writeOptions.setDisableWAL(false); + assertThat(writeOptions.disableWAL()).isFalse(); + writeOptions.setSync(true); + assertThat(writeOptions.sync()).isTrue(); + writeOptions.setSync(false); + assertThat(writeOptions.sync()).isFalse(); + } +}