object EclairBench extends App with EclairRpcTestUtil
This test spins up one test node and NetworkSize sender nodes, which
open channels with the test one. Then each sender node sends
PaymentCount payments to the test node one by one. For each payment the
test node generates an invoice and the send node pays it using sendtonode
API call.
The test keeps track of times when a payment was initiated, when the payment ID was received, and when the corresponding web socket event was received. It writes all results into OutputFileName in CSV format.
- Alphabetic
- By Inheritance
- EclairBench
- EclairRpcTestUtil
- BitcoinSLogger
- App
- DelayedInit
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Type Members
- case class EclairNetwork(bitcoind: BitcoindRpcClient, testEclairNode: EclairRpcClient, networkEclairNodes: Vector[EclairRpcClient], channelIds: Vector[FundedChannelId]) extends Product with Serializable
- Definition Classes
- EclairRpcTestUtil
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- val ChannelAmount: MilliSatoshis
- val LogbackXml: None.type
- val NetworkSize: Int
- val OutputFileName: String
- val PaymentAmount: MilliSatoshis
- val PaymentCount: Int
- val SenderEclairCommit: Option[String]
- val SenderEclairVersion: Option[String]
- val TestEclairCommit: Option[String]
- val TestEclairVersion: Option[String]
- final def args: Array[String]
- Attributes
- protected
- Definition Classes
- App
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def awaitChannelOpened(client1: EclairApi, chanId: ChannelId)(implicit system: ActorSystem): Future[Unit]
- Definition Classes
- EclairRpcTestUtil
- def awaitEclairInSync(eclair: EclairRpcClient, bitcoind: BitcoindRpcClient)(implicit system: ActorSystem): Future[Unit]
Returns a
Future
that is completed when both eclair and bitcoind have the same block height Fails the future if they are not sychronized within the given timeout.Returns a
Future
that is completed when both eclair and bitcoind have the same block height Fails the future if they are not sychronized within the given timeout.- Definition Classes
- EclairRpcTestUtil
- def awaitUntilChannelClosing(client: EclairApi, chanId: ChannelId)(implicit system: ActorSystem): Future[Unit]
- Definition Classes
- EclairRpcTestUtil
- def awaitUntilChannelNormal(client: EclairApi, chanId: ChannelId)(implicit system: ActorSystem): Future[Unit]
Doesn't return until the given channelId is in the ChannelState.NORMAL for this EclairRpcClient
Doesn't return until the given channelId is in the ChannelState.NORMAL for this EclairRpcClient
- Definition Classes
- EclairRpcTestUtil
- def awaitUntilIncomingPaymentStatus[T <: IncomingPaymentStatus](client: EclairApi, paymentHash: Sha256Digest, interval: FiniteDuration = 1.second, maxTries: Int = 60)(implicit system: ActorSystem, tag: ClassTag[T]): Future[Unit]
- Definition Classes
- EclairRpcTestUtil
- def awaitUntilPaymentFailed(client: EclairApi, paymentId: PaymentId, duration: FiniteDuration = 1.second, maxTries: Int = 60, failFast: Boolean = false)(implicit system: ActorSystem): Future[Unit]
- Definition Classes
- EclairRpcTestUtil
- def awaitUntilPaymentSucceeded(client: EclairApi, paymentId: PaymentId, duration: FiniteDuration = 1.second, maxTries: Int = 60, failFast: Boolean = true)(implicit system: ActorSystem): Future[Unit]
- Definition Classes
- EclairRpcTestUtil
- def bitcoindInstance(port: Int = RpcUtil.randomPort, rpcPort: Int = RpcUtil.randomPort, zmqConfig: ZmqConfig = RpcUtil.zmqConfig, bitcoindV: BitcoindVersion = EclairRpcClient.bitcoindV)(implicit system: ActorSystem): BitcoindInstanceLocal
Creates a bitcoind instance with the given parameters
Creates a bitcoind instance with the given parameters
- Definition Classes
- EclairRpcTestUtil
- def cannonicalDatadir: File
- Definition Classes
- EclairRpcTestUtil
- def cannonicalEclairClient(eclairVersionOpt: Option[String] = None, eclairCommitOpt: Option[String] = None, binaryDirectory: Path = EclairRpcTestClient.sbtBinaryDirectory)(implicit system: ActorSystem): EclairRpcClient
- Definition Classes
- EclairRpcTestUtil
- def cannonicalEclairInstance(logbackXml: Option[String] = None): EclairInstanceLocal
Assumes bitcoind is running already and you have specified correct bindings in eclair.conf
Assumes bitcoind is running already and you have specified correct bindings in eclair.conf
- Definition Classes
- EclairRpcTestUtil
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- def connectLNNodes(client: EclairApi, otherClient: EclairApi)(implicit system: ActorSystem): Future[Unit]
- Definition Classes
- EclairRpcTestUtil
- def createNodeLink(channelAmount: MilliSatoshis)(implicit actorSystem: ActorSystem): Future[EclairNodes4]
Creates four Eclair nodes that are connected in the following manner:
Creates four Eclair nodes that are connected in the following manner:
node1 <-> node2 <-> node3 <-> node4
Each double sided arrow represents a P2P connection as well as a funded channel
- returns
A 4-tuple of the created nodes' respective EclairRpcClient
- Definition Classes
- EclairRpcTestUtil
- Note
Blocks the current thread
- def createNodeLink()(implicit actorSystem: ActorSystem): Future[EclairNodes4]
Creates four Eclair nodes that are connected in the following manner:
Creates four Eclair nodes that are connected in the following manner:
node1 <-> node2 <-> node3 <-> node4
Each double sided arrow represents a P2P connection as well as a funded channel
- returns
A 4-tuple of the created nodes' respective EclairRpcClient
- Definition Classes
- EclairRpcTestUtil
- Note
Blocks the current thread
- def createNodeLink(bitcoindRpcClient: BitcoindRpcClient, channelAmount: MilliSatoshis)(implicit actorSystem: ActorSystem): Future[EclairNodes4]
Creates four Eclair nodes that are connected in the following manner:
Creates four Eclair nodes that are connected in the following manner:
node1 <-> node2 <-> node3 <-> node4
Each double sided arrow represents a P2P connection as well as a funded channel
- returns
A 4-tuple of the created nodes' respective EclairRpcClient
- Definition Classes
- EclairRpcTestUtil
- Note
Blocks the current thread
- def createNodeLink(bitcoindRpcClient: BitcoindRpcClient)(implicit actorSystem: ActorSystem): Future[EclairNodes4]
Creates four Eclair nodes that are connected in the following manner:
Creates four Eclair nodes that are connected in the following manner:
node1 <-> node2 <-> node3 <-> node4
Each double sided arrow represents a P2P connection as well as a funded channel
- returns
A 4-tuple of the created nodes' respective EclairRpcClient
- Definition Classes
- EclairRpcTestUtil
- Note
Blocks the current thread
- def createNodePair(bitcoindRpcClientOpt: Option[BitcoindRpcClient], eclairVersionOpt1: Option[String] = None, eclairCommitOpt1: Option[String] = None, eclairVersionOpt2: Option[String] = None, eclairCommitOpt2: Option[String] = None, binaryDirectory: Path = EclairRpcTestClient.sbtBinaryDirectory)(implicit system: ActorSystem): Future[(EclairRpcClient, EclairRpcClient)]
Creates two Eclair nodes that are connected together and returns their respective EclairRpcClients
Creates two Eclair nodes that are connected together and returns their respective EclairRpcClients
- Definition Classes
- EclairRpcTestUtil
- def eclairDataDir(bitcoindRpcClient: BitcoindRpcClient, isCannonical: Boolean): File
- Definition Classes
- EclairRpcTestUtil
- def eclairInstance(bitcoindRpc: BitcoindRpcClient, logbackXml: Option[String] = None): EclairInstanceLocal
Starts the given bitcoind instance and then starts the eclair instance
Starts the given bitcoind instance and then starts the eclair instance
- Definition Classes
- EclairRpcTestUtil
- def eclairInstance(datadir: File, logbackXml: Option[String]): EclairInstanceLocal
- Definition Classes
- EclairRpcTestUtil
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- final val executionStart: Long
- Definition Classes
- App
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- def getBitcoindRpc(eclairRpcClient: EclairRpcClient, bitcoindVersion: BitcoindVersion = EclairRpcClient.bitcoindV)(implicit system: ActorSystem): BitcoindRpcClient
- Definition Classes
- EclairRpcTestUtil
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def logger: Logger
- Definition Classes
- BitcoinSLogger
- final def main(args: Array[String]): Unit
- Definition Classes
- App
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- def openAndConfirmChannel(client1F: Future[EclairRpcClient], client2F: Future[EclairRpcClient], amount: CurrencyUnit = Satoshis(10000000))(implicit system: ActorSystem): Future[ChannelId]
- Definition Classes
- EclairRpcTestUtil
- def openChannel(n1: EclairRpcClient, n2: EclairRpcClient, amt: CurrencyUnit = DEFAULT_CHANNEL_MSAT_AMT.toSatoshis, pushMSat: MilliSatoshis = MilliSatoshis(
DEFAULT_CHANNEL_MSAT_AMT.toLong / 2
))(implicit system: ActorSystem): Future[FundedChannelId]
Opens a channel from n1 -> n2
Opens a channel from n1 -> n2
- Definition Classes
- EclairRpcTestUtil
- def randomEclairClient(bitcoindRpcOpt: Option[BitcoindRpcClient] = None, eclairVersionOpt: Option[String] = None, eclairCommitOpt: Option[String] = None)(implicit system: ActorSystem): Future[EclairRpcClient]
- Definition Classes
- EclairRpcTestUtil
- def randomEclairDatadir(): File
- Definition Classes
- EclairRpcTestUtil
- def randomEclairInstance(bitcoindRpc: BitcoindRpcClient, logbackXml: Option[String] = None): EclairInstanceLocal
- Definition Classes
- EclairRpcTestUtil
- val res: Future[Unit]
- def runTests(network: EclairNetwork): Future[Vector[PaymentLogEntry]]
- def sendPayments(network: EclairNetwork, amount: MilliSatoshis, count: Int): Future[Vector[PaymentId]]
- def sendPayments(c1: EclairApi, c2: EclairApi, numPayments: Int = 5)(implicit ec: ExecutionContext): Future[Vector[PaymentId]]
Sends
numPayments
betweenc1
andc2
.Sends
numPayments
betweenc1
andc2
. No aspect of the payment (size, description, etc) should be assumed to have a certain value, this method is just for populating channel update history with something.- Definition Classes
- EclairRpcTestUtil
- def shutdown(eclairRpcClient: EclairRpcClient)(implicit system: ActorSystem): Future[Unit]
Shuts down an eclair daemon
Shuts down an eclair daemon
- Definition Classes
- EclairRpcTestUtil
- def startedBitcoindRpcClient(instanceOpt: Option[BitcoindInstanceLocal] = None)(implicit actorSystem: ActorSystem): Future[BitcoindRpcClient]
Makes a best effort to get a 0.16 bitcoind instance
Makes a best effort to get a 0.16 bitcoind instance
- Definition Classes
- EclairRpcTestUtil
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- implicit val system: ActorSystem
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- object Progress
- object EclairNetwork extends Serializable
- Definition Classes
- EclairRpcTestUtil