mirror of
https://github.com/bitcoin-s/bitcoin-s.git
synced 2025-03-26 21:42:48 +01:00
refactor BitcoindRpcTestUtil test methods to take ZmqConfig rather than zmqPort (#3002)
This commit is contained in:
parent
f792fb3480
commit
38baea5e24
4 changed files with 85 additions and 103 deletions
|
@ -1,8 +1,10 @@
|
|||
package org.bitcoins.rpc.util
|
||||
|
||||
import org.bitcoins.asyncutil.AsyncUtil
|
||||
import java.net.ServerSocket
|
||||
|
||||
import java.net.{InetSocketAddress, ServerSocket}
|
||||
import org.bitcoins.rpc.client.common.BitcoindRpcClient
|
||||
import org.bitcoins.rpc.config.ZmqConfig
|
||||
|
||||
import scala.annotation.tailrec
|
||||
import scala.concurrent.{ExecutionContext, Future}
|
||||
|
@ -37,6 +39,16 @@ abstract class RpcUtil extends AsyncUtil {
|
|||
case Failure(_) => randomPort
|
||||
}
|
||||
}
|
||||
|
||||
/** Genreates a zmq config with unused ports */
|
||||
def zmqConfig: ZmqConfig = {
|
||||
ZmqConfig(
|
||||
hashBlock = Some(new InetSocketAddress(randomPort)),
|
||||
hashTx = Some(new InetSocketAddress(randomPort)),
|
||||
rawTx = Some(new InetSocketAddress(randomPort)),
|
||||
rawBlock = Some(new InetSocketAddress(randomPort))
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
object RpcUtil extends RpcUtil
|
||||
|
|
|
@ -23,7 +23,11 @@ import org.bitcoins.eclair.rpc.api._
|
|||
import org.bitcoins.eclair.rpc.client.EclairRpcClient
|
||||
import org.bitcoins.eclair.rpc.config.EclairInstance
|
||||
import org.bitcoins.rpc.client.common.{BitcoindRpcClient, BitcoindVersion}
|
||||
import org.bitcoins.rpc.config.{BitcoindAuthCredentials, BitcoindInstance}
|
||||
import org.bitcoins.rpc.config.{
|
||||
BitcoindAuthCredentials,
|
||||
BitcoindInstance,
|
||||
ZmqConfig
|
||||
}
|
||||
import org.bitcoins.rpc.util.RpcUtil
|
||||
import org.bitcoins.testkit.async.TestAsyncUtil
|
||||
import org.bitcoins.testkit.rpc.BitcoindRpcTestUtil
|
||||
|
@ -65,41 +69,13 @@ trait EclairRpcTestUtil extends Logging {
|
|||
def bitcoindInstance(
|
||||
port: Int = RpcUtil.randomPort,
|
||||
rpcPort: Int = RpcUtil.randomPort,
|
||||
zmqPort: Int = RpcUtil.randomPort,
|
||||
zmqConfig: ZmqConfig = RpcUtil.zmqConfig,
|
||||
bitcoindV: BitcoindVersion =
|
||||
EclairRpcClient.bitcoindV): BitcoindInstance = {
|
||||
bitcoindV match {
|
||||
case BitcoindVersion.V21 =>
|
||||
BitcoindRpcTestUtil.v21Instance(port = port,
|
||||
rpcPort = rpcPort,
|
||||
zmqPort = zmqPort)
|
||||
case BitcoindVersion.V20 =>
|
||||
BitcoindRpcTestUtil.v20Instance(port = port,
|
||||
rpcPort = rpcPort,
|
||||
zmqPort = zmqPort)
|
||||
case BitcoindVersion.V19 =>
|
||||
BitcoindRpcTestUtil.v19Instance(port = port,
|
||||
rpcPort = rpcPort,
|
||||
zmqPort = zmqPort)
|
||||
case BitcoindVersion.V18 =>
|
||||
BitcoindRpcTestUtil.v18Instance(port = port,
|
||||
rpcPort = rpcPort,
|
||||
zmqPort = zmqPort)
|
||||
case BitcoindVersion.V17 =>
|
||||
BitcoindRpcTestUtil.v17Instance(port = port,
|
||||
rpcPort = rpcPort,
|
||||
zmqPort = zmqPort)
|
||||
case BitcoindVersion.V16 =>
|
||||
BitcoindRpcTestUtil.v16Instance(port = port,
|
||||
rpcPort = rpcPort,
|
||||
zmqPort = zmqPort)
|
||||
case BitcoindVersion.Experimental =>
|
||||
BitcoindRpcTestUtil.vExperimentalInstance(port = port,
|
||||
rpcPort = rpcPort,
|
||||
zmqPort = zmqPort)
|
||||
case BitcoindVersion.Unknown =>
|
||||
sys.error(s"Cannot start eclair with an unknown instance of bitcoind")
|
||||
}
|
||||
BitcoindRpcTestUtil.getInstance(bitcoindVersion = bitcoindV,
|
||||
port = port,
|
||||
rpcPort = rpcPort,
|
||||
zmqConfig = zmqConfig)
|
||||
}
|
||||
|
||||
//cribbed from https://github.com/Christewart/eclair/blob/bad02e2c0e8bd039336998d318a861736edfa0ad/eclair-core/src/test/scala/fr/acinq/eclair/integration/IntegrationSpec.scala#L140-L153
|
||||
|
|
|
@ -10,7 +10,11 @@ import org.bitcoins.core.wallet.fee.SatoshisPerByte
|
|||
import org.bitcoins.lnd.rpc.LndRpcClient
|
||||
import org.bitcoins.lnd.rpc.config.LndInstance
|
||||
import org.bitcoins.rpc.client.common.{BitcoindRpcClient, BitcoindVersion}
|
||||
import org.bitcoins.rpc.config.{BitcoindAuthCredentials, BitcoindInstance}
|
||||
import org.bitcoins.rpc.config.{
|
||||
BitcoindAuthCredentials,
|
||||
BitcoindInstance,
|
||||
ZmqConfig
|
||||
}
|
||||
import org.bitcoins.rpc.util.RpcUtil
|
||||
import org.bitcoins.testkit.async.TestAsyncUtil
|
||||
import org.bitcoins.testkit.rpc.BitcoindRpcTestUtil
|
||||
|
@ -45,40 +49,12 @@ trait LndRpcTestUtil extends Logging {
|
|||
def bitcoindInstance(
|
||||
port: Int = RpcUtil.randomPort,
|
||||
rpcPort: Int = RpcUtil.randomPort,
|
||||
zmqPort: Int = RpcUtil.randomPort,
|
||||
zmqConfig: ZmqConfig = RpcUtil.zmqConfig,
|
||||
bitcoindV: BitcoindVersion = BitcoindVersion.V21): BitcoindInstance = {
|
||||
bitcoindV match {
|
||||
case BitcoindVersion.V21 =>
|
||||
BitcoindRpcTestUtil.v21Instance(port = port,
|
||||
rpcPort = rpcPort,
|
||||
zmqPort = zmqPort)
|
||||
case BitcoindVersion.V20 =>
|
||||
BitcoindRpcTestUtil.v20Instance(port = port,
|
||||
rpcPort = rpcPort,
|
||||
zmqPort = zmqPort)
|
||||
case BitcoindVersion.V19 =>
|
||||
BitcoindRpcTestUtil.v19Instance(port = port,
|
||||
rpcPort = rpcPort,
|
||||
zmqPort = zmqPort)
|
||||
case BitcoindVersion.V18 =>
|
||||
BitcoindRpcTestUtil.v18Instance(port = port,
|
||||
rpcPort = rpcPort,
|
||||
zmqPort = zmqPort)
|
||||
case BitcoindVersion.V17 =>
|
||||
BitcoindRpcTestUtil.v17Instance(port = port,
|
||||
rpcPort = rpcPort,
|
||||
zmqPort = zmqPort)
|
||||
case BitcoindVersion.V16 =>
|
||||
BitcoindRpcTestUtil.v16Instance(port = port,
|
||||
rpcPort = rpcPort,
|
||||
zmqPort = zmqPort)
|
||||
case BitcoindVersion.Experimental =>
|
||||
BitcoindRpcTestUtil.vExperimentalInstance(port = port,
|
||||
rpcPort = rpcPort,
|
||||
zmqPort = zmqPort)
|
||||
case BitcoindVersion.Unknown =>
|
||||
sys.error(s"Cannot start lnd with an unknown instance of bitcoind")
|
||||
}
|
||||
BitcoindRpcTestUtil.getInstance(bitcoindVersion = bitcoindV,
|
||||
port = port,
|
||||
rpcPort = rpcPort,
|
||||
zmqConfig = zmqConfig)
|
||||
}
|
||||
|
||||
def commonConfig(
|
||||
|
|
|
@ -42,7 +42,7 @@ import org.bitcoins.testkit.util.{BitcoindRpcTestClient, FileUtil}
|
|||
import org.bitcoins.util.ListUtil
|
||||
|
||||
import java.io.File
|
||||
import java.net.URI
|
||||
import java.net.{InetSocketAddress, URI}
|
||||
import java.nio.file.{Files, Path}
|
||||
import scala.collection.immutable.Map
|
||||
import scala.collection.mutable
|
||||
|
@ -59,20 +59,34 @@ trait BitcoindRpcTestUtil extends Logging {
|
|||
type RpcClientAccum =
|
||||
mutable.Builder[BitcoindRpcClient, Vector[BitcoindRpcClient]]
|
||||
|
||||
private def newUri: URI = new URI(s"http://localhost:${RpcUtil.randomPort}")
|
||||
|
||||
private def newInetSocketAddres: InetSocketAddress = {
|
||||
new InetSocketAddress(RpcUtil.randomPort)
|
||||
}
|
||||
|
||||
/** Standard config used for testing purposes
|
||||
*/
|
||||
def standardConfig: BitcoindConfig = {
|
||||
def newUri: URI = new URI(s"http://localhost:${RpcUtil.randomPort}")
|
||||
|
||||
val hashBlock = newInetSocketAddres
|
||||
val hashTx = newInetSocketAddres
|
||||
val rawBlock = newInetSocketAddres
|
||||
val rawTx = newInetSocketAddres
|
||||
val zmqConfig = ZmqConfig(hashBlock = Some(hashBlock),
|
||||
rawBlock = Some(rawBlock),
|
||||
hashTx = Some(hashTx),
|
||||
rawTx = Some(rawTx))
|
||||
config(uri = newUri,
|
||||
rpcUri = newUri,
|
||||
zmqPort = RpcUtil.randomPort,
|
||||
zmqConfig = zmqConfig,
|
||||
pruneMode = false)
|
||||
}
|
||||
|
||||
def config(
|
||||
uri: URI,
|
||||
rpcUri: URI,
|
||||
zmqPort: Int,
|
||||
zmqConfig: ZmqConfig,
|
||||
pruneMode: Boolean,
|
||||
blockFilterIndex: Boolean = false): BitcoindConfig = {
|
||||
val pass = FileUtil.randomDirName
|
||||
|
@ -91,10 +105,10 @@ trait BitcoindRpcTestUtil extends Logging {
|
|||
|fallbackfee=0.0002
|
||||
|txindex=${if (pruneMode) 0
|
||||
else 1 /* pruning and txindex are not compatible */}
|
||||
|zmqpubhashtx=tcp://127.0.0.1:$zmqPort
|
||||
|zmqpubhashblock=tcp://127.0.0.1:${zmqPort + 1}
|
||||
|zmqpubrawtx=tcp://127.0.0.1:${zmqPort + 2}
|
||||
|zmqpubrawblock=tcp://127.0.0.1:${zmqPort + 3}
|
||||
|zmqpubhashtx=tcp://${zmqConfig.hashTx.get.getHostString}:${zmqConfig.hashTx.get.getPort}
|
||||
|zmqpubhashblock=tcp://${zmqConfig.hashBlock.get.getHostString}:${zmqConfig.hashBlock.get.getPort}
|
||||
|zmqpubrawtx=tcp://${zmqConfig.rawTx.get.getHostString}:${zmqConfig.rawTx.get.getPort}
|
||||
|zmqpubrawblock=tcp://${zmqConfig.rawBlock.get.getHostString}:${zmqConfig.rawBlock.get.getPort}
|
||||
|prune=${if (pruneMode) 1 else 0}
|
||||
""".stripMargin
|
||||
val config =
|
||||
|
@ -115,11 +129,15 @@ trait BitcoindRpcTestUtil extends Logging {
|
|||
def writtenConfig(
|
||||
uri: URI,
|
||||
rpcUri: URI,
|
||||
zmqPort: Int,
|
||||
zmqConfig: ZmqConfig,
|
||||
pruneMode: Boolean,
|
||||
blockFilterIndex: Boolean = false
|
||||
): Path = {
|
||||
val conf = config(uri, rpcUri, zmqPort, pruneMode, blockFilterIndex)
|
||||
val conf = config(uri = uri,
|
||||
rpcUri = rpcUri,
|
||||
zmqConfig = zmqConfig,
|
||||
pruneMode = pruneMode,
|
||||
blockFilterIndex = blockFilterIndex)
|
||||
|
||||
val datadir = conf.datadir
|
||||
val written = BitcoindConfig.writeConfigToFile(conf, datadir)
|
||||
|
@ -174,7 +192,7 @@ trait BitcoindRpcTestUtil extends Logging {
|
|||
def instance(
|
||||
port: Int = RpcUtil.randomPort,
|
||||
rpcPort: Int = RpcUtil.randomPort,
|
||||
zmqPort: Int = RpcUtil.randomPort,
|
||||
zmqConfig: ZmqConfig = RpcUtil.zmqConfig,
|
||||
pruneMode: Boolean = false,
|
||||
versionOpt: Option[BitcoindVersion] = None,
|
||||
binaryDirectory: Path =
|
||||
|
@ -191,7 +209,7 @@ trait BitcoindRpcTestUtil extends Logging {
|
|||
val configFile =
|
||||
writtenConfig(uri,
|
||||
rpcUri,
|
||||
zmqPort,
|
||||
zmqConfig,
|
||||
pruneMode,
|
||||
blockFilterIndex = hasNeutrinoSupport)
|
||||
val conf = BitcoindConfig(configFile)
|
||||
|
@ -214,13 +232,13 @@ trait BitcoindRpcTestUtil extends Logging {
|
|||
def v16Instance(
|
||||
port: Int = RpcUtil.randomPort,
|
||||
rpcPort: Int = RpcUtil.randomPort,
|
||||
zmqPort: Int = RpcUtil.randomPort,
|
||||
zmqConfig: ZmqConfig = RpcUtil.zmqConfig,
|
||||
pruneMode: Boolean = false,
|
||||
binaryDirectory: Path = BitcoindRpcTestClient.sbtBinaryDirectory
|
||||
): BitcoindInstance =
|
||||
instance(port = port,
|
||||
rpcPort = rpcPort,
|
||||
zmqPort = zmqPort,
|
||||
zmqConfig = zmqConfig,
|
||||
pruneMode = pruneMode,
|
||||
versionOpt = Some(BitcoindVersion.V16),
|
||||
binaryDirectory = binaryDirectory)
|
||||
|
@ -228,13 +246,13 @@ trait BitcoindRpcTestUtil extends Logging {
|
|||
def v17Instance(
|
||||
port: Int = RpcUtil.randomPort,
|
||||
rpcPort: Int = RpcUtil.randomPort,
|
||||
zmqPort: Int = RpcUtil.randomPort,
|
||||
zmqConfig: ZmqConfig = RpcUtil.zmqConfig,
|
||||
pruneMode: Boolean = false,
|
||||
binaryDirectory: Path = BitcoindRpcTestClient.sbtBinaryDirectory
|
||||
): BitcoindInstance =
|
||||
instance(port = port,
|
||||
rpcPort = rpcPort,
|
||||
zmqPort = zmqPort,
|
||||
zmqConfig = zmqConfig,
|
||||
pruneMode = pruneMode,
|
||||
versionOpt = Some(BitcoindVersion.V17),
|
||||
binaryDirectory = binaryDirectory)
|
||||
|
@ -242,13 +260,13 @@ trait BitcoindRpcTestUtil extends Logging {
|
|||
def v18Instance(
|
||||
port: Int = RpcUtil.randomPort,
|
||||
rpcPort: Int = RpcUtil.randomPort,
|
||||
zmqPort: Int = RpcUtil.randomPort,
|
||||
zmqConfig: ZmqConfig = RpcUtil.zmqConfig,
|
||||
pruneMode: Boolean = false,
|
||||
binaryDirectory: Path = BitcoindRpcTestClient.sbtBinaryDirectory
|
||||
): BitcoindInstance =
|
||||
instance(port = port,
|
||||
rpcPort = rpcPort,
|
||||
zmqPort = zmqPort,
|
||||
zmqConfig = zmqConfig,
|
||||
pruneMode = pruneMode,
|
||||
versionOpt = Some(BitcoindVersion.V18),
|
||||
binaryDirectory = binaryDirectory)
|
||||
|
@ -256,13 +274,13 @@ trait BitcoindRpcTestUtil extends Logging {
|
|||
def v19Instance(
|
||||
port: Int = RpcUtil.randomPort,
|
||||
rpcPort: Int = RpcUtil.randomPort,
|
||||
zmqPort: Int = RpcUtil.randomPort,
|
||||
zmqConfig: ZmqConfig = RpcUtil.zmqConfig,
|
||||
pruneMode: Boolean = false,
|
||||
binaryDirectory: Path = BitcoindRpcTestClient.sbtBinaryDirectory
|
||||
): BitcoindInstance =
|
||||
instance(port = port,
|
||||
rpcPort = rpcPort,
|
||||
zmqPort = zmqPort,
|
||||
zmqConfig = zmqConfig,
|
||||
pruneMode = pruneMode,
|
||||
versionOpt = Some(BitcoindVersion.V19),
|
||||
binaryDirectory = binaryDirectory)
|
||||
|
@ -270,13 +288,13 @@ trait BitcoindRpcTestUtil extends Logging {
|
|||
def v20Instance(
|
||||
port: Int = RpcUtil.randomPort,
|
||||
rpcPort: Int = RpcUtil.randomPort,
|
||||
zmqPort: Int = RpcUtil.randomPort,
|
||||
zmqConfig: ZmqConfig = RpcUtil.zmqConfig,
|
||||
pruneMode: Boolean = false,
|
||||
binaryDirectory: Path = BitcoindRpcTestClient.sbtBinaryDirectory
|
||||
): BitcoindInstance =
|
||||
instance(port = port,
|
||||
rpcPort = rpcPort,
|
||||
zmqPort = zmqPort,
|
||||
zmqConfig = zmqConfig,
|
||||
pruneMode = pruneMode,
|
||||
versionOpt = Some(BitcoindVersion.V20),
|
||||
binaryDirectory = binaryDirectory)
|
||||
|
@ -284,13 +302,13 @@ trait BitcoindRpcTestUtil extends Logging {
|
|||
def v21Instance(
|
||||
port: Int = RpcUtil.randomPort,
|
||||
rpcPort: Int = RpcUtil.randomPort,
|
||||
zmqPort: Int = RpcUtil.randomPort,
|
||||
zmqConfig: ZmqConfig = RpcUtil.zmqConfig,
|
||||
pruneMode: Boolean = false,
|
||||
binaryDirectory: Path = BitcoindRpcTestClient.sbtBinaryDirectory
|
||||
): BitcoindInstance =
|
||||
instance(port = port,
|
||||
rpcPort = rpcPort,
|
||||
zmqPort = zmqPort,
|
||||
zmqConfig = zmqConfig,
|
||||
pruneMode = pruneMode,
|
||||
versionOpt = Some(BitcoindVersion.V21),
|
||||
binaryDirectory = binaryDirectory)
|
||||
|
@ -298,13 +316,13 @@ trait BitcoindRpcTestUtil extends Logging {
|
|||
def vExperimentalInstance(
|
||||
port: Int = RpcUtil.randomPort,
|
||||
rpcPort: Int = RpcUtil.randomPort,
|
||||
zmqPort: Int = RpcUtil.randomPort,
|
||||
zmqConfig: ZmqConfig = RpcUtil.zmqConfig,
|
||||
pruneMode: Boolean = false,
|
||||
binaryDirectory: Path = BitcoindRpcTestClient.sbtBinaryDirectory
|
||||
): BitcoindInstance =
|
||||
instance(port = port,
|
||||
rpcPort = rpcPort,
|
||||
zmqPort = zmqPort,
|
||||
zmqConfig = zmqConfig,
|
||||
pruneMode = pruneMode,
|
||||
versionOpt = Some(BitcoindVersion.Experimental),
|
||||
binaryDirectory = binaryDirectory)
|
||||
|
@ -314,7 +332,7 @@ trait BitcoindRpcTestUtil extends Logging {
|
|||
bitcoindVersion: BitcoindVersion,
|
||||
port: Int = RpcUtil.randomPort,
|
||||
rpcPort: Int = RpcUtil.randomPort,
|
||||
zmqPort: Int = RpcUtil.randomPort,
|
||||
zmqConfig: ZmqConfig = RpcUtil.zmqConfig,
|
||||
pruneMode: Boolean = false,
|
||||
binaryDirectory: Path =
|
||||
BitcoindRpcTestClient.sbtBinaryDirectory): BitcoindInstance = {
|
||||
|
@ -322,43 +340,43 @@ trait BitcoindRpcTestUtil extends Logging {
|
|||
case BitcoindVersion.V16 =>
|
||||
BitcoindRpcTestUtil.v16Instance(port,
|
||||
rpcPort,
|
||||
zmqPort,
|
||||
zmqConfig,
|
||||
pruneMode,
|
||||
binaryDirectory = binaryDirectory)
|
||||
case BitcoindVersion.V17 =>
|
||||
BitcoindRpcTestUtil.v17Instance(port,
|
||||
rpcPort,
|
||||
zmqPort,
|
||||
zmqConfig,
|
||||
pruneMode,
|
||||
binaryDirectory = binaryDirectory)
|
||||
case BitcoindVersion.V18 =>
|
||||
BitcoindRpcTestUtil.v18Instance(port,
|
||||
rpcPort,
|
||||
zmqPort,
|
||||
zmqConfig,
|
||||
pruneMode,
|
||||
binaryDirectory = binaryDirectory)
|
||||
case BitcoindVersion.V19 =>
|
||||
BitcoindRpcTestUtil.v19Instance(port,
|
||||
rpcPort,
|
||||
zmqPort,
|
||||
zmqConfig,
|
||||
pruneMode,
|
||||
binaryDirectory = binaryDirectory)
|
||||
case BitcoindVersion.V20 =>
|
||||
BitcoindRpcTestUtil.v20Instance(port,
|
||||
rpcPort,
|
||||
zmqPort,
|
||||
zmqConfig,
|
||||
pruneMode,
|
||||
binaryDirectory = binaryDirectory)
|
||||
case BitcoindVersion.V21 =>
|
||||
BitcoindRpcTestUtil.v21Instance(port,
|
||||
rpcPort,
|
||||
zmqPort,
|
||||
zmqConfig,
|
||||
pruneMode,
|
||||
binaryDirectory = binaryDirectory)
|
||||
case BitcoindVersion.Experimental =>
|
||||
BitcoindRpcTestUtil.vExperimentalInstance(port,
|
||||
rpcPort,
|
||||
zmqPort,
|
||||
zmqConfig,
|
||||
pruneMode,
|
||||
binaryDirectory =
|
||||
binaryDirectory)
|
||||
|
|
Loading…
Add table
Reference in a new issue