Skip to content

Commit

Permalink
Add more information to GetInfoResponse (#1344)
Browse files Browse the repository at this point in the history
Add version, color and features
  • Loading branch information
araspitzu authored Mar 10, 2020
1 parent 8b64e23 commit 65371cd
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 5 deletions.
8 changes: 6 additions & 2 deletions eclair-core/src/main/scala/fr/acinq/eclair/Eclair.scala
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ import scodec.bits.ByteVector
import scala.concurrent.duration._
import scala.concurrent.{ExecutionContext, Future}

case class GetInfoResponse(nodeId: PublicKey, alias: String, chainHash: ByteVector32, blockHeight: Int, publicAddresses: Seq[NodeAddress])
case class GetInfoResponse(version: String, nodeId: PublicKey, alias: String, color: String, features: String, chainHash: ByteVector32, blockHeight: Int, publicAddresses: Seq[NodeAddress])

case class AuditResponse(sent: Seq[PaymentSent], received: Seq[PaymentReceived], relayed: Seq[PaymentRelayed])

Expand Down Expand Up @@ -313,7 +313,11 @@ class EclairImpl(appKit: Kit) extends Eclair {
}

override def getInfoResponse()(implicit timeout: Timeout): Future[GetInfoResponse] = Future.successful(
GetInfoResponse(nodeId = appKit.nodeParams.nodeId,
GetInfoResponse(
version = Kit.getVersionLong,
color = appKit.nodeParams.color.toString,
features = appKit.nodeParams.features.toHex,
nodeId = appKit.nodeParams.nodeId,
alias = appKit.nodeParams.alias,
chainHash = appKit.nodeParams.chainHash,
blockHeight = appKit.nodeParams.currentBlockHeight.toInt,
Expand Down
12 changes: 11 additions & 1 deletion eclair-core/src/main/scala/fr/acinq/eclair/Setup.scala
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ class Setup(datadir: File,
implicit val sttpBackend = OkHttpFutureBackend()

logger.info(s"hello!")
logger.info(s"version=${getClass.getPackage.getImplementationVersion} commit=${getClass.getPackage.getSpecificationVersion}")
logger.info(s"version=${Kit.getVersion} commit=${Kit.getCommit}")
logger.info(s"datadir=${datadir.getCanonicalPath}")
logger.info(s"initializing secure random generator")
// this will force the secure random instance to initialize itself right now, making sure it doesn't hang later (see comment in package.scala)
Expand Down Expand Up @@ -376,6 +376,16 @@ case class Kit(nodeParams: NodeParams,
server: ActorRef,
wallet: EclairWallet)

object Kit {

def getVersionLong: String = s"$getVersion-$getCommit"

def getVersion: String = getClass.getPackage.getImplementationVersion

def getCommit: String = Option(getClass.getPackage.getSpecificationVersion).map(_.take(7)).getOrElse("null")

}

case object BitcoinZMQConnectionTimeoutException extends RuntimeException("could not connect to bitcoind using zeromq")

case object BitcoinRPCConnectionException extends RuntimeException("could not connect to bitcoind using json-rpc")
Expand Down
2 changes: 1 addition & 1 deletion eclair-node/src/test/resources/api/getinfo
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"nodeId":"03af0ed6052cf28d670665549bc86f4b721c9fdb309d40c58f5811f63966e005d0","alias":"alice","chainHash":"06226e46111a0b59caaf126043eb5bbf28c34f3a5e332a1fc7b2b73cf188910f","blockHeight":9999,"publicAddresses":["localhost:9731"]}
{"version":"1.0.0-SNAPSHOT-e3f1ec0","nodeId":"03af0ed6052cf28d670665549bc86f4b721c9fdb309d40c58f5811f63966e005d0","alias":"alice","color":"#000102","features":"","chainHash":"06226e46111a0b59caaf126043eb5bbf28c34f3a5e332a1fc7b2b73cf188910f","blockHeight":9999,"publicAddresses":["localhost:9731"]}
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ import fr.acinq.eclair.payment.relay.Relayer.UsableBalance
import fr.acinq.eclair.payment.send.PaymentInitiator.SendPaymentToRouteResponse
import fr.acinq.eclair.payment.{PaymentFailed, _}
import fr.acinq.eclair.router.{NetworkStats, Stats}
import fr.acinq.eclair.wire.NodeAddress
import fr.acinq.eclair.wire.{Color, NodeAddress}
import org.mockito.scalatest.IdiomaticMockito
import org.scalatest.{FunSuite, Matchers}
import scodec.bits._
Expand Down Expand Up @@ -168,6 +168,9 @@ class ApiServiceSpec extends FunSuite with ScalatestRouteTest with IdiomaticMock
val eclair = mock[Eclair]
val mockService = new MockService(eclair)
eclair.getInfoResponse()(any[Timeout]) returns Future.successful(GetInfoResponse(
version = "1.0.0-SNAPSHOT-e3f1ec0",
color = Color(0.toByte, 1.toByte, 2.toByte).toString,
features = "",
nodeId = aliceNodeId,
alias = "alice",
chainHash = ByteVector32(hex"06226e46111a0b59caaf126043eb5bbf28c34f3a5e332a1fc7b2b73cf188910f"),
Expand Down

0 comments on commit 65371cd

Please sign in to comment.