[RocksJava] RocksJava Testcases

- NativeLibraryLoader Test
- EnvironmentTest Bugfix
main
fyrz 10 years ago
parent 62247ffa3b
commit 9fcf1a7b00
  1. 1
      java/Makefile
  2. 38
      java/src/test/java/org/rocksdb/NativeLibraryLoaderTest.java
  3. 41
      java/src/test/java/org/rocksdb/util/EnvironmentTest.java

@ -74,6 +74,7 @@ JAVA_TESTS = org.rocksdb.BackupableDBOptionsTest\
org.rocksdb.MemTableTest\ org.rocksdb.MemTableTest\
org.rocksdb.MergeTest\ org.rocksdb.MergeTest\
org.rocksdb.MixedOptionsTest\ org.rocksdb.MixedOptionsTest\
org.rocksdb.NativeLibraryLoaderTest\
org.rocksdb.OptionsTest\ org.rocksdb.OptionsTest\
org.rocksdb.PlainTableConfigTest\ org.rocksdb.PlainTableConfigTest\
org.rocksdb.ReadOnlyTest\ org.rocksdb.ReadOnlyTest\

@ -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;
import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import org.rocksdb.util.Environment;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import static org.assertj.core.api.Assertions.assertThat;
public class NativeLibraryLoaderTest {
@ClassRule
public static final RocksMemoryResource rocksMemoryResource =
new RocksMemoryResource();
@Rule
public TemporaryFolder temporaryFolder = new TemporaryFolder();
@Test
public void tempFolder() throws IOException {
NativeLibraryLoader.getInstance().loadLibrary(
temporaryFolder.getRoot().getAbsolutePath());
Path path = Paths.get(temporaryFolder.getRoot().getAbsolutePath(),
Environment.getJniLibraryFileName("rocksdb"));
assertThat(Files.exists(path));
assertThat(Files.isReadable(path));
}
}

@ -4,6 +4,8 @@
// of patent rights can be found in the PATENTS file in the same directory. // of patent rights can be found in the PATENTS file in the same directory.
package org.rocksdb.util; package org.rocksdb.util;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test; import org.junit.Test;
import java.lang.reflect.Field; import java.lang.reflect.Field;
@ -12,10 +14,17 @@ import java.lang.reflect.Modifier;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
public class EnvironmentTest { public class EnvironmentTest {
private final static String ARCH_FIELD_NAME = "ARCH";
private final static String OS_FIELD_NAME = "OS";
// Init static context private static String INITIAL_OS;
private static Environment environment = private static String INITIAL_ARCH;
new Environment();
@BeforeClass
public static void saveState() {
INITIAL_ARCH = getEnvironmentClassField(ARCH_FIELD_NAME);
INITIAL_OS = getEnvironmentClassField(OS_FIELD_NAME);
}
@Test @Test
public void mac32() { public void mac32() {
@ -122,11 +131,31 @@ public class EnvironmentTest {
private void setEnvironmentClassFields(String osName, private void setEnvironmentClassFields(String osName,
String osArch) { String osArch) {
setEnvironmentClassField("OS", osName); setEnvironmentClassField(OS_FIELD_NAME, osName);
setEnvironmentClassField("ARCH", osArch); setEnvironmentClassField(ARCH_FIELD_NAME, osArch);
}
@AfterClass
public static void restoreState() {
setEnvironmentClassField(OS_FIELD_NAME, INITIAL_OS);
setEnvironmentClassField(ARCH_FIELD_NAME, INITIAL_ARCH);
}
private static String getEnvironmentClassField(String fieldName) {
final Field field;
try {
field = Environment.class.getDeclaredField(fieldName);
field.setAccessible(true);
final Field modifiersField = Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
return (String)field.get(null);
} catch (NoSuchFieldException | IllegalAccessException e) {
throw new RuntimeException(e);
}
} }
private void setEnvironmentClassField(String fieldName, String value) { private static void setEnvironmentClassField(String fieldName, String value) {
final Field field; final Field field;
try { try {
field = Environment.class.getDeclaredField(fieldName); field = Environment.class.getDeclaredField(fieldName);

Loading…
Cancel
Save