From 6eff248f3d3a3ca01785f485c32035ae68bfeebb Mon Sep 17 00:00:00 2001 From: Chris Stewart Date: Fri, 8 Jan 2021 11:43:48 -0600 Subject: [PATCH] Add officially supported version of bitcoind by eclair, also add the ability to specify which version of bitcoind you are using for EclairRpcTestUtil.getBitcoindRpc (#2490) --- .../eclair/rpc/client/EclairRpcClient.scala | 7 +++- .../eclair/rpc/EclairRpcTestUtil.scala | 42 ++++++++++++++++--- 2 files changed, 42 insertions(+), 7 deletions(-) diff --git a/eclair-rpc/src/main/scala/org/bitcoins/eclair/rpc/client/EclairRpcClient.scala b/eclair-rpc/src/main/scala/org/bitcoins/eclair/rpc/client/EclairRpcClient.scala index 2b51a5bac0..6812363fb7 100644 --- a/eclair-rpc/src/main/scala/org/bitcoins/eclair/rpc/client/EclairRpcClient.scala +++ b/eclair-rpc/src/main/scala/org/bitcoins/eclair/rpc/client/EclairRpcClient.scala @@ -5,7 +5,6 @@ import java.net.InetSocketAddress import java.nio.file.NoSuchFileException import java.time.Instant import java.util.concurrent.atomic.AtomicInteger - import akka.Done import akka.actor.ActorSystem import akka.http.javadsl.model.headers.HttpCredentials @@ -35,6 +34,7 @@ import org.bitcoins.crypto.{DoubleSha256DigestBE, Sha256Digest} import org.bitcoins.eclair.rpc.api._ import org.bitcoins.eclair.rpc.config.EclairInstance import org.bitcoins.eclair.rpc.network.NodeUri +import org.bitcoins.rpc.client.common.BitcoindVersion import org.bitcoins.rpc.util.AsyncUtil import org.slf4j.LoggerFactory import play.api.libs.json._ @@ -973,4 +973,9 @@ object EclairRpcClient { /** The current version we support of Eclair */ private[bitcoins] val version = "0.4.1" + + /** The bitcoind version that eclair is officially tested & supported with by ACINQ + * @see https://github.com/ACINQ/eclair/releases/tag/v0.4 + */ + val bitcoindV: BitcoindVersion = BitcoindVersion.V19 } diff --git a/testkit/src/main/scala/org/bitcoins/testkit/eclair/rpc/EclairRpcTestUtil.scala b/testkit/src/main/scala/org/bitcoins/testkit/eclair/rpc/EclairRpcTestUtil.scala index 4b8a2f4a9b..89e9b3a161 100644 --- a/testkit/src/main/scala/org/bitcoins/testkit/eclair/rpc/EclairRpcTestUtil.scala +++ b/testkit/src/main/scala/org/bitcoins/testkit/eclair/rpc/EclairRpcTestUtil.scala @@ -62,13 +62,41 @@ trait EclairRpcTestUtil extends BitcoinSLogger { BitcoindRpcTestUtil.startedBitcoindRpcClient(instance) } + /** Creates a bitcoind instance with the given parameters */ def bitcoindInstance( port: Int = RpcUtil.randomPort, rpcPort: Int = RpcUtil.randomPort, - zmqPort: Int = RpcUtil.randomPort): BitcoindInstance = { - BitcoindRpcTestUtil.v19Instance(port = port, - rpcPort = rpcPort, - zmqPort = zmqPort) + zmqPort: Int = RpcUtil.randomPort, + bitcoindV: BitcoindVersion = + EclairRpcClient.bitcoindV): BitcoindInstance = { + bitcoindV match { + 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") + } } //cribbed from https://github.com/Christewart/eclair/blob/bad02e2c0e8bd039336998d318a861736edfa0ad/eclair-core/src/test/scala/fr/acinq/eclair/integration/IntegrationSpec.scala#L140-L153 @@ -676,7 +704,9 @@ trait EclairRpcTestUtil extends BitcoinSLogger { EclairRpcTestUtil.awaitUntilChannelNormal(client1, chanId) } - def getBitcoindRpc(eclairRpcClient: EclairRpcClient)(implicit + def getBitcoindRpc( + eclairRpcClient: EclairRpcClient, + bitcoindVersion: BitcoindVersion = EclairRpcClient.bitcoindV)(implicit system: ActorSystem): BitcoindRpcClient = { val bitcoindRpc = { val instance = eclairRpcClient.instance @@ -686,7 +716,7 @@ trait EclairRpcTestUtil extends BitcoinSLogger { uri = new URI("http://localhost:18333"), rpcUri = auth.bitcoindRpcUri, authCredentials = auth.bitcoinAuthOpt.get, - binary = BitcoindRpcTestUtil.getBinary(BitcoindVersion.newest) + binary = BitcoindRpcTestUtil.getBinary(bitcoindVersion) ) BitcoindRpcClient.withActorSystem(bitcoindInstance) }