mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-02-24 06:47:44 +01:00
To make the CI indicative, we now starting tracking the flaky tests found when running on Windows. As a starting point, rather than ignore the windows CI entirely, we now identify there are cases where lnd can be buggy when running in windows. We should fix the tests in the future, otherwise the windows build should be deleted.
713 lines
16 KiB
Go
713 lines
16 KiB
Go
//go:build integration
|
|
|
|
package itest
|
|
|
|
import (
|
|
"github.com/lightningnetwork/lnd/lntest"
|
|
)
|
|
|
|
var allTestCases = []*lntest.TestCase{
|
|
{
|
|
Name: "update channel status",
|
|
TestFunc: testUpdateChanStatus,
|
|
},
|
|
{
|
|
Name: "external channel funding",
|
|
TestFunc: testExternalFundingChanPoint,
|
|
},
|
|
{
|
|
Name: "channel backup restore unconfirmed",
|
|
TestFunc: testChannelBackupRestoreUnconfirmed,
|
|
},
|
|
{
|
|
Name: "channel backup restore force close",
|
|
TestFunc: testChannelBackupRestoreForceClose,
|
|
},
|
|
{
|
|
Name: "channel backup restore legacy",
|
|
TestFunc: testChannelBackupRestoreLegacy,
|
|
},
|
|
{
|
|
Name: "data loss protection",
|
|
TestFunc: testDataLossProtection,
|
|
},
|
|
{
|
|
Name: "send all coins",
|
|
TestFunc: testSendAllCoins,
|
|
},
|
|
{
|
|
Name: "send selected coins",
|
|
TestFunc: testSendSelectedCoins,
|
|
},
|
|
{
|
|
Name: "send selected coins channel reserve",
|
|
TestFunc: testSendSelectedCoinsChannelReserve,
|
|
},
|
|
{
|
|
Name: "disconnecting target peer",
|
|
TestFunc: testDisconnectingTargetPeer,
|
|
},
|
|
{
|
|
Name: "sphinx replay persistence",
|
|
TestFunc: testSphinxReplayPersistence,
|
|
},
|
|
{
|
|
Name: "funding expiry blocks on pending",
|
|
TestFunc: testFundingExpiryBlocksOnPending,
|
|
},
|
|
{
|
|
Name: "list channels",
|
|
TestFunc: testListChannels,
|
|
},
|
|
{
|
|
Name: "max pending channel",
|
|
TestFunc: testMaxPendingChannels,
|
|
},
|
|
{
|
|
Name: "garbage collect link nodes",
|
|
TestFunc: testGarbageCollectLinkNodes,
|
|
},
|
|
{
|
|
Name: "reject onward htlc",
|
|
TestFunc: testRejectHTLC,
|
|
},
|
|
{
|
|
Name: "node sign verify",
|
|
TestFunc: testNodeSignVerify,
|
|
},
|
|
{
|
|
Name: "list addresses",
|
|
TestFunc: testListAddresses,
|
|
},
|
|
{
|
|
Name: "abandonchannel",
|
|
TestFunc: testAbandonChannel,
|
|
},
|
|
{
|
|
Name: "recovery info",
|
|
TestFunc: testGetRecoveryInfo,
|
|
},
|
|
{
|
|
Name: "onchain fund recovery",
|
|
TestFunc: testOnchainFundRecovery,
|
|
},
|
|
{
|
|
Name: "wallet rescan address detection",
|
|
TestFunc: testRescanAddressDetection,
|
|
},
|
|
{
|
|
Name: "basic funding flow with all input types",
|
|
TestFunc: testChannelFundingInputTypes,
|
|
},
|
|
{
|
|
Name: "unconfirmed channel funding",
|
|
TestFunc: testUnconfirmedChannelFunding,
|
|
},
|
|
{
|
|
Name: "funding flow persistence",
|
|
TestFunc: testChannelFundingPersistence,
|
|
},
|
|
{
|
|
Name: "batch channel funding",
|
|
TestFunc: testBatchChanFunding,
|
|
},
|
|
{
|
|
Name: "open channel with unstable utxos",
|
|
TestFunc: testChannelFundingWithUnstableUtxos,
|
|
},
|
|
{
|
|
Name: "open psbt channel with unstable utxos",
|
|
TestFunc: testPsbtChanFundingWithUnstableUtxos,
|
|
},
|
|
{
|
|
Name: "update channel policy",
|
|
TestFunc: testUpdateChannelPolicy,
|
|
},
|
|
{
|
|
Name: "send update disable channel",
|
|
TestFunc: testSendUpdateDisableChannel,
|
|
},
|
|
{
|
|
Name: "connection timeout",
|
|
TestFunc: testNetworkConnectionTimeout,
|
|
},
|
|
{
|
|
Name: "reconnect after ip change",
|
|
TestFunc: testReconnectAfterIPChange,
|
|
},
|
|
{
|
|
Name: "addpeer config",
|
|
TestFunc: testAddPeerConfig,
|
|
},
|
|
{
|
|
Name: "private channel update policy",
|
|
TestFunc: testUpdateChannelPolicyForPrivateChannel,
|
|
},
|
|
{
|
|
Name: "update channel policy fee rate accuracy",
|
|
TestFunc: testUpdateChannelPolicyFeeRateAccuracy,
|
|
},
|
|
{
|
|
Name: "unannounced channels",
|
|
TestFunc: testUnannouncedChannels,
|
|
},
|
|
{
|
|
Name: "graph topology notifications",
|
|
TestFunc: testGraphTopologyNotifications,
|
|
},
|
|
{
|
|
Name: "node announcement",
|
|
TestFunc: testNodeAnnouncement,
|
|
},
|
|
{
|
|
Name: "update node announcement rpc",
|
|
TestFunc: testUpdateNodeAnnouncement,
|
|
},
|
|
{
|
|
Name: "list payments",
|
|
TestFunc: testListPayments,
|
|
},
|
|
{
|
|
Name: "send direct payment anchor",
|
|
TestFunc: testSendDirectPaymentAnchor,
|
|
},
|
|
{
|
|
Name: "send direct payment simple taproot",
|
|
TestFunc: testSendDirectPaymentSimpleTaproot,
|
|
},
|
|
{
|
|
Name: "immediate payment after channel opened",
|
|
TestFunc: testPaymentFollowingChannelOpen,
|
|
},
|
|
{
|
|
Name: "payment failure reason canceled",
|
|
TestFunc: testPaymentFailureReasonCanceled,
|
|
},
|
|
{
|
|
Name: "invoice update subscription",
|
|
TestFunc: testInvoiceSubscriptions,
|
|
},
|
|
{
|
|
Name: "streaming channel backup update",
|
|
TestFunc: testChannelBackupUpdates,
|
|
},
|
|
{
|
|
Name: "export channel backup",
|
|
TestFunc: testExportChannelBackup,
|
|
},
|
|
{
|
|
Name: "channel balance",
|
|
TestFunc: testChannelBalance,
|
|
},
|
|
{
|
|
Name: "channel unsettled balance",
|
|
TestFunc: testChannelUnsettledBalance,
|
|
},
|
|
{
|
|
Name: "channel force closure anchor",
|
|
TestFunc: testChannelForceClosureAnchor,
|
|
},
|
|
{
|
|
Name: "channel force closure simple taproot",
|
|
TestFunc: testChannelForceClosureSimpleTaproot,
|
|
},
|
|
{
|
|
Name: "failing channel",
|
|
TestFunc: testFailingChannel,
|
|
},
|
|
{
|
|
Name: "chain kit",
|
|
TestFunc: testChainKit,
|
|
},
|
|
{
|
|
Name: "neutrino kit",
|
|
TestFunc: testNeutrino,
|
|
},
|
|
{
|
|
Name: "etcd failover",
|
|
TestFunc: testEtcdFailover,
|
|
},
|
|
{
|
|
Name: "leader health check",
|
|
TestFunc: testLeaderHealthCheck,
|
|
},
|
|
{
|
|
Name: "hold invoice force close",
|
|
TestFunc: testHoldInvoiceForceClose,
|
|
},
|
|
{
|
|
Name: "hold invoice sender persistence",
|
|
TestFunc: testHoldInvoicePersistence,
|
|
},
|
|
{
|
|
Name: "maximum channel size",
|
|
TestFunc: testMaxChannelSize,
|
|
},
|
|
{
|
|
Name: "wumbo channels",
|
|
TestFunc: testWumboChannels,
|
|
},
|
|
{
|
|
Name: "max htlc pathfind",
|
|
TestFunc: testMaxHtlcPathfind,
|
|
},
|
|
{
|
|
Name: "multi-hop htlc error propagation",
|
|
TestFunc: testHtlcErrorPropagation,
|
|
},
|
|
{
|
|
Name: "multi-hop payments",
|
|
TestFunc: testMultiHopPayments,
|
|
},
|
|
{
|
|
Name: "estimate route fee",
|
|
TestFunc: testEstimateRouteFee,
|
|
},
|
|
{
|
|
Name: "anchors reserved value",
|
|
TestFunc: testAnchorReservedValue,
|
|
},
|
|
{
|
|
Name: "3rd party anchor spend",
|
|
TestFunc: testAnchorThirdPartySpend,
|
|
},
|
|
{
|
|
Name: "open channel reorg test",
|
|
TestFunc: testOpenChannelAfterReorg,
|
|
},
|
|
{
|
|
Name: "sign psbt",
|
|
TestFunc: testSignPsbt,
|
|
},
|
|
{
|
|
Name: "fund psbt",
|
|
TestFunc: testFundPsbt,
|
|
},
|
|
{
|
|
Name: "resolution handoff",
|
|
TestFunc: testResHandoff,
|
|
},
|
|
{
|
|
Name: "REST API",
|
|
TestFunc: testRestAPI,
|
|
},
|
|
{
|
|
Name: "revoked uncooperative close retribution",
|
|
TestFunc: testRevokedCloseRetribution,
|
|
},
|
|
{
|
|
Name: "revoked uncooperative close retribution zero value " +
|
|
"remote output",
|
|
TestFunc: testRevokedCloseRetributionZeroValueRemoteOutput,
|
|
},
|
|
{
|
|
Name: "revoked uncooperative close retribution remote hodl",
|
|
TestFunc: testRevokedCloseRetributionRemoteHodl,
|
|
},
|
|
{
|
|
Name: "multi-hop send to route",
|
|
TestFunc: testMultiHopSendToRoute,
|
|
},
|
|
{
|
|
Name: "send to route error propagation",
|
|
TestFunc: testSendToRouteErrorPropagation,
|
|
},
|
|
{
|
|
Name: "private channels",
|
|
TestFunc: testPrivateChannels,
|
|
},
|
|
{
|
|
Name: "invoice routing hints",
|
|
TestFunc: testInvoiceRoutingHints,
|
|
},
|
|
{
|
|
Name: "scid alias routing hints",
|
|
TestFunc: testScidAliasRoutingHints,
|
|
},
|
|
{
|
|
Name: "multi-hop payments over private channels",
|
|
TestFunc: testMultiHopOverPrivateChannels,
|
|
},
|
|
{
|
|
Name: "query routes",
|
|
TestFunc: testQueryRoutes,
|
|
},
|
|
{
|
|
Name: "route fee cutoff",
|
|
TestFunc: testRouteFeeCutoff,
|
|
},
|
|
{
|
|
Name: "route fee limit after queryroutes",
|
|
TestFunc: testFeeLimitAfterQueryRoutes,
|
|
},
|
|
{
|
|
Name: "rpc middleware interceptor",
|
|
TestFunc: testRPCMiddlewareInterceptor,
|
|
},
|
|
{
|
|
Name: "macaroon authentication",
|
|
TestFunc: testMacaroonAuthentication,
|
|
},
|
|
{
|
|
Name: "bake macaroon",
|
|
TestFunc: testBakeMacaroon,
|
|
},
|
|
{
|
|
Name: "delete macaroon id",
|
|
TestFunc: testDeleteMacaroonID,
|
|
},
|
|
{
|
|
Name: "stateless init",
|
|
TestFunc: testStatelessInit,
|
|
},
|
|
{
|
|
Name: "single hop invoice",
|
|
TestFunc: testSingleHopInvoice,
|
|
},
|
|
{
|
|
Name: "wipe forwarding packages",
|
|
TestFunc: testWipeForwardingPackages,
|
|
},
|
|
{
|
|
Name: "switch circuit persistence",
|
|
TestFunc: testSwitchCircuitPersistence,
|
|
},
|
|
{
|
|
Name: "switch offline delivery",
|
|
TestFunc: testSwitchOfflineDelivery,
|
|
},
|
|
{
|
|
Name: "switch offline delivery persistence",
|
|
TestFunc: testSwitchOfflineDeliveryPersistence,
|
|
},
|
|
{
|
|
Name: "switch offline delivery outgoing offline",
|
|
TestFunc: testSwitchOfflineDeliveryOutgoingOffline,
|
|
},
|
|
{
|
|
Name: "sendtoroute multi path payment",
|
|
TestFunc: testSendToRouteMultiPath,
|
|
},
|
|
{
|
|
Name: "send multi path payment",
|
|
TestFunc: testSendMultiPathPayment,
|
|
},
|
|
{
|
|
Name: "sendpayment amp invoice",
|
|
TestFunc: testSendPaymentAMPInvoice,
|
|
},
|
|
{
|
|
Name: "sendpayment amp invoice repeat",
|
|
TestFunc: testSendPaymentAMPInvoiceRepeat,
|
|
},
|
|
{
|
|
Name: "send payment amp",
|
|
TestFunc: testSendPaymentAMP,
|
|
},
|
|
{
|
|
Name: "sendtoroute amp",
|
|
TestFunc: testSendToRouteAMP,
|
|
},
|
|
{
|
|
Name: "forward interceptor dedup htlcs",
|
|
TestFunc: testForwardInterceptorDedupHtlc,
|
|
},
|
|
{
|
|
Name: "forward interceptor",
|
|
TestFunc: testForwardInterceptorBasic,
|
|
},
|
|
{
|
|
Name: "forward interceptor modified htlc",
|
|
TestFunc: testForwardInterceptorModifiedHtlc,
|
|
},
|
|
{
|
|
Name: "forward interceptor wire records",
|
|
TestFunc: testForwardInterceptorWireRecords,
|
|
},
|
|
{
|
|
Name: "forward interceptor restart",
|
|
TestFunc: testForwardInterceptorRestart,
|
|
},
|
|
{
|
|
Name: "invoice HTLC modifier basic",
|
|
TestFunc: testInvoiceHtlcModifierBasic,
|
|
},
|
|
{
|
|
Name: "zero conf channel open",
|
|
TestFunc: testZeroConfChannelOpen,
|
|
},
|
|
{
|
|
Name: "option scid alias",
|
|
TestFunc: testOptionScidAlias,
|
|
},
|
|
{
|
|
Name: "scid alias upgrade",
|
|
TestFunc: testOptionScidUpgrade,
|
|
},
|
|
{
|
|
Name: "nonstd sweep",
|
|
TestFunc: testNonstdSweep,
|
|
},
|
|
{
|
|
Name: "multiple channel creation and update subscription",
|
|
TestFunc: testBasicChannelCreationAndUpdates,
|
|
},
|
|
{
|
|
Name: "derive shared key",
|
|
TestFunc: testDeriveSharedKey,
|
|
},
|
|
{
|
|
Name: "sign output raw",
|
|
TestFunc: testSignOutputRaw,
|
|
},
|
|
{
|
|
Name: "sign verify message",
|
|
TestFunc: testSignVerifyMessage,
|
|
},
|
|
{
|
|
Name: "bumpfee",
|
|
TestFunc: testBumpFee,
|
|
},
|
|
{
|
|
Name: "bumpforceclosefee",
|
|
TestFunc: testBumpForceCloseFee,
|
|
},
|
|
{
|
|
Name: "taproot spend",
|
|
TestFunc: testTaprootSpend,
|
|
},
|
|
{
|
|
Name: "taproot musig2",
|
|
TestFunc: testTaprootMuSig2,
|
|
},
|
|
{
|
|
Name: "taproot import scripts",
|
|
TestFunc: testTaprootImportScripts,
|
|
},
|
|
{
|
|
Name: "simple taproot channel activation",
|
|
TestFunc: testSimpleTaprootChannelActivation,
|
|
},
|
|
{
|
|
Name: "wallet import pubkey",
|
|
TestFunc: testWalletImportPubKey,
|
|
},
|
|
{
|
|
Name: "async payments benchmark",
|
|
TestFunc: testAsyncPayments,
|
|
},
|
|
{
|
|
Name: "taproot coop close",
|
|
TestFunc: testTaprootCoopClose,
|
|
},
|
|
{
|
|
Name: "trackpayments",
|
|
TestFunc: testTrackPayments,
|
|
},
|
|
{
|
|
Name: "trackpayments compatible",
|
|
TestFunc: testTrackPaymentsCompatible,
|
|
},
|
|
{
|
|
Name: "custom message",
|
|
TestFunc: testCustomMessage,
|
|
},
|
|
{
|
|
Name: "sign verify message with addr",
|
|
TestFunc: testSignVerifyMessageWithAddr,
|
|
},
|
|
{
|
|
Name: "zero conf reorg edge existence",
|
|
TestFunc: testZeroConfReorg,
|
|
},
|
|
{
|
|
Name: "async bidirectional payments",
|
|
TestFunc: testBidirectionalAsyncPayments,
|
|
},
|
|
{
|
|
Name: "lookup htlc resolution",
|
|
TestFunc: testLookupHtlcResolution,
|
|
},
|
|
{
|
|
Name: "channel fundmax error",
|
|
TestFunc: testChannelFundMaxError,
|
|
},
|
|
{
|
|
Name: "channel fundmax wallet amount",
|
|
TestFunc: testChannelFundMaxWalletAmount,
|
|
},
|
|
{
|
|
Name: "channel fundmax anchor reserve",
|
|
TestFunc: testChannelFundMaxAnchorReserve,
|
|
},
|
|
{
|
|
Name: "htlc timeout resolver extract preimage remote",
|
|
TestFunc: testHtlcTimeoutResolverExtractPreimageRemote,
|
|
},
|
|
{
|
|
Name: "htlc timeout resolver extract preimage local",
|
|
TestFunc: testHtlcTimeoutResolverExtractPreimageLocal,
|
|
},
|
|
{
|
|
Name: "custom features",
|
|
TestFunc: testCustomFeatures,
|
|
},
|
|
{
|
|
Name: "update pending open channels on funder side",
|
|
TestFunc: testUpdateOnFunderPendingOpenChannels,
|
|
},
|
|
{
|
|
Name: "update pending open channels on fundee side",
|
|
TestFunc: testUpdateOnFundeePendingOpenChannels,
|
|
},
|
|
{
|
|
Name: "blinded payment htlc re-forward",
|
|
TestFunc: testBlindedPaymentHTLCReForward,
|
|
},
|
|
{
|
|
Name: "query blinded route",
|
|
TestFunc: testQueryBlindedRoutes,
|
|
},
|
|
{
|
|
Name: "route blinding invoices",
|
|
TestFunc: testBlindedRouteInvoices,
|
|
},
|
|
{
|
|
Name: "receiver blinded error",
|
|
TestFunc: testReceiverBlindedError,
|
|
},
|
|
{
|
|
Name: "relayer blinded error",
|
|
TestFunc: testRelayingBlindedError,
|
|
},
|
|
{
|
|
Name: "introduction blinded error",
|
|
TestFunc: testIntroductionNodeError,
|
|
},
|
|
{
|
|
Name: "disable introduction node",
|
|
TestFunc: testDisableIntroductionNode,
|
|
},
|
|
{
|
|
Name: "on chain to blinded",
|
|
TestFunc: testErrorHandlingOnChainFailure,
|
|
},
|
|
{
|
|
Name: "mpp to single blinded path",
|
|
TestFunc: testMPPToSingleBlindedPath,
|
|
},
|
|
{
|
|
Name: "mpp to multiple blinded paths",
|
|
TestFunc: testMPPToMultipleBlindedPaths,
|
|
},
|
|
{
|
|
Name: "route blinding dummy hops",
|
|
TestFunc: testBlindedRouteDummyHops,
|
|
},
|
|
{
|
|
Name: "removetx",
|
|
TestFunc: testRemoveTx,
|
|
},
|
|
{
|
|
Name: "listsweeps",
|
|
TestFunc: testListSweeps,
|
|
},
|
|
{
|
|
Name: "fail funding flow psbt",
|
|
TestFunc: testPsbtChanFundingFailFlow,
|
|
},
|
|
{
|
|
Name: "coop close with htlcs",
|
|
TestFunc: testCoopCloseWithHtlcs,
|
|
},
|
|
{
|
|
Name: "open channel locked balance",
|
|
TestFunc: testOpenChannelLockedBalance,
|
|
},
|
|
{
|
|
Name: "nativesql no migration",
|
|
TestFunc: testNativeSQLNoMigration,
|
|
},
|
|
{
|
|
Name: "sweep cpfp anchor outgoing timeout",
|
|
TestFunc: testSweepCPFPAnchorOutgoingTimeout,
|
|
},
|
|
{
|
|
Name: "sweep cpfp anchor incoming timeout",
|
|
TestFunc: testSweepCPFPAnchorIncomingTimeout,
|
|
},
|
|
{
|
|
Name: "sweep htlcs",
|
|
TestFunc: testSweepHTLCs,
|
|
},
|
|
{
|
|
Name: "sweep commit output and anchor",
|
|
TestFunc: testSweepCommitOutputAndAnchor,
|
|
},
|
|
{
|
|
Name: "coop close with external delivery",
|
|
TestFunc: testCoopCloseWithExternalDelivery,
|
|
},
|
|
{
|
|
Name: "payment failed htlc local swept",
|
|
TestFunc: testPaymentFailedHTLCLocalSwept,
|
|
},
|
|
{
|
|
Name: "payment failed htlc local swept resumed",
|
|
TestFunc: testPaymentFailedHTLCLocalSweptResumed,
|
|
},
|
|
{
|
|
Name: "payment succeeded htlc remote swept",
|
|
TestFunc: testPaymentSucceededHTLCRemoteSwept,
|
|
},
|
|
{
|
|
Name: "send to route failed htlc timeout",
|
|
TestFunc: testSendToRouteFailHTLCTimeout,
|
|
},
|
|
{
|
|
Name: "send to route failed htlc timeout resumed",
|
|
TestFunc: testSendToRouteFailHTLCTimeoutResumed,
|
|
},
|
|
{
|
|
Name: "debuglevel show",
|
|
TestFunc: testDebuglevelShow,
|
|
},
|
|
{
|
|
Name: "experimental endorsement",
|
|
TestFunc: testExperimentalEndorsement,
|
|
},
|
|
{
|
|
Name: "quiescence",
|
|
TestFunc: testQuiescence,
|
|
},
|
|
}
|
|
|
|
func init() {
|
|
// Register subtests.
|
|
allTestCases = append(allTestCases, multiHopForceCloseTestCases...)
|
|
allTestCases = append(allTestCases, watchtowerTestCases...)
|
|
allTestCases = append(allTestCases, psbtFundingTestCases...)
|
|
allTestCases = append(allTestCases, remoteSignerTestCases...)
|
|
allTestCases = append(allTestCases, channelRestoreTestCases...)
|
|
allTestCases = append(allTestCases, fundUtxoSelectionTestCases...)
|
|
allTestCases = append(allTestCases, zeroConfPolicyTestCases...)
|
|
allTestCases = append(allTestCases, channelFeePolicyTestCases...)
|
|
allTestCases = append(allTestCases, walletImportAccountTestCases...)
|
|
allTestCases = append(allTestCases, basicFundingTestCases...)
|
|
allTestCases = append(allTestCases, sendToRouteTestCases...)
|
|
|
|
// Prepare the test cases for windows to exclude some of the flaky
|
|
// ones.
|
|
//
|
|
// NOTE: We need to run this before the isWindowsOS check to make sure
|
|
// the excluded tests are found in allTestCases. Otherwise, if a
|
|
// non-existing test is included in excludedTestsWindows, we won't be
|
|
// able to find it until it's pushed to the CI, which creates a much
|
|
// longer feedback loop.
|
|
windowsTestCases := filterWindowsFlakyTests()
|
|
|
|
// If this is Windows, we'll skip running some of the flaky tests.
|
|
if isWindowsOS() {
|
|
allTestCases = windowsTestCases
|
|
}
|
|
}
|