mirror of
https://github.com/ACINQ/eclair.git
synced 2025-03-13 11:35:47 +01:00
Refactor channel test helpers (#1682)
It's useful to separate channel state test methods in a dedicated trait instead of always bundling it with `FixtureTestSuite`. In particular, it was previously impossible to use both `BitcoindService` and `StateTestsHelperMethods` because `BitcoindService` doesn't work with fixtures (it leverages `beforeAll` and `afterAll` instead because launching one bitcoind instance per-test would be too expensive and useless).
This commit is contained in:
parent
d05318832f
commit
49023625b2
21 changed files with 147 additions and 144 deletions
|
@ -21,7 +21,7 @@ import akka.testkit.TestKit
|
|||
import org.scalatest.{BeforeAndAfterAll, TestSuite}
|
||||
|
||||
/**
|
||||
* This base class kills all actor between each tests.
|
||||
* This base class ensures the actor system is shutdown after the test suite ends.
|
||||
* Created by PM on 06/09/2016.
|
||||
*/
|
||||
abstract class TestKitBaseClass extends TestKit(ActorSystem("test")) with TestSuite with BeforeAndAfterAll {
|
|
@ -22,7 +22,7 @@ import fr.acinq.eclair.TestConstants.TestFeeEstimator
|
|||
import fr.acinq.eclair.blockchain.fee.{FeeTargets, FeeratePerKw, FeerateTolerance, OnChainFeeConf}
|
||||
import fr.acinq.eclair.channel.Commitments._
|
||||
import fr.acinq.eclair.channel.Helpers.Funding
|
||||
import fr.acinq.eclair.channel.states.StateTestsHelperMethods
|
||||
import fr.acinq.eclair.channel.states.StateTestsBase
|
||||
import fr.acinq.eclair.crypto.ShaChain
|
||||
import fr.acinq.eclair.transactions.CommitmentSpec
|
||||
import fr.acinq.eclair.transactions.Transactions.CommitTx
|
||||
|
@ -35,7 +35,7 @@ import scodec.bits.ByteVector
|
|||
import scala.concurrent.duration._
|
||||
import scala.util.Random
|
||||
|
||||
class CommitmentsSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with StateTestsHelperMethods {
|
||||
class CommitmentsSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with StateTestsBase {
|
||||
|
||||
type FixtureParam = SetupFixture
|
||||
|
||||
|
|
|
@ -16,9 +16,6 @@
|
|||
|
||||
package fr.acinq.eclair.channel
|
||||
|
||||
import java.util.UUID
|
||||
import java.util.concurrent.CountDownLatch
|
||||
|
||||
import akka.actor.{Actor, ActorLogging, ActorRef, Props}
|
||||
import akka.testkit.{TestFSMRef, TestProbe}
|
||||
import fr.acinq.bitcoin.ByteVector32
|
||||
|
@ -26,12 +23,12 @@ import fr.acinq.bitcoin.Crypto.PublicKey
|
|||
import fr.acinq.eclair.TestConstants.{Alice, Bob}
|
||||
import fr.acinq.eclair._
|
||||
import fr.acinq.eclair.blockchain._
|
||||
import fr.acinq.eclair.channel.states.StateTestsHelperMethods
|
||||
import fr.acinq.eclair.channel.states.StateTestsBase
|
||||
import fr.acinq.eclair.payment.OutgoingPacket.Upstream
|
||||
import fr.acinq.eclair.payment._
|
||||
import fr.acinq.eclair.payment.receive.MultiPartHandler.ReceivePayment
|
||||
import fr.acinq.eclair.payment.receive.PaymentHandler
|
||||
import fr.acinq.eclair.payment.relay.Relayer
|
||||
import fr.acinq.eclair.payment.OutgoingPacket.Upstream
|
||||
import fr.acinq.eclair.router.Router.ChannelHop
|
||||
import fr.acinq.eclair.wire.Onion.FinalLegacyPayload
|
||||
import fr.acinq.eclair.wire._
|
||||
|
@ -39,6 +36,8 @@ import grizzled.slf4j.Logging
|
|||
import org.scalatest.funsuite.FixtureAnyFunSuiteLike
|
||||
import org.scalatest.{Outcome, Tag}
|
||||
|
||||
import java.util.UUID
|
||||
import java.util.concurrent.CountDownLatch
|
||||
import scala.collection.immutable.Nil
|
||||
import scala.concurrent.duration._
|
||||
import scala.util.Random
|
||||
|
@ -47,7 +46,7 @@ import scala.util.Random
|
|||
* Created by PM on 05/07/2016.
|
||||
*/
|
||||
|
||||
class FuzzySpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with StateTestsHelperMethods with Logging {
|
||||
class FuzzySpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with StateTestsBase with Logging {
|
||||
|
||||
case class FixtureParam(alice: TestFSMRef[State, Data, Channel], bob: TestFSMRef[State, Data, Channel], pipe: ActorRef, relayerA: ActorRef, relayerB: ActorRef, paymentHandlerA: ActorRef, paymentHandlerB: ActorRef)
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ import fr.acinq.bitcoin.Crypto.PublicKey
|
|||
import fr.acinq.bitcoin._
|
||||
import fr.acinq.eclair.TestConstants.Alice
|
||||
import fr.acinq.eclair.blockchain.WatchEventSpent
|
||||
import fr.acinq.eclair.channel.states.StateTestsHelperMethods
|
||||
import fr.acinq.eclair.channel.states.StateTestsBase
|
||||
import fr.acinq.eclair.crypto.Generators
|
||||
import fr.acinq.eclair.crypto.keymanager.ChannelKeyManager
|
||||
import fr.acinq.eclair.transactions.Scripts
|
||||
|
@ -17,7 +17,7 @@ import org.scalatest.funsuite.FixtureAnyFunSuiteLike
|
|||
|
||||
import scala.concurrent.duration._
|
||||
|
||||
class RecoverySpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with StateTestsHelperMethods {
|
||||
class RecoverySpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with StateTestsBase {
|
||||
|
||||
type FixtureParam = SetupFixture
|
||||
|
||||
|
|
|
@ -24,7 +24,6 @@ import fr.acinq.eclair.TestConstants.{Alice, Bob, TestFeeEstimator}
|
|||
import fr.acinq.eclair.blockchain._
|
||||
import fr.acinq.eclair.blockchain.fee.FeeTargets
|
||||
import fr.acinq.eclair.channel._
|
||||
import fr.acinq.eclair.io.Peer
|
||||
import fr.acinq.eclair.payment.OutgoingPacket
|
||||
import fr.acinq.eclair.payment.OutgoingPacket.Upstream
|
||||
import fr.acinq.eclair.router.Router.ChannelHop
|
||||
|
@ -39,7 +38,29 @@ import scala.concurrent.duration._
|
|||
/**
|
||||
* Created by PM on 23/08/2016.
|
||||
*/
|
||||
trait StateTestsHelperMethods extends TestKitBase with FixtureTestSuite with ParallelTestExecution {
|
||||
trait StateTestsBase extends StateTestsHelperMethods with FixtureTestSuite with ParallelTestExecution {
|
||||
|
||||
implicit class ChannelWithTestFeeConf(a: TestFSMRef[State, Data, Channel]) {
|
||||
// @formatter:off
|
||||
def feeEstimator: TestFeeEstimator = a.underlyingActor.nodeParams.onChainFeeConf.feeEstimator.asInstanceOf[TestFeeEstimator]
|
||||
def feeTargets: FeeTargets = a.underlyingActor.nodeParams.onChainFeeConf.feeTargets
|
||||
// @formatter:on
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
object StateTestsTags {
|
||||
/** If set, channels will use option_static_remotekey. */
|
||||
val StaticRemoteKey = "static_remotekey"
|
||||
/** If set, channels will use option_anchor_outputs. */
|
||||
val AnchorOutputs = "anchor_outputs"
|
||||
/** If set, channels will be public (otherwise we don't announce them by default). */
|
||||
val ChannelsPublic = "channels_public"
|
||||
/** If set, no amount will be pushed when opening a channel (by default we push a small amount). */
|
||||
val NoPushMsat = "no_push_msat"
|
||||
}
|
||||
|
||||
trait StateTestsHelperMethods extends TestKitBase {
|
||||
|
||||
case class SetupFixture(alice: TestFSMRef[State, Data, Channel],
|
||||
bob: TestFSMRef[State, Data, Channel],
|
||||
|
@ -77,12 +98,12 @@ trait StateTestsHelperMethods extends TestKitBase with FixtureTestSuite with Par
|
|||
|
||||
def reachNormal(setup: SetupFixture, tags: Set[String] = Set.empty): Unit = {
|
||||
import setup._
|
||||
val channelFlags = if (tags.contains("channels_public")) ChannelFlags.AnnounceChannel else ChannelFlags.Empty
|
||||
val pushMsat = if (tags.contains("no_push_msat")) 0.msat else TestConstants.pushMsat
|
||||
val (aliceParams, bobParams, channelVersion) = if (tags.contains("anchor_outputs")) {
|
||||
val channelFlags = if (tags.contains(StateTestsTags.ChannelsPublic)) ChannelFlags.AnnounceChannel else ChannelFlags.Empty
|
||||
val pushMsat = if (tags.contains(StateTestsTags.NoPushMsat)) 0.msat else TestConstants.pushMsat
|
||||
val (aliceParams, bobParams, channelVersion) = if (tags.contains(StateTestsTags.AnchorOutputs)) {
|
||||
val features = Features(Set(ActivatedFeature(Features.StaticRemoteKey, FeatureSupport.Mandatory), ActivatedFeature(Features.AnchorOutputs, FeatureSupport.Optional)))
|
||||
(Alice.channelParams.copy(features = features), Bob.channelParams.copy(features = features), ChannelVersion.ANCHOR_OUTPUTS)
|
||||
} else if (tags.contains("static_remotekey")) {
|
||||
} else if (tags.contains(StateTestsTags.StaticRemoteKey)) {
|
||||
val features = Features(Set(ActivatedFeature(Features.StaticRemoteKey, FeatureSupport.Optional)))
|
||||
val aliceParams = Alice.channelParams.copy(features = features, walletStaticPaymentBasepoint = Some(Helpers.getWalletPaymentBasepoint(wallet)))
|
||||
val bobParams = Bob.channelParams.copy(features = features, walletStaticPaymentBasepoint = Some(Helpers.getWalletPaymentBasepoint(wallet)))
|
||||
|
@ -240,19 +261,19 @@ trait StateTestsHelperMethods extends TestKitBase with FixtureTestSuite with Par
|
|||
s2blockchain.expectMsgAllOf(localCommitPublished.claimHtlcDelayedTxs.map(PublishAsap): _*)
|
||||
|
||||
// we watch the confirmation of the "final" transactions that send funds to our wallets (main delayed output and 2nd stage htlc transactions)
|
||||
assert(s2blockchain.expectMsgType[WatchConfirmed].event === BITCOIN_TX_CONFIRMED(commitTx))
|
||||
localCommitPublished.claimMainDelayedOutputTx.foreach(tx => assert(s2blockchain.expectMsgType[WatchConfirmed].event === BITCOIN_TX_CONFIRMED(tx)))
|
||||
assert(localCommitPublished.claimHtlcDelayedTxs.map(_ => s2blockchain.expectMsgType[WatchConfirmed].event).toSet === localCommitPublished.claimHtlcDelayedTxs.map(BITCOIN_TX_CONFIRMED).toSet)
|
||||
assert(s2blockchain.expectMsgType[WatchConfirmed].event == BITCOIN_TX_CONFIRMED(commitTx))
|
||||
localCommitPublished.claimMainDelayedOutputTx.foreach(tx => assert(s2blockchain.expectMsgType[WatchConfirmed].event == BITCOIN_TX_CONFIRMED(tx)))
|
||||
assert(localCommitPublished.claimHtlcDelayedTxs.map(_ => s2blockchain.expectMsgType[WatchConfirmed].event).toSet == localCommitPublished.claimHtlcDelayedTxs.map(BITCOIN_TX_CONFIRMED).toSet)
|
||||
|
||||
// we watch outputs of the commitment tx that both parties may spend
|
||||
val htlcOutputIndexes = (localCommitPublished.htlcSuccessTxs ++ localCommitPublished.htlcTimeoutTxs).map(tx => tx.txIn.head.outPoint.index)
|
||||
val spentWatches = htlcOutputIndexes.map(_ => s2blockchain.expectMsgType[WatchSpent])
|
||||
spentWatches.foreach(ws => assert(ws.event === BITCOIN_OUTPUT_SPENT))
|
||||
spentWatches.foreach(ws => assert(ws.txId === commitTx.txid))
|
||||
assert(spentWatches.map(_.outputIndex).toSet === htlcOutputIndexes.toSet)
|
||||
spentWatches.foreach(ws => assert(ws.event == BITCOIN_OUTPUT_SPENT))
|
||||
spentWatches.foreach(ws => assert(ws.txId == commitTx.txid))
|
||||
assert(spentWatches.map(_.outputIndex).toSet == htlcOutputIndexes.toSet)
|
||||
s2blockchain.expectNoMsg(1 second)
|
||||
|
||||
// s is now in CLOSING state with txes pending for confirmation before going in CLOSED state
|
||||
// s is now in CLOSING state with txs pending for confirmation before going in CLOSED state
|
||||
s.stateData.asInstanceOf[DATA_CLOSING].localCommitPublished.get
|
||||
}
|
||||
|
||||
|
@ -274,38 +295,26 @@ trait StateTestsHelperMethods extends TestKitBase with FixtureTestSuite with Par
|
|||
s2blockchain.expectMsg(PublishAsap(tx))
|
||||
})
|
||||
// all htlcs success/timeout should be claimed
|
||||
val claimHtlcTxes = remoteCommitPublished.claimHtlcSuccessTxs ++ remoteCommitPublished.claimHtlcTimeoutTxs
|
||||
claimHtlcTxes.foreach(tx => Transaction.correctlySpends(tx, rCommitTx :: Nil, ScriptFlags.STANDARD_SCRIPT_VERIFY_FLAGS))
|
||||
s2blockchain.expectMsgAllOf(claimHtlcTxes.map(PublishAsap): _*)
|
||||
val claimHtlcTxs = remoteCommitPublished.claimHtlcSuccessTxs ++ remoteCommitPublished.claimHtlcTimeoutTxs
|
||||
claimHtlcTxs.foreach(tx => Transaction.correctlySpends(tx, rCommitTx :: Nil, ScriptFlags.STANDARD_SCRIPT_VERIFY_FLAGS))
|
||||
s2blockchain.expectMsgAllOf(claimHtlcTxs.map(PublishAsap): _*)
|
||||
|
||||
// we watch the confirmation of the "final" transactions that send funds to our wallets (main delayed output and 2nd stage htlc transactions)
|
||||
assert(s2blockchain.expectMsgType[WatchConfirmed].event === BITCOIN_TX_CONFIRMED(rCommitTx))
|
||||
remoteCommitPublished.claimMainOutputTx.foreach(tx => assert(s2blockchain.expectMsgType[WatchConfirmed].event === BITCOIN_TX_CONFIRMED(tx)))
|
||||
assert(s2blockchain.expectMsgType[WatchConfirmed].event == BITCOIN_TX_CONFIRMED(rCommitTx))
|
||||
remoteCommitPublished.claimMainOutputTx.foreach(tx => assert(s2blockchain.expectMsgType[WatchConfirmed].event == BITCOIN_TX_CONFIRMED(tx)))
|
||||
|
||||
// we watch outputs of the commitment tx that both parties may spend
|
||||
val htlcOutputIndexes = claimHtlcTxes.map(tx => tx.txIn.head.outPoint.index)
|
||||
val htlcOutputIndexes = claimHtlcTxs.map(tx => tx.txIn.head.outPoint.index)
|
||||
val spentWatches = htlcOutputIndexes.map(_ => s2blockchain.expectMsgType[WatchSpent])
|
||||
spentWatches.foreach(ws => assert(ws.event === BITCOIN_OUTPUT_SPENT))
|
||||
spentWatches.foreach(ws => assert(ws.txId === rCommitTx.txid))
|
||||
assert(spentWatches.map(_.outputIndex).toSet === htlcOutputIndexes.toSet)
|
||||
spentWatches.foreach(ws => assert(ws.event == BITCOIN_OUTPUT_SPENT))
|
||||
spentWatches.foreach(ws => assert(ws.txId == rCommitTx.txid))
|
||||
assert(spentWatches.map(_.outputIndex).toSet == htlcOutputIndexes.toSet)
|
||||
s2blockchain.expectNoMsg(1 second)
|
||||
|
||||
// s is now in CLOSING state with txes pending for confirmation before going in CLOSED state
|
||||
// s is now in CLOSING state with txs pending for confirmation before going in CLOSED state
|
||||
getRemoteCommitPublished(s.stateData.asInstanceOf[DATA_CLOSING]).get
|
||||
}
|
||||
|
||||
def channelId(a: TestFSMRef[State, Data, Channel]): ByteVector32 = a.stateData.channelId
|
||||
|
||||
// @formatter:off
|
||||
implicit class ChannelWithTestFeeConf(a: TestFSMRef[State, Data, Channel]) {
|
||||
def feeEstimator: TestFeeEstimator = a.underlyingActor.nodeParams.onChainFeeConf.feeEstimator.asInstanceOf[TestFeeEstimator]
|
||||
def feeTargets: FeeTargets = a.underlyingActor.nodeParams.onChainFeeConf.feeTargets
|
||||
}
|
||||
|
||||
implicit class PeerWithTestFeeConf(a: TestFSMRef[Peer.State, Peer.Data, Peer]) {
|
||||
def feeEstimator: TestFeeEstimator = a.underlyingActor.nodeParams.onChainFeeConf.feeEstimator.asInstanceOf[TestFeeEstimator]
|
||||
def feeTargets: FeeTargets = a.underlyingActor.nodeParams.onChainFeeConf.feeTargets
|
||||
}
|
||||
// @formatter:on
|
||||
|
||||
}
|
||||
}
|
|
@ -24,8 +24,8 @@ import fr.acinq.eclair.TestConstants.{Alice, Bob}
|
|||
import fr.acinq.eclair.blockchain.fee.FeeratePerKw
|
||||
import fr.acinq.eclair.blockchain.{MakeFundingTxResponse, TestWallet}
|
||||
import fr.acinq.eclair.channel.Channel.TickChannelOpenTimeout
|
||||
import fr.acinq.eclair.channel.states.StateTestsHelperMethods
|
||||
import fr.acinq.eclair.channel.{WAIT_FOR_FUNDING_INTERNAL, _}
|
||||
import fr.acinq.eclair.channel._
|
||||
import fr.acinq.eclair.channel.states.StateTestsBase
|
||||
import fr.acinq.eclair.wire.{AcceptChannel, ChannelTlv, Error, Init, OpenChannel, TlvStream}
|
||||
import fr.acinq.eclair.{ActivatedFeature, CltvExpiryDelta, Features, TestConstants, TestKitBaseClass}
|
||||
import org.scalatest.funsuite.FixtureAnyFunSuiteLike
|
||||
|
@ -39,7 +39,7 @@ import scala.concurrent.{Future, Promise}
|
|||
* Created by PM on 05/07/2016.
|
||||
*/
|
||||
|
||||
class WaitForAcceptChannelStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with StateTestsHelperMethods {
|
||||
class WaitForAcceptChannelStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with StateTestsBase {
|
||||
|
||||
case class FixtureParam(alice: TestFSMRef[State, Data, Channel], alice2bob: TestProbe, bob2alice: TestProbe, alice2blockchain: TestProbe)
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@ import fr.acinq.eclair.Features.Wumbo
|
|||
import fr.acinq.eclair.TestConstants.{Alice, Bob}
|
||||
import fr.acinq.eclair.blockchain.fee.FeeratePerKw
|
||||
import fr.acinq.eclair.channel._
|
||||
import fr.acinq.eclair.channel.states.StateTestsHelperMethods
|
||||
import fr.acinq.eclair.channel.states.StateTestsBase
|
||||
import fr.acinq.eclair.wire.{AcceptChannel, ChannelTlv, Error, Init, OpenChannel, TlvStream}
|
||||
import fr.acinq.eclair.{ActivatedFeature, CltvExpiryDelta, Features, MilliSatoshiLong, TestConstants, TestKitBaseClass, ToMilliSatoshiConversion}
|
||||
import org.scalatest.funsuite.FixtureAnyFunSuiteLike
|
||||
|
@ -36,7 +36,7 @@ import scala.concurrent.duration._
|
|||
* Created by PM on 05/07/2016.
|
||||
*/
|
||||
|
||||
class WaitForOpenChannelStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with StateTestsHelperMethods {
|
||||
class WaitForOpenChannelStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with StateTestsBase {
|
||||
|
||||
case class FixtureParam(bob: TestFSMRef[State, Data, Channel], alice2bob: TestProbe, bob2alice: TestProbe, bob2blockchain: TestProbe)
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ import fr.acinq.eclair.TestConstants.{Alice, Bob}
|
|||
import fr.acinq.eclair.blockchain.fee.FeeratePerKw
|
||||
import fr.acinq.eclair.blockchain.{MakeFundingTxResponse, TestWallet}
|
||||
import fr.acinq.eclair.channel._
|
||||
import fr.acinq.eclair.channel.states.StateTestsHelperMethods
|
||||
import fr.acinq.eclair.channel.states.StateTestsBase
|
||||
import fr.acinq.eclair.wire._
|
||||
import fr.acinq.eclair.{TestConstants, TestKitBaseClass}
|
||||
import org.scalatest.Outcome
|
||||
|
@ -33,16 +33,16 @@ import scala.concurrent.duration._
|
|||
import scala.concurrent.{Future, Promise}
|
||||
|
||||
/**
|
||||
* Created by PM on 05/07/2016.
|
||||
*/
|
||||
* Created by PM on 05/07/2016.
|
||||
*/
|
||||
|
||||
class WaitForFundingCreatedInternalStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with StateTestsHelperMethods {
|
||||
class WaitForFundingCreatedInternalStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with StateTestsBase {
|
||||
|
||||
case class FixtureParam(alice: TestFSMRef[State, Data, Channel], alice2bob: TestProbe, bob2alice: TestProbe, alice2blockchain: TestProbe)
|
||||
|
||||
override def withFixture(test: OneArgTest): Outcome = {
|
||||
val noopWallet = new TestWallet {
|
||||
override def makeFundingTx(pubkeyScript: ByteVector, amount: Satoshi, feeRatePerKw: FeeratePerKw): Future[MakeFundingTxResponse] = Promise[MakeFundingTxResponse].future // will never be completed
|
||||
override def makeFundingTx(pubkeyScript: ByteVector, amount: Satoshi, feeRatePerKw: FeeratePerKw): Future[MakeFundingTxResponse] = Promise[MakeFundingTxResponse].future // will never be completed
|
||||
}
|
||||
val setup = init(wallet = noopWallet)
|
||||
import setup._
|
||||
|
|
|
@ -22,7 +22,7 @@ import fr.acinq.bitcoin.{ByteVector32, SatoshiLong}
|
|||
import fr.acinq.eclair.TestConstants.{Alice, Bob}
|
||||
import fr.acinq.eclair.blockchain._
|
||||
import fr.acinq.eclair.channel._
|
||||
import fr.acinq.eclair.channel.states.StateTestsHelperMethods
|
||||
import fr.acinq.eclair.channel.states.StateTestsBase
|
||||
import fr.acinq.eclair.transactions.Transactions
|
||||
import fr.acinq.eclair.wire._
|
||||
import fr.acinq.eclair.{TestConstants, TestKitBaseClass, ToMilliSatoshiConversion}
|
||||
|
@ -35,7 +35,7 @@ import scala.concurrent.duration._
|
|||
* Created by PM on 05/07/2016.
|
||||
*/
|
||||
|
||||
class WaitForFundingCreatedStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with StateTestsHelperMethods {
|
||||
class WaitForFundingCreatedStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with StateTestsBase {
|
||||
|
||||
case class FixtureParam(bob: TestFSMRef[State, Data, Channel], alice2bob: TestProbe, bob2alice: TestProbe, bob2blockchain: TestProbe)
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ import fr.acinq.eclair.TestConstants.{Alice, Bob}
|
|||
import fr.acinq.eclair.blockchain._
|
||||
import fr.acinq.eclair.channel.Channel.TickChannelOpenTimeout
|
||||
import fr.acinq.eclair.channel._
|
||||
import fr.acinq.eclair.channel.states.StateTestsHelperMethods
|
||||
import fr.acinq.eclair.channel.states.StateTestsBase
|
||||
import fr.acinq.eclair.wire.{AcceptChannel, Error, FundingCreated, FundingSigned, Init, OpenChannel}
|
||||
import fr.acinq.eclair.{TestConstants, TestKitBaseClass}
|
||||
import org.scalatest.Outcome
|
||||
|
@ -31,10 +31,10 @@ import org.scalatest.funsuite.FixtureAnyFunSuiteLike
|
|||
import scala.concurrent.duration._
|
||||
|
||||
/**
|
||||
* Created by PM on 05/07/2016.
|
||||
*/
|
||||
* Created by PM on 05/07/2016.
|
||||
*/
|
||||
|
||||
class WaitForFundingSignedStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with StateTestsHelperMethods {
|
||||
class WaitForFundingSignedStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with StateTestsBase {
|
||||
|
||||
case class FixtureParam(alice: TestFSMRef[State, Data, Channel], alice2bob: TestProbe, bob2alice: TestProbe, alice2blockchain: TestProbe)
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ import fr.acinq.bitcoin.{ByteVector32, SatoshiLong, Script, Transaction}
|
|||
import fr.acinq.eclair.TestConstants.{Alice, Bob}
|
||||
import fr.acinq.eclair.blockchain._
|
||||
import fr.acinq.eclair.channel._
|
||||
import fr.acinq.eclair.channel.states.StateTestsHelperMethods
|
||||
import fr.acinq.eclair.channel.states.StateTestsBase
|
||||
import fr.acinq.eclair.transactions.Scripts.multiSig2of2
|
||||
import fr.acinq.eclair.wire.{AcceptChannel, Error, FundingCreated, FundingLocked, FundingSigned, Init, OpenChannel}
|
||||
import fr.acinq.eclair.{TestConstants, TestKitBaseClass, randomKey}
|
||||
|
@ -34,7 +34,7 @@ import scala.concurrent.duration._
|
|||
* Created by PM on 05/07/2016.
|
||||
*/
|
||||
|
||||
class WaitForFundingConfirmedStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with StateTestsHelperMethods {
|
||||
class WaitForFundingConfirmedStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with StateTestsBase {
|
||||
|
||||
case class FixtureParam(alice: TestFSMRef[State, Data, Channel], bob: TestFSMRef[State, Data, Channel], alice2bob: TestProbe, bob2alice: TestProbe, alice2blockchain: TestProbe)
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ import fr.acinq.bitcoin.{ByteVector32, Transaction}
|
|||
import fr.acinq.eclair.TestConstants.{Alice, Bob}
|
||||
import fr.acinq.eclair.blockchain._
|
||||
import fr.acinq.eclair.channel._
|
||||
import fr.acinq.eclair.channel.states.StateTestsHelperMethods
|
||||
import fr.acinq.eclair.channel.states.StateTestsBase
|
||||
import fr.acinq.eclair.wire._
|
||||
import fr.acinq.eclair.{MilliSatoshiLong, TestConstants, TestKitBaseClass}
|
||||
import org.scalatest.Outcome
|
||||
|
@ -33,7 +33,7 @@ import scala.concurrent.duration._
|
|||
* Created by PM on 05/07/2016.
|
||||
*/
|
||||
|
||||
class WaitForFundingLockedStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with StateTestsHelperMethods {
|
||||
class WaitForFundingLockedStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with StateTestsBase {
|
||||
|
||||
val initialRelayFees = (1000 msat, 100)
|
||||
|
||||
|
|
|
@ -27,8 +27,8 @@ import fr.acinq.eclair._
|
|||
import fr.acinq.eclair.blockchain._
|
||||
import fr.acinq.eclair.blockchain.fee.{FeeratePerKw, FeeratesPerKw}
|
||||
import fr.acinq.eclair.channel.Channel._
|
||||
import fr.acinq.eclair.channel.states.StateTestsHelperMethods
|
||||
import fr.acinq.eclair.channel.{ChannelErrorOccurred, _}
|
||||
import fr.acinq.eclair.channel._
|
||||
import fr.acinq.eclair.channel.states.{StateTestsBase, StateTestsTags}
|
||||
import fr.acinq.eclair.crypto.Sphinx
|
||||
import fr.acinq.eclair.io.Peer
|
||||
import fr.acinq.eclair.payment.OutgoingPacket
|
||||
|
@ -48,7 +48,7 @@ import scala.concurrent.duration._
|
|||
* Created by PM on 05/07/2016.
|
||||
*/
|
||||
|
||||
class NormalStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with StateTestsHelperMethods {
|
||||
class NormalStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with StateTestsBase {
|
||||
|
||||
type FixtureParam = SetupFixture
|
||||
|
||||
|
@ -198,7 +198,7 @@ class NormalStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
bob2alice.expectNoMsg(200 millis)
|
||||
}
|
||||
|
||||
test("recv CMD_ADD_HTLC (increasing balance but still below reserve)", Tag("no_push_msat")) { f =>
|
||||
test("recv CMD_ADD_HTLC (increasing balance but still below reserve)", Tag(StateTestsTags.NoPushMsat)) { f =>
|
||||
import f._
|
||||
val sender = TestProbe()
|
||||
// channel starts with all funds on alice's side, alice sends some funds to bob, but not enough to make it go above reserve
|
||||
|
@ -219,7 +219,7 @@ class NormalStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
alice2bob.expectNoMsg(200 millis)
|
||||
}
|
||||
|
||||
test("recv CMD_ADD_HTLC (insufficient funds) (anchor outputs)", Tag("anchor_outputs")) { f =>
|
||||
test("recv CMD_ADD_HTLC (insufficient funds) (anchor outputs)", Tag(StateTestsTags.AnchorOutputs)) { f =>
|
||||
import f._
|
||||
val sender = TestProbe()
|
||||
val initialState = alice.stateData.asInstanceOf[DATA_NORMAL]
|
||||
|
@ -488,7 +488,7 @@ class NormalStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
bob2blockchain.expectMsgType[WatchConfirmed]
|
||||
}
|
||||
|
||||
test("recv UpdateAddHtlc (insufficient funds w/ pending htlcs) (anchor outputs)", Tag("anchor_outputs")) { f =>
|
||||
test("recv UpdateAddHtlc (insufficient funds w/ pending htlcs) (anchor outputs)", Tag(StateTestsTags.AnchorOutputs)) { f =>
|
||||
import f._
|
||||
val tx = bob.stateData.asInstanceOf[DATA_NORMAL].commitments.localCommit.publishableTxs.commitTx.tx
|
||||
alice2bob.forward(bob, UpdateAddHtlc(ByteVector32.Zeroes, 0, 400000000 msat, randomBytes32, CltvExpiryDelta(144).toCltvExpiry(currentBlockHeight), TestConstants.emptyOnionPacket))
|
||||
|
@ -722,7 +722,7 @@ class NormalStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
assert(alice.stateData.asInstanceOf[DATA_NORMAL].commitments.remoteNextCommitInfo === Left(waitForRevocation.copy(reSignAsap = true)))
|
||||
}
|
||||
|
||||
test("recv CMD_SIGN (going above reserve)", Tag("no_push_msat")) { f =>
|
||||
test("recv CMD_SIGN (going above reserve)", Tag(StateTestsTags.NoPushMsat)) { f =>
|
||||
import f._
|
||||
val sender = TestProbe()
|
||||
// channel starts with all funds on alice's side, so channel will be initially disabled on bob's side
|
||||
|
@ -1149,11 +1149,11 @@ class NormalStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
assert(initialToRemoteScript == aliceToRemoteScript())
|
||||
}
|
||||
|
||||
test("recv RevokeAndAck (one htlc sent, static_remotekey)", Tag("static_remotekey")) {
|
||||
test("recv RevokeAndAck (one htlc sent, static_remotekey)", Tag(StateTestsTags.StaticRemoteKey)) {
|
||||
testRevokeAndAckHtlcStaticRemoteKey _
|
||||
}
|
||||
|
||||
test("recv RevokeAndAck (one htlc sent, anchor outputs)", Tag("anchor_outputs")) {
|
||||
test("recv RevokeAndAck (one htlc sent, anchor outputs)", Tag(StateTestsTags.AnchorOutputs)) {
|
||||
testRevokeAndAckHtlcStaticRemoteKey _
|
||||
}
|
||||
|
||||
|
@ -1191,11 +1191,11 @@ class NormalStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
testReceiveCmdFulfillHtlc _
|
||||
}
|
||||
|
||||
test("recv CMD_FULFILL_HTLC (static_remotekey)", Tag("static_remotekey")) {
|
||||
test("recv CMD_FULFILL_HTLC (static_remotekey)", Tag(StateTestsTags.StaticRemoteKey)) {
|
||||
testReceiveCmdFulfillHtlc _
|
||||
}
|
||||
|
||||
test("recv CMD_FULFILL_HTLC (anchor_outputs)", Tag("anchor_outputs")) {
|
||||
test("recv CMD_FULFILL_HTLC (anchor_outputs)", Tag(StateTestsTags.AnchorOutputs)) {
|
||||
testReceiveCmdFulfillHtlc _
|
||||
}
|
||||
|
||||
|
@ -1280,7 +1280,7 @@ class NormalStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
testUpdateFulfillHtlc _
|
||||
}
|
||||
|
||||
test("recv UpdateFulfillHtlc (anchor_outputs)", Tag("anchor_outputs")) {
|
||||
test("recv UpdateFulfillHtlc (anchor_outputs)", Tag(StateTestsTags.AnchorOutputs)) {
|
||||
testUpdateFulfillHtlc _
|
||||
}
|
||||
|
||||
|
@ -1356,11 +1356,11 @@ class NormalStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
testCmdFailHtlc _
|
||||
}
|
||||
|
||||
test("recv CMD_FAIL_HTLC (static_remotekey)", Tag("static_remotekey")) {
|
||||
test("recv CMD_FAIL_HTLC (static_remotekey)", Tag(StateTestsTags.StaticRemoteKey)) {
|
||||
testCmdFailHtlc _
|
||||
}
|
||||
|
||||
test("recv CMD_FAIL_HTLC (anchor_outputs)", Tag("anchor_outputs")) {
|
||||
test("recv CMD_FAIL_HTLC (anchor_outputs)", Tag(StateTestsTags.AnchorOutputs)) {
|
||||
testCmdFailHtlc _
|
||||
}
|
||||
|
||||
|
@ -1452,11 +1452,11 @@ class NormalStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
testUpdateFailHtlc _
|
||||
}
|
||||
|
||||
test("recv UpdateFailHtlc (static_remotekey)", Tag("static_remotekey")) {
|
||||
test("recv UpdateFailHtlc (static_remotekey)", Tag(StateTestsTags.StaticRemoteKey)) {
|
||||
testUpdateFailHtlc _
|
||||
}
|
||||
|
||||
test("recv UpdateFailHtlc (anchor_outputs)", Tag("anchor_outputs")) {
|
||||
test("recv UpdateFailHtlc (anchor_outputs)", Tag(StateTestsTags.AnchorOutputs)) {
|
||||
testUpdateFailHtlc _
|
||||
}
|
||||
|
||||
|
@ -1563,7 +1563,7 @@ class NormalStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
testCmdUpdateFee _
|
||||
}
|
||||
|
||||
test("recv CMD_UPDATE_FEE (anchor outputs)", Tag("anchor_outputs")) {
|
||||
test("recv CMD_UPDATE_FEE (anchor outputs)", Tag(StateTestsTags.AnchorOutputs)) {
|
||||
testCmdUpdateFee _
|
||||
}
|
||||
|
||||
|
@ -1597,7 +1597,7 @@ class NormalStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
awaitCond(bob.stateData == initialData.copy(commitments = initialData.commitments.copy(remoteChanges = initialData.commitments.remoteChanges.copy(proposed = initialData.commitments.remoteChanges.proposed :+ fee), remoteNextHtlcId = 0)))
|
||||
}
|
||||
|
||||
test("recv UpdateFee (anchor outputs)", Tag("anchor_outputs")) { f =>
|
||||
test("recv UpdateFee (anchor outputs)", Tag(StateTestsTags.AnchorOutputs)) { f =>
|
||||
import f._
|
||||
val initialData = bob.stateData.asInstanceOf[DATA_NORMAL]
|
||||
val fee = UpdateFee(ByteVector32.Zeroes, FeeratePerKw(8000 sat))
|
||||
|
@ -1645,7 +1645,7 @@ class NormalStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
bob2blockchain.expectMsgType[WatchConfirmed]
|
||||
}
|
||||
|
||||
test("recv UpdateFee (sender can't afford it) (anchor outputs)", Tag("anchor_outputs")) { f =>
|
||||
test("recv UpdateFee (sender can't afford it) (anchor outputs)", Tag(StateTestsTags.AnchorOutputs)) { f =>
|
||||
import f._
|
||||
val tx = bob.stateData.asInstanceOf[DATA_NORMAL].commitments.localCommit.publishableTxs.commitTx.tx
|
||||
// This feerate is just above the threshold: (800000 (alice balance) - 20000 (reserve) - 660 (anchors)) / 1124 (commit tx weight) = 693363
|
||||
|
@ -1732,7 +1732,7 @@ class NormalStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
testCmdClose _
|
||||
}
|
||||
|
||||
test("recv CMD_CLOSE (no pending htlcs) (anchor outputs)", Tag("anchor_outputs")) {
|
||||
test("recv CMD_CLOSE (no pending htlcs) (anchor outputs)", Tag(StateTestsTags.AnchorOutputs)) {
|
||||
testCmdClose _
|
||||
}
|
||||
|
||||
|
@ -1826,7 +1826,7 @@ class NormalStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
testShutdown _
|
||||
}
|
||||
|
||||
test("recv Shutdown (no pending htlcs) (anchor outputs)", Tag("anchor_outputs")) {
|
||||
test("recv Shutdown (no pending htlcs) (anchor outputs)", Tag(StateTestsTags.AnchorOutputs)) {
|
||||
testShutdown _
|
||||
}
|
||||
|
||||
|
@ -1904,7 +1904,7 @@ class NormalStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
testShutdownWithHtlcs _
|
||||
}
|
||||
|
||||
test("recv Shutdown (with signed htlcs) (anchor outputs)", Tag("anchor_outputs")) {
|
||||
test("recv Shutdown (with signed htlcs) (anchor outputs)", Tag(StateTestsTags.AnchorOutputs)) {
|
||||
testShutdownWithHtlcs _
|
||||
}
|
||||
|
||||
|
@ -2450,7 +2450,7 @@ class NormalStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
assert(localCommitPublished.claimHtlcDelayedTxs.size == 3)
|
||||
}
|
||||
|
||||
test("recv Error (nothing at stake)", Tag("no_push_msat")) { f =>
|
||||
test("recv Error (nothing at stake)", Tag(StateTestsTags.NoPushMsat)) { f =>
|
||||
import f._
|
||||
|
||||
// when receiving an error bob should publish its commitment even if it has nothing at stake, because alice could
|
||||
|
@ -2469,7 +2469,7 @@ class NormalStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
assert(localCommitPublished.commitTx == bobCommitTx)
|
||||
}
|
||||
|
||||
test("recv BITCOIN_FUNDING_DEEPLYBURIED", Tag("channels_public")) { f =>
|
||||
test("recv BITCOIN_FUNDING_DEEPLYBURIED", Tag(StateTestsTags.ChannelsPublic)) { f =>
|
||||
import f._
|
||||
alice ! WatchEventConfirmed(BITCOIN_FUNDING_DEEPLYBURIED, 400000, 42, null)
|
||||
val annSigs = alice2bob.expectMsgType[AnnouncementSignatures]
|
||||
|
@ -2480,7 +2480,7 @@ class NormalStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
channelUpdateListener.expectNoMsg(1 second)
|
||||
}
|
||||
|
||||
test("recv BITCOIN_FUNDING_DEEPLYBURIED (short channel id changed)", Tag("channels_public")) { f =>
|
||||
test("recv BITCOIN_FUNDING_DEEPLYBURIED (short channel id changed)", Tag(StateTestsTags.ChannelsPublic)) { f =>
|
||||
import f._
|
||||
alice ! WatchEventConfirmed(BITCOIN_FUNDING_DEEPLYBURIED, 400001, 22, null)
|
||||
val annSigs = alice2bob.expectMsgType[AnnouncementSignatures]
|
||||
|
@ -2512,7 +2512,7 @@ class NormalStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
channelUpdateListener.expectNoMsg(1 second)
|
||||
}
|
||||
|
||||
test("recv AnnouncementSignatures", Tag("channels_public")) { f =>
|
||||
test("recv AnnouncementSignatures", Tag(StateTestsTags.ChannelsPublic)) { f =>
|
||||
import f._
|
||||
val initialState = alice.stateData.asInstanceOf[DATA_NORMAL]
|
||||
alice ! WatchEventConfirmed(BITCOIN_FUNDING_DEEPLYBURIED, 400000, 42, null)
|
||||
|
@ -2530,7 +2530,7 @@ class NormalStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
assert(channelUpdateListener.expectMsgType[LocalChannelUpdate].channelAnnouncement_opt === Some(channelAnn))
|
||||
}
|
||||
|
||||
test("recv AnnouncementSignatures (re-send)", Tag("channels_public")) { f =>
|
||||
test("recv AnnouncementSignatures (re-send)", Tag(StateTestsTags.ChannelsPublic)) { f =>
|
||||
import f._
|
||||
val initialState = alice.stateData.asInstanceOf[DATA_NORMAL]
|
||||
alice ! WatchEventConfirmed(BITCOIN_FUNDING_DEEPLYBURIED, 42, 10, null)
|
||||
|
@ -2549,7 +2549,7 @@ class NormalStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
alice2bob.expectMsg(annSigsA)
|
||||
}
|
||||
|
||||
test("recv AnnouncementSignatures (invalid)", Tag("channels_public")) { f =>
|
||||
test("recv AnnouncementSignatures (invalid)", Tag(StateTestsTags.ChannelsPublic)) { f =>
|
||||
import f._
|
||||
val channelId = alice.stateData.asInstanceOf[DATA_NORMAL].channelId
|
||||
alice ! WatchEventConfirmed(BITCOIN_FUNDING_DEEPLYBURIED, 400000, 42, null)
|
||||
|
@ -2565,7 +2565,7 @@ class NormalStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
awaitCond(alice.stateName == CLOSING)
|
||||
}
|
||||
|
||||
test("recv BroadcastChannelUpdate", Tag("channels_public")) { f =>
|
||||
test("recv BroadcastChannelUpdate", Tag(StateTestsTags.ChannelsPublic)) { f =>
|
||||
import f._
|
||||
alice ! WatchEventConfirmed(BITCOIN_FUNDING_DEEPLYBURIED, 400000, 42, null)
|
||||
bob ! WatchEventConfirmed(BITCOIN_FUNDING_DEEPLYBURIED, 400000, 42, null)
|
||||
|
@ -2580,7 +2580,7 @@ class NormalStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
assert(update1.channelUpdate.timestamp < update2.channelUpdate.timestamp)
|
||||
}
|
||||
|
||||
test("recv BroadcastChannelUpdate (no changes)", Tag("channels_public")) { f =>
|
||||
test("recv BroadcastChannelUpdate (no changes)", Tag(StateTestsTags.ChannelsPublic)) { f =>
|
||||
import f._
|
||||
alice ! WatchEventConfirmed(BITCOIN_FUNDING_DEEPLYBURIED, 400000, 42, null)
|
||||
bob ! WatchEventConfirmed(BITCOIN_FUNDING_DEEPLYBURIED, 400000, 42, null)
|
||||
|
@ -2629,7 +2629,7 @@ class NormalStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
awaitCond(alice.stateName == OFFLINE)
|
||||
}
|
||||
|
||||
test("recv INPUT_DISCONNECTED (public channel)", Tag("channels_public")) { f =>
|
||||
test("recv INPUT_DISCONNECTED (public channel)", Tag(StateTestsTags.ChannelsPublic)) { f =>
|
||||
import f._
|
||||
alice ! WatchEventConfirmed(BITCOIN_FUNDING_DEEPLYBURIED, 400000, 42, null)
|
||||
bob ! WatchEventConfirmed(BITCOIN_FUNDING_DEEPLYBURIED, 400000, 42, null)
|
||||
|
@ -2644,7 +2644,7 @@ class NormalStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
channelUpdateListener.expectNoMsg(1 second)
|
||||
}
|
||||
|
||||
test("recv INPUT_DISCONNECTED (public channel, with pending unsigned htlcs)", Tag("channels_public")) { f =>
|
||||
test("recv INPUT_DISCONNECTED (public channel, with pending unsigned htlcs)", Tag(StateTestsTags.ChannelsPublic)) { f =>
|
||||
import f._
|
||||
val sender = TestProbe()
|
||||
alice ! WatchEventConfirmed(BITCOIN_FUNDING_DEEPLYBURIED, 400000, 42, null)
|
||||
|
|
|
@ -24,7 +24,7 @@ import fr.acinq.eclair.TestConstants.{Alice, Bob, TestFeeEstimator}
|
|||
import fr.acinq.eclair.blockchain._
|
||||
import fr.acinq.eclair.blockchain.fee.FeeratesPerKw
|
||||
import fr.acinq.eclair.channel._
|
||||
import fr.acinq.eclair.channel.states.StateTestsHelperMethods
|
||||
import fr.acinq.eclair.channel.states.StateTestsBase
|
||||
import fr.acinq.eclair.router.Announcements
|
||||
import fr.acinq.eclair.transactions.Transactions.HtlcSuccessTx
|
||||
import fr.acinq.eclair.wire._
|
||||
|
@ -38,7 +38,7 @@ import scala.concurrent.duration._
|
|||
* Created by PM on 05/07/2016.
|
||||
*/
|
||||
|
||||
class OfflineStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with StateTestsHelperMethods {
|
||||
class OfflineStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with StateTestsBase {
|
||||
|
||||
type FixtureParam = SetupFixture
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ import fr.acinq.bitcoin.{ByteVector32, ByteVector64, Crypto, SatoshiLong, Script
|
|||
import fr.acinq.eclair.blockchain._
|
||||
import fr.acinq.eclair.blockchain.fee.{FeeratePerKw, FeeratesPerKw}
|
||||
import fr.acinq.eclair.channel._
|
||||
import fr.acinq.eclair.channel.states.StateTestsHelperMethods
|
||||
import fr.acinq.eclair.channel.states.StateTestsBase
|
||||
import fr.acinq.eclair.payment.OutgoingPacket.Upstream
|
||||
import fr.acinq.eclair.payment._
|
||||
import fr.acinq.eclair.payment.relay.Relayer._
|
||||
|
@ -41,7 +41,7 @@ import scala.concurrent.duration._
|
|||
* Created by PM on 05/07/2016.
|
||||
*/
|
||||
|
||||
class ShutdownStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with StateTestsHelperMethods {
|
||||
class ShutdownStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with StateTestsBase {
|
||||
|
||||
type FixtureParam = SetupFixture
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ import fr.acinq.eclair.blockchain._
|
|||
import fr.acinq.eclair.blockchain.fee.{FeeratePerKw, FeeratesPerKw}
|
||||
import fr.acinq.eclair.channel.Helpers.Closing
|
||||
import fr.acinq.eclair.channel._
|
||||
import fr.acinq.eclair.channel.states.StateTestsHelperMethods
|
||||
import fr.acinq.eclair.channel.states.{StateTestsBase, StateTestsTags}
|
||||
import fr.acinq.eclair.wire.{ClosingSigned, Error, Shutdown}
|
||||
import fr.acinq.eclair.{CltvExpiry, MilliSatoshiLong, TestConstants, TestKitBaseClass}
|
||||
import org.scalatest.funsuite.FixtureAnyFunSuiteLike
|
||||
|
@ -37,7 +37,7 @@ import scala.concurrent.duration._
|
|||
* Created by PM on 05/07/2016.
|
||||
*/
|
||||
|
||||
class NegotiatingStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with StateTestsHelperMethods {
|
||||
class NegotiatingStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with StateTestsBase {
|
||||
|
||||
type FixtureParam = SetupFixture
|
||||
|
||||
|
@ -111,7 +111,7 @@ class NegotiatingStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike
|
|||
testClosingSigned _
|
||||
}
|
||||
|
||||
test("recv ClosingSigned (anchor outputs)", Tag("anchor_outputs")) {
|
||||
test("recv ClosingSigned (anchor outputs)", Tag(StateTestsTags.AnchorOutputs)) {
|
||||
testClosingSigned _
|
||||
}
|
||||
|
||||
|
@ -136,7 +136,7 @@ class NegotiatingStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike
|
|||
testFeeConverge(f)
|
||||
}
|
||||
|
||||
test("recv ClosingSigned (nothing at stake)", Tag("no_push_msat")) { f =>
|
||||
test("recv ClosingSigned (nothing at stake)", Tag(StateTestsTags.NoPushMsat)) { f =>
|
||||
import f._
|
||||
val aliceCloseFee = alice2bob.expectMsgType[ClosingSigned].feeSatoshis
|
||||
alice2bob.forward(bob)
|
||||
|
|
|
@ -24,7 +24,7 @@ import fr.acinq.eclair.blockchain._
|
|||
import fr.acinq.eclair.blockchain.fee.{FeeratePerKw, FeeratesPerKw}
|
||||
import fr.acinq.eclair.channel.Helpers.Closing
|
||||
import fr.acinq.eclair.channel._
|
||||
import fr.acinq.eclair.channel.states.StateTestsHelperMethods
|
||||
import fr.acinq.eclair.channel.states.{StateTestsBase, StateTestsTags}
|
||||
import fr.acinq.eclair.payment._
|
||||
import fr.acinq.eclair.payment.relay.Relayer._
|
||||
import fr.acinq.eclair.transactions.{Scripts, Transactions}
|
||||
|
@ -40,7 +40,7 @@ import scala.concurrent.duration._
|
|||
* Created by PM on 05/07/2016.
|
||||
*/
|
||||
|
||||
class ClosingStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with StateTestsHelperMethods {
|
||||
class ClosingStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with StateTestsBase {
|
||||
|
||||
case class FixtureParam(alice: TestFSMRef[State, Data, Channel], bob: TestFSMRef[State, Data, Channel], alice2bob: TestProbe, bob2alice: TestProbe, alice2blockchain: TestProbe, bob2blockchain: TestProbe, relayerA: TestProbe, relayerB: TestProbe, channelUpdateListener: TestProbe, bobCommitTxes: List[PublishableTxs])
|
||||
|
||||
|
@ -330,7 +330,7 @@ class ClosingStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
testMutualCloseBeforeConverge(f, ChannelVersion.STANDARD)
|
||||
}
|
||||
|
||||
test("recv BITCOIN_FUNDING_SPENT (mutual close before converging, anchor outputs)", Tag("anchor_outputs")) { f =>
|
||||
test("recv BITCOIN_FUNDING_SPENT (mutual close before converging, anchor outputs)", Tag(StateTestsTags.AnchorOutputs)) { f =>
|
||||
testMutualCloseBeforeConverge(f, ChannelVersion.ANCHOR_OUTPUTS)
|
||||
}
|
||||
|
||||
|
@ -433,7 +433,7 @@ class ClosingStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
testLocalCommitTxConfirmed(f, ChannelVersion.STANDARD)
|
||||
}
|
||||
|
||||
test("recv BITCOIN_TX_CONFIRMED (local commit, anchor outputs)", Tag("anchor_outputs")) { f =>
|
||||
test("recv BITCOIN_TX_CONFIRMED (local commit, anchor outputs)", Tag(StateTestsTags.AnchorOutputs)) { f =>
|
||||
testLocalCommitTxConfirmed(f, ChannelVersion.ANCHOR_OUTPUTS)
|
||||
}
|
||||
|
||||
|
@ -593,7 +593,7 @@ class ClosingStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
awaitCond(alice.stateName == CLOSED)
|
||||
}
|
||||
|
||||
test("recv BITCOIN_TX_CONFIRMED (remote commit, option_static_remotekey)", Tag("static_remotekey")) { f =>
|
||||
test("recv BITCOIN_TX_CONFIRMED (remote commit, option_static_remotekey)", Tag(StateTestsTags.StaticRemoteKey)) { f =>
|
||||
import f._
|
||||
mutualClose(alice, bob, alice2bob, bob2alice, alice2blockchain, bob2blockchain)
|
||||
assert(alice.stateData.asInstanceOf[DATA_CLOSING].commitments.channelVersion === ChannelVersion.STATIC_REMOTEKEY)
|
||||
|
@ -610,7 +610,7 @@ class ClosingStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
awaitCond(alice.stateName == CLOSED)
|
||||
}
|
||||
|
||||
test("recv BITCOIN_TX_CONFIRMED (remote commit, anchor outputs)", Tag("anchor_outputs")) { f =>
|
||||
test("recv BITCOIN_TX_CONFIRMED (remote commit, anchor outputs)", Tag(StateTestsTags.AnchorOutputs)) { f =>
|
||||
import f._
|
||||
mutualClose(alice, bob, alice2bob, bob2alice, alice2blockchain, bob2blockchain)
|
||||
val initialState = alice.stateData.asInstanceOf[DATA_CLOSING]
|
||||
|
@ -673,7 +673,7 @@ class ClosingStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
testRemoteCommitTxWithHtlcsConfirmed(f, ChannelVersion.STANDARD)
|
||||
}
|
||||
|
||||
test("recv BITCOIN_TX_CONFIRMED (remote commit with multiple htlcs for the same payment, anchor outputs)", Tag("anchor_outputs")) { f =>
|
||||
test("recv BITCOIN_TX_CONFIRMED (remote commit with multiple htlcs for the same payment, anchor outputs)", Tag(StateTestsTags.AnchorOutputs)) { f =>
|
||||
testRemoteCommitTxWithHtlcsConfirmed(f, ChannelVersion.ANCHOR_OUTPUTS)
|
||||
}
|
||||
|
||||
|
@ -778,7 +778,7 @@ class ClosingStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
awaitCond(alice.stateName == CLOSED)
|
||||
}
|
||||
|
||||
test("recv BITCOIN_TX_CONFIRMED (next remote commit, static_remotekey)", Tag("static_remotekey")) { f =>
|
||||
test("recv BITCOIN_TX_CONFIRMED (next remote commit, static_remotekey)", Tag(StateTestsTags.StaticRemoteKey)) { f =>
|
||||
import f._
|
||||
val (bobCommitTx, closingState, htlcs) = testNextRemoteCommitTxConfirmed(f, ChannelVersion.STATIC_REMOTEKEY)
|
||||
alice ! WatchEventConfirmed(BITCOIN_TX_CONFIRMED(bobCommitTx), 42, 0, bobCommitTx)
|
||||
|
@ -797,7 +797,7 @@ class ClosingStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
awaitCond(alice.stateName == CLOSED)
|
||||
}
|
||||
|
||||
test("recv BITCOIN_TX_CONFIRMED (next remote commit, anchor outputs)", Tag("anchor_outputs")) { f =>
|
||||
test("recv BITCOIN_TX_CONFIRMED (next remote commit, anchor outputs)", Tag(StateTestsTags.AnchorOutputs)) { f =>
|
||||
import f._
|
||||
val (bobCommitTx, closingState, htlcs) = testNextRemoteCommitTxConfirmed(f, ChannelVersion.ANCHOR_OUTPUTS)
|
||||
alice ! WatchEventConfirmed(BITCOIN_TX_CONFIRMED(bobCommitTx), 42, 0, bobCommitTx)
|
||||
|
@ -929,7 +929,7 @@ class ClosingStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
awaitCond(alice.stateName == CLOSED)
|
||||
}
|
||||
|
||||
test("recv BITCOIN_TX_CONFIRMED (future remote commit, option_static_remotekey)", Tag("static_remotekey")) { f =>
|
||||
test("recv BITCOIN_TX_CONFIRMED (future remote commit, option_static_remotekey)", Tag(StateTestsTags.StaticRemoteKey)) { f =>
|
||||
import f._
|
||||
val bobCommitTx = testFutureRemoteCommitTxConfirmed(f, ChannelVersion.STATIC_REMOTEKEY)
|
||||
// using option_static_remotekey alice doesn't need to sweep her output
|
||||
|
@ -939,7 +939,7 @@ class ClosingStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
awaitCond(alice.stateName == CLOSED, 10 seconds)
|
||||
}
|
||||
|
||||
test("recv BITCOIN_TX_CONFIRMED (future remote commit, anchor outputs)", Tag("anchor_outputs")) { f =>
|
||||
test("recv BITCOIN_TX_CONFIRMED (future remote commit, anchor outputs)", Tag(StateTestsTags.AnchorOutputs)) { f =>
|
||||
import f._
|
||||
val bobCommitTx = testFutureRemoteCommitTxConfirmed(f, ChannelVersion.ANCHOR_OUTPUTS)
|
||||
// alice is able to claim its main output
|
||||
|
@ -1091,11 +1091,11 @@ class ClosingStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
testFundingSpentRevokedTx(f, ChannelVersion.STANDARD)
|
||||
}
|
||||
|
||||
test("recv BITCOIN_FUNDING_SPENT (one revoked tx, option_static_remotekey)", Tag("static_remotekey")) { f =>
|
||||
test("recv BITCOIN_FUNDING_SPENT (one revoked tx, option_static_remotekey)", Tag(StateTestsTags.StaticRemoteKey)) { f =>
|
||||
testFundingSpentRevokedTx(f, ChannelVersion.STATIC_REMOTEKEY)
|
||||
}
|
||||
|
||||
test("recv BITCOIN_FUNDING_SPENT (one revoked tx, anchor outputs)", Tag("anchor_outputs")) { f =>
|
||||
test("recv BITCOIN_FUNDING_SPENT (one revoked tx, anchor outputs)", Tag(StateTestsTags.AnchorOutputs)) { f =>
|
||||
testFundingSpentRevokedTx(f, ChannelVersion.ANCHOR_OUTPUTS)
|
||||
}
|
||||
|
||||
|
@ -1244,11 +1244,11 @@ class ClosingStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
testOutputSpentRevokedTx(f, ChannelVersion.STANDARD)
|
||||
}
|
||||
|
||||
test("recv BITCOIN_OUTPUT_SPENT (one revoked tx, counterparty published htlc-success tx, option_static_remotekey)", Tag("static_remotekey")) { f =>
|
||||
test("recv BITCOIN_OUTPUT_SPENT (one revoked tx, counterparty published htlc-success tx, option_static_remotekey)", Tag(StateTestsTags.StaticRemoteKey)) { f =>
|
||||
testOutputSpentRevokedTx(f, ChannelVersion.STATIC_REMOTEKEY)
|
||||
}
|
||||
|
||||
test("recv BITCOIN_OUTPUT_SPENT (one revoked tx, counterparty published htlc-success tx, anchor outputs)", Tag("anchor_outputs")) { f =>
|
||||
test("recv BITCOIN_OUTPUT_SPENT (one revoked tx, counterparty published htlc-success tx, anchor outputs)", Tag(StateTestsTags.AnchorOutputs)) { f =>
|
||||
testOutputSpentRevokedTx(f, ChannelVersion.ANCHOR_OUTPUTS)
|
||||
}
|
||||
|
||||
|
@ -1301,7 +1301,7 @@ class ClosingStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with
|
|||
testRevokedTxConfirmed(f, ChannelVersion.STANDARD)
|
||||
}
|
||||
|
||||
test("recv BITCOIN_TX_CONFIRMED (one revoked tx, pending htlcs, anchor outputs)", Tag("anchor_outputs")) { f =>
|
||||
test("recv BITCOIN_TX_CONFIRMED (one revoked tx, pending htlcs, anchor outputs)", Tag(StateTestsTags.AnchorOutputs)) { f =>
|
||||
testRevokedTxConfirmed(f, ChannelVersion.ANCHOR_OUTPUTS)
|
||||
}
|
||||
|
||||
|
|
|
@ -16,8 +16,6 @@
|
|||
|
||||
package fr.acinq.eclair.io
|
||||
|
||||
import java.net.{Inet4Address, InetSocketAddress}
|
||||
|
||||
import akka.actor.PoisonPill
|
||||
import akka.testkit.{TestFSMRef, TestProbe}
|
||||
import fr.acinq.bitcoin.Block
|
||||
|
@ -26,21 +24,21 @@ import fr.acinq.eclair.FeatureSupport.Optional
|
|||
import fr.acinq.eclair.Features.{BasicMultiPartPayment, ChannelRangeQueries, VariableLengthOnion}
|
||||
import fr.acinq.eclair.TestConstants._
|
||||
import fr.acinq.eclair._
|
||||
import fr.acinq.eclair.channel.states.StateTestsHelperMethods
|
||||
import fr.acinq.eclair.crypto.TransportHandler
|
||||
import fr.acinq.eclair.router.Router._
|
||||
import fr.acinq.eclair.router.RoutingSyncSpec
|
||||
import fr.acinq.eclair.wire._
|
||||
import org.scalatest.Outcome
|
||||
import org.scalatest.{Outcome, ParallelTestExecution}
|
||||
import org.scalatest.funsuite.FixtureAnyFunSuiteLike
|
||||
import scodec.bits._
|
||||
|
||||
import java.net.{Inet4Address, InetSocketAddress}
|
||||
import scala.collection.mutable
|
||||
import scala.concurrent.duration._
|
||||
|
||||
class PeerConnectionSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with StateTestsHelperMethods {
|
||||
class PeerConnectionSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with ParallelTestExecution {
|
||||
|
||||
def ipv4FromInet4(address: InetSocketAddress) = IPv4.apply(address.getAddress.asInstanceOf[Inet4Address], address.getPort)
|
||||
def ipv4FromInet4(address: InetSocketAddress): IPv4 = IPv4.apply(address.getAddress.asInstanceOf[Inet4Address], address.getPort)
|
||||
|
||||
val address = new InetSocketAddress("localhost", 42000)
|
||||
val fakeIPAddress = NodeAddress.fromParts("1.2.3.4", 42000).get
|
||||
|
@ -61,7 +59,6 @@ class PeerConnectionSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike wi
|
|||
val transport = TestProbe()
|
||||
val peer = TestProbe()
|
||||
val remoteNodeId = Bob.nodeParams.nodeId
|
||||
|
||||
val aliceParams = TestConstants.Alice.nodeParams
|
||||
|
||||
val peerConnection: TestFSMRef[PeerConnection.State, PeerConnection.Data, PeerConnection] = TestFSMRef(new PeerConnection(aliceParams.keyPair, aliceParams.peerConnectionConf, switchboard.ref, router.ref))
|
||||
|
|
|
@ -28,11 +28,10 @@ import fr.acinq.eclair.TestConstants._
|
|||
import fr.acinq.eclair._
|
||||
import fr.acinq.eclair.blockchain.{EclairWallet, TestWallet}
|
||||
import fr.acinq.eclair.channel._
|
||||
import fr.acinq.eclair.channel.states.StateTestsHelperMethods
|
||||
import fr.acinq.eclair.io.Peer._
|
||||
import fr.acinq.eclair.wire._
|
||||
import org.scalatest.funsuite.FixtureAnyFunSuiteLike
|
||||
import org.scalatest.{Outcome, Tag}
|
||||
import org.scalatest.{Outcome, ParallelTestExecution, Tag}
|
||||
import scodec.bits.ByteVector
|
||||
|
||||
import java.net.{InetAddress, ServerSocket, Socket}
|
||||
|
@ -40,7 +39,7 @@ import java.util.concurrent.Executors
|
|||
import scala.concurrent.duration._
|
||||
import scala.concurrent.{ExecutionContext, Future}
|
||||
|
||||
class PeerSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with StateTestsHelperMethods {
|
||||
class PeerSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with ParallelTestExecution {
|
||||
|
||||
val fakeIPAddress: NodeAddress = NodeAddress.fromParts("1.2.3.4", 42000).get
|
||||
|
||||
|
@ -313,8 +312,8 @@ class PeerSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with StateTe
|
|||
awaitCond(peer.stateData.channels.nonEmpty)
|
||||
|
||||
val channelCreated = probe.expectMsgType[ChannelCreated]
|
||||
assert(channelCreated.initialFeeratePerKw == peer.feeEstimator.getFeeratePerKw(peer.feeTargets.commitmentBlockTarget))
|
||||
assert(channelCreated.fundingTxFeeratePerKw.get == peer.feeEstimator.getFeeratePerKw(peer.feeTargets.fundingBlockTarget))
|
||||
assert(channelCreated.initialFeeratePerKw == nodeParams.onChainFeeConf.feeEstimator.getFeeratePerKw(nodeParams.onChainFeeConf.feeTargets.commitmentBlockTarget))
|
||||
assert(channelCreated.fundingTxFeeratePerKw.get == nodeParams.onChainFeeConf.feeEstimator.getFeeratePerKw(nodeParams.onChainFeeConf.feeTargets.fundingBlockTarget))
|
||||
|
||||
peer.stateData.channels.foreach { case (_, channelRef) =>
|
||||
probe.send(channelRef, CMD_GETINFO(probe.ref))
|
||||
|
|
|
@ -16,22 +16,19 @@
|
|||
|
||||
package fr.acinq.eclair.io
|
||||
|
||||
import java.net.{InetAddress, ServerSocket}
|
||||
|
||||
import akka.testkit.{TestFSMRef, TestProbe}
|
||||
import fr.acinq.bitcoin.Crypto.PublicKey
|
||||
import fr.acinq.eclair.channel.states.StateTestsHelperMethods
|
||||
import fr.acinq.eclair._
|
||||
import fr.acinq.eclair.io.Peer.ChannelId
|
||||
import fr.acinq.eclair.io.ReconnectionTask.WaitingData
|
||||
import fr.acinq.eclair.wire.{Color, NodeAddress, NodeAnnouncement}
|
||||
import fr.acinq.eclair.{TestConstants, TestKitBaseClass, _}
|
||||
import org.scalatest.funsuite.FixtureAnyFunSuiteLike
|
||||
import org.scalatest.{Outcome, Tag}
|
||||
import scodec.bits.ByteVector
|
||||
import org.scalatest.{Outcome, ParallelTestExecution, Tag}
|
||||
|
||||
import java.net.{InetAddress, ServerSocket}
|
||||
import scala.concurrent.duration._
|
||||
|
||||
class ReconnectionTaskSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with StateTestsHelperMethods {
|
||||
class ReconnectionTaskSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with ParallelTestExecution {
|
||||
|
||||
val fakeIPAddress = NodeAddress.fromParts("1.2.3.4", 42000).get
|
||||
val channels = Map(Peer.FinalChannelId(randomBytes32) -> system.deadLetters)
|
||||
|
@ -51,8 +48,10 @@ class ReconnectionTaskSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike
|
|||
val aliceParams = TestConstants.Alice.nodeParams
|
||||
.modify(_.autoReconnect).setToIf(test.tags.contains("auto_reconnect"))(true)
|
||||
.modify(_.pluginParams).setToIf(test.tags.contains("plugin_force_reconnect"))(List(new ConnectionControlPlugin {
|
||||
// @formatter:off
|
||||
override def forceReconnect(nodeId: PublicKey): Boolean = true
|
||||
override def name = "plugin with force-reconnect"
|
||||
// @formatter:on
|
||||
}))
|
||||
|
||||
if (test.tags.contains("with_node_announcements")) {
|
||||
|
|
|
@ -34,8 +34,8 @@ import fr.acinq.eclair.transactions.{DirectedHtlc, IncomingHtlc, OutgoingHtlc}
|
|||
import fr.acinq.eclair.wire.Onion.FinalLegacyPayload
|
||||
import fr.acinq.eclair.wire._
|
||||
import fr.acinq.eclair.{CltvExpiry, CltvExpiryDelta, CustomCommitmentsPlugin, MilliSatoshi, MilliSatoshiLong, NodeParams, TestConstants, TestKitBaseClass, randomBytes32}
|
||||
import org.scalatest.Outcome
|
||||
import org.scalatest.funsuite.FixtureAnyFunSuiteLike
|
||||
import org.scalatest.{Outcome, ParallelTestExecution}
|
||||
import scodec.bits.ByteVector
|
||||
|
||||
import java.util.UUID
|
||||
|
@ -46,7 +46,7 @@ import scala.concurrent.duration._
|
|||
* Created by t-bast on 21/11/2019.
|
||||
*/
|
||||
|
||||
class PostRestartHtlcCleanerSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with StateTestsHelperMethods {
|
||||
class PostRestartHtlcCleanerSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with ParallelTestExecution with StateTestsHelperMethods {
|
||||
|
||||
import PostRestartHtlcCleanerSpec._
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue