Add LibTest getTestDataDir to fix sled test on android
This commit is contained in:
@@ -19,7 +19,7 @@ class MemoryConfig() : DatabaseConfig() {
|
||||
override val databaseConfigT = libJna.new_memory_config()
|
||||
}
|
||||
|
||||
class SledConfig(path: String, treeName:String) : DatabaseConfig() {
|
||||
class SledConfig(path: String, treeName: String) : DatabaseConfig() {
|
||||
|
||||
private val log: Logger = LoggerFactory.getLogger(SledConfig::class.java)
|
||||
override val databaseConfigT = libJna.new_sled_config(path, treeName)
|
||||
|
||||
@@ -39,6 +39,6 @@ enum class JnaError {
|
||||
Electrum,
|
||||
|
||||
// Esplora
|
||||
// CompactFilters
|
||||
// CompactFilters
|
||||
Sled,
|
||||
}
|
||||
@@ -116,11 +116,11 @@ interface LibJna : Library {
|
||||
|
||||
// void free_blockchain_config (
|
||||
// BlockchainConfig_t * blockchain_config);
|
||||
fun free_blockchain_config( blockchain_config: BlockchainConfig_t)
|
||||
fun free_blockchain_config(blockchain_config: BlockchainConfig_t)
|
||||
|
||||
// DatabaseConfig_t * new_memory_config (void);
|
||||
fun new_memory_config(): DatabaseConfig_t
|
||||
|
||||
|
||||
// DatabaseConfig_t * new_sled_config (
|
||||
// char const * path,
|
||||
// char const * tree_name);
|
||||
@@ -128,5 +128,5 @@ interface LibJna : Library {
|
||||
|
||||
// void free_database_config (
|
||||
// DatabaseConfig_t * database_config);
|
||||
fun free_database_config( database_config: DatabaseConfig_t)
|
||||
fun free_database_config(database_config: DatabaseConfig_t)
|
||||
}
|
||||
|
||||
@@ -5,33 +5,34 @@ import com.sun.jna.PointerType
|
||||
import org.slf4j.Logger
|
||||
import org.slf4j.LoggerFactory
|
||||
|
||||
abstract class ResultBase<PT : PointerType, RT : Any> internal constructor(protected val resultT: PT) :
|
||||
abstract class ResultBase<PT : PointerType, RT : Any> internal constructor(private val pointerT: PT) :
|
||||
LibBase() {
|
||||
|
||||
protected open val log: Logger = LoggerFactory.getLogger(ResultBase::class.java)
|
||||
|
||||
protected abstract fun err(): Pointer?
|
||||
protected abstract fun err(pointerT: PT): Pointer?
|
||||
|
||||
protected abstract fun ok(): RT
|
||||
protected abstract fun ok(pointerT: PT): RT
|
||||
|
||||
protected abstract fun free(pointer: PT)
|
||||
protected abstract fun free(pointerT: PT)
|
||||
|
||||
private fun checkErr() {
|
||||
val errPointer = err()
|
||||
private fun checkErr(pointerT: PT) {
|
||||
val errPointer = err(pointerT)
|
||||
val err = errPointer?.getString(0)
|
||||
libJna.free_string(errPointer)
|
||||
if (err != null) {
|
||||
log.error("JnaError: $err")
|
||||
throw JnaException(JnaError.valueOf(err))
|
||||
}
|
||||
}
|
||||
|
||||
fun value(): RT {
|
||||
checkErr()
|
||||
return ok()
|
||||
checkErr(pointerT)
|
||||
return ok(pointerT)
|
||||
}
|
||||
|
||||
protected fun finalize() {
|
||||
free(resultT)
|
||||
log.debug("$resultT freed")
|
||||
free(pointerT)
|
||||
log.debug("$pointerT freed")
|
||||
}
|
||||
}
|
||||
@@ -9,18 +9,18 @@ class StringResult internal constructor(stringResultT: LibJna.StringResult_t) :
|
||||
|
||||
override val log: Logger = LoggerFactory.getLogger(StringResult::class.java)
|
||||
|
||||
override fun err(): Pointer? {
|
||||
return libJna.get_string_err(resultT)
|
||||
override fun err(pointerT: LibJna.StringResult_t): Pointer? {
|
||||
return libJna.get_string_err(pointerT)
|
||||
}
|
||||
|
||||
override fun ok(): String {
|
||||
val okPointer = libJna.get_string_ok(resultT)
|
||||
override fun ok(pointerT: LibJna.StringResult_t): String {
|
||||
val okPointer = libJna.get_string_ok(pointerT)
|
||||
val ok = okPointer!!.getString(0)
|
||||
libJna.free_string(okPointer)
|
||||
return ok
|
||||
}
|
||||
|
||||
override fun free(pointer: LibJna.StringResult_t) {
|
||||
libJna.free_string_result(resultT)
|
||||
override fun free(pointerT: LibJna.StringResult_t) {
|
||||
libJna.free_string_result(pointerT)
|
||||
}
|
||||
}
|
||||
@@ -9,15 +9,15 @@ class VoidResult internal constructor(voidResultT: LibJna.VoidResult_t) :
|
||||
|
||||
override val log: Logger = LoggerFactory.getLogger(VoidResult::class.java)
|
||||
|
||||
override fun err(): Pointer? {
|
||||
return libJna.get_void_err(resultT)
|
||||
override fun err(pointerT: LibJna.VoidResult_t): Pointer? {
|
||||
return libJna.get_void_err(pointerT)
|
||||
}
|
||||
|
||||
override fun ok() {
|
||||
override fun ok(pointerT: LibJna.VoidResult_t) {
|
||||
// Void
|
||||
}
|
||||
|
||||
override fun free(pointer: LibJna.VoidResult_t) {
|
||||
libJna.free_void_result(resultT)
|
||||
override fun free(pointerT: LibJna.VoidResult_t) {
|
||||
libJna.free_void_result(pointerT)
|
||||
}
|
||||
}
|
||||
@@ -13,7 +13,14 @@ class Wallet constructor(
|
||||
val log: Logger = LoggerFactory.getLogger(Wallet::class.java)
|
||||
|
||||
private val walletResult =
|
||||
WalletResult(libJna.new_wallet_result(descriptor, changeDescriptor, blockchainConfig.blockchainConfigT, databaseConfig.databaseConfigT))
|
||||
WalletResult(
|
||||
libJna.new_wallet_result(
|
||||
descriptor,
|
||||
changeDescriptor,
|
||||
blockchainConfig.blockchainConfigT,
|
||||
databaseConfig.databaseConfigT
|
||||
)
|
||||
)
|
||||
private val walletRefT = walletResult.value()
|
||||
|
||||
fun sync() {
|
||||
@@ -26,7 +33,7 @@ class Wallet constructor(
|
||||
return stringResult.value()
|
||||
}
|
||||
|
||||
protected fun finalize(pointer: LibJna.WalletResult_t) {
|
||||
protected fun finalize(walletRefT: LibJna.WalletRef_t) {
|
||||
libJna.free_wallet_ref(walletRefT)
|
||||
log.debug("$walletRefT freed")
|
||||
}
|
||||
|
||||
@@ -9,15 +9,15 @@ class WalletResult internal constructor(walletResultT: LibJna.WalletResult_t) :
|
||||
|
||||
override val log: Logger = LoggerFactory.getLogger(WalletResult::class.java)
|
||||
|
||||
override fun err(): Pointer? {
|
||||
return libJna.get_wallet_err(resultT)
|
||||
override fun err(pointerT: LibJna.WalletResult_t): Pointer? {
|
||||
return libJna.get_wallet_err(pointerT)
|
||||
}
|
||||
|
||||
override fun ok(): LibJna.WalletRef_t {
|
||||
return libJna.get_wallet_ok(resultT)!!
|
||||
override fun ok(pointerT: LibJna.WalletResult_t): LibJna.WalletRef_t {
|
||||
return libJna.get_wallet_ok(pointerT)!!
|
||||
}
|
||||
|
||||
override fun free(pointer: LibJna.WalletResult_t) {
|
||||
libJna.free_wallet_result(resultT)
|
||||
override fun free(pointerT: LibJna.WalletResult_t) {
|
||||
libJna.free_wallet_result(pointerT)
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,16 @@
|
||||
package org.bitcoindevkit.bdk
|
||||
|
||||
import java.nio.file.Paths
|
||||
|
||||
/**
|
||||
* Library test, which will execute on linux host.
|
||||
*
|
||||
*/
|
||||
class JvmLibTest : LibTest() {
|
||||
|
||||
override fun getTestDataDir(): String {
|
||||
//return Files.createTempDirectory("bdk-test").toString()
|
||||
return Paths.get(System.getProperty("java.io.tmpdir"), "bdk-test").toString()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user