lnd/itest
Olaoluwa Osuntokun 1fc2c64770
itest: test all combos of rbf close and taproot chans
In this commit, we test all the combinations of rbf close and taproot
chans. This ensures that the downgrade logic works properly.

Along the way we refactor the tests slightly, and also split them up, as
running all the combos back to back mines more than 50 blocks in a test,
which triggers an error in the itest sanity checks.
2025-04-03 16:23:36 -07:00
..
config.go itest: test "lnd --debuglevel=show" command 2024-11-19 12:44:57 -03:00
flakes.go itest: document flakeRaceInBitcoinClientNotifications 2025-03-21 08:06:19 +08:00
list_exclude_test.go itest: skip force close restart in windows 2025-03-21 08:06:19 +08:00
list_off_test.go itest+lntest: migrate lntemp to lntest 2023-02-23 21:56:09 +08:00
list_on_test.go itest: test all combos of rbf close and taproot chans 2025-04-03 16:23:36 -07:00
lnd_access_perm_test.go itest: new test to check server access perms 2025-03-11 20:42:35 -04:00
lnd_amp_test.go itest: update tests with timeout_seconds 2025-01-15 19:46:09 +05:30
lnd_channel_backup_test.go itest+lntest: add flakePaymentStreamReturnEarly 2025-03-18 20:24:34 +08:00
lnd_channel_balance_test.go itest: update tests with timeout_seconds 2025-01-15 19:46:09 +05:30
lnd_channel_force_close_test.go itest: document the flake found in preimage extraction 2025-03-05 18:54:13 +08:00
lnd_channel_funding_fund_max_test.go itest: break down channel fundmax tests 2024-12-20 19:38:12 +08:00
lnd_channel_funding_utxo_selection_test.go itest: add a prefix before appending a subtest case 2024-12-20 19:38:13 +08:00
lnd_channel_graph_test.go itest: fix flake in graph_topology_notifications 2025-01-16 16:19:37 +08:00
lnd_channel_policy_test.go itest: rename closure for clarity 2025-03-24 15:05:47 +02:00
lnd_coop_close_external_delivery_test.go itest: fix flake in testCoopCloseWithExternalDeliveryImpl 2024-12-20 19:38:15 +08:00
lnd_coop_close_rbf_test.go itest: add new RBF coop close itest 2025-03-18 11:44:57 -05:00
lnd_coop_close_with_htlcs_test.go itest: test all combos of rbf close and taproot chans 2025-04-03 16:23:36 -07:00
lnd_custom_features.go itest: remove unnecessary channel close and node shutdown 2024-12-20 19:38:06 +08:00
lnd_custom_message_test.go itest: remove the use of standby nodes 2024-12-20 19:38:05 +08:00
lnd_estimate_route_fee_test.go itest: further reduce block mined in tests 2024-12-20 19:38:12 +08:00
lnd_etcd_failover_test.go itest: add itest covering the leader healthcheck 2024-08-01 19:04:10 +02:00
lnd_experimental_endorsement.go lntest+itest: change the method signature of AssertPaymentStatus 2025-02-28 19:07:38 +08:00
lnd_forward_interceptor_test.go itest: remove redundant resume action 2025-03-10 16:58:16 +08:00
lnd_funding_test.go lntest+itest: return the tx from FundCoins 2025-03-26 18:24:46 +08:00
lnd_hold_invoice_force_test.go itest: remove old TODOs 2025-03-06 09:11:30 +08:00
lnd_hold_persistence_test.go lntest+itest: change the method signature of AssertPaymentStatus 2025-02-28 19:07:38 +08:00
lnd_htlc_test.go itest: remove unnecessary channel close and node shutdown 2024-12-20 19:38:06 +08:00
lnd_htlc_timeout_resolver_test.go lntest+itest: change the method signature of AssertPaymentStatus 2025-02-28 19:07:38 +08:00
lnd_invoice_acceptor_test.go invoices: treat replayed HTLCs beforehand. 2025-01-29 09:59:02 +01:00
lnd_invoice_migration_test.go channeldb+lnd: set invoice bucket tombstone after migration 2025-01-23 15:06:09 +01:00
lnd_macaroons_test.go itest: test for ip range checks for macaroons 2025-03-13 09:57:41 -05:00
lnd_max_channel_size_test.go itest: remove unnecessary channel close and node shutdown 2024-12-20 19:38:06 +08:00
lnd_max_htlcs_test.go itest: update tests with timeout_seconds 2025-01-15 19:46:09 +05:30
lnd_misc_test.go itest: move test testDisconnectingTargetPeer 2025-03-06 09:11:30 +08:00
lnd_mpp_test.go lntest+itest: change the method signature of AssertPaymentStatus 2025-02-28 19:07:38 +08:00
lnd_multi-hop-error-propagation_test.go itest: update tests with timeout_seconds 2025-01-15 19:46:09 +05:30
lnd_multi-hop-payments_test.go itest: remove unnecessary channel close and node shutdown 2024-12-20 19:38:06 +08:00
lnd_multi-hop_force_close_test.go lntest+itest: update block height in MineBlockWithTx 2025-03-26 18:24:47 +08:00
lnd_network_test.go itest: move test testDisconnectingTargetPeer 2025-03-06 09:11:30 +08:00
lnd_neutrino_test.go itest: remove the use of standby nodes 2024-12-20 19:38:05 +08:00
lnd_no_etcd_dummy_failover_test.go itest: add itest covering the leader healthcheck 2024-08-01 19:04:10 +02:00
lnd_nonstd_sweep_test.go itest+lntest: stop using pointer to chainhash.Hash 2024-10-17 07:14:51 +08:00
lnd_onchain_test.go walletrpc: add new deadline-delta param to bumpfee rpc 2025-02-07 11:28:41 +01:00
lnd_open_channel_test.go itest: fix flake in testFundingExpiryBlocksOnPending 2025-03-18 20:24:34 +08:00
lnd_payment_test.go multi: make validation for keysend stricter 2025-03-25 04:42:03 -05:00
lnd_psbt_test.go itest: fix flake in runPsbtChanFundingWithNodes 2024-12-20 19:38:08 +08:00
lnd_quiescence_test.go itest: update tests with timeout_seconds 2025-01-15 19:46:09 +05:30
lnd_recovery_test.go itest: fix misuse of MineBlocks and replace it with 2024-07-23 21:30:08 +08:00
lnd_remote_signer_test.go itest: add a prefix before appending a subtest case 2024-12-20 19:38:13 +08:00
lnd_res_handoff_test.go itest: remove unnecessary channel close and node shutdown 2024-12-20 19:38:06 +08:00
lnd_rest_api_test.go itest: remove loop in wsTestCaseBiDirectionalSubscription 2024-12-20 19:38:07 +08:00
lnd_revocation_test.go lntest+itest: extend CloseChannelAssertPending 2025-03-18 11:44:21 -05:00
lnd_route_blinding_test.go itest+lntest: add flakePaymentStreamReturnEarly 2025-03-18 20:24:34 +08:00
lnd_routing_test.go itest: update tests with timeout_seconds 2025-01-15 19:46:09 +05:30
lnd_rpc_middleware_interceptor_test.go lntest+itest: kill node and wait its process 2024-11-12 23:55:40 +08:00
lnd_signer_test.go itest: remove the use of standby nodes 2024-12-20 19:38:05 +08:00
lnd_single_hop_invoice_test.go itest: update tests with timeout_seconds 2025-01-15 19:46:09 +05:30
lnd_sweep_test.go itest: add testBumpFeeLowBudget 2025-03-26 18:24:47 +08:00
lnd_switch_test.go chore: fix typo 2025-01-05 20:45:35 +08:00
lnd_taproot_test.go itest: break down taproot tests 2024-12-20 19:38:12 +08:00
lnd_test.go itest: document a flake found on macOS 2025-03-06 22:46:31 +08:00
lnd_trackpayments_test.go itest: add itest to test duplicate failure notification 2025-03-24 09:17:09 -05:00
lnd_wallet_import_test.go itest: add a prefix before appending a subtest case 2024-12-20 19:38:13 +08:00
lnd_watchtower_test.go lntest+itest: extend CloseChannelAssertPending 2025-03-18 11:44:21 -05:00
lnd_wipe_fwdpkgs_test.go itest+lntest: add flakePaymentStreamReturnEarly 2025-03-18 20:24:34 +08:00
lnd_wumbo_channels_test.go itest: remove unnecessary channel close and node shutdown 2024-12-20 19:38:06 +08:00
lnd_zero_conf_test.go itest: break down scid alias channel update tests 2024-12-20 19:38:10 +08:00
log_check_errors.sh multi: move itest out of lntest 2023-02-23 21:56:08 +08:00
log_substitutions.txt lntest/itest: adds tests for fundmax flag of cli:openchannel 2023-04-05 23:09:12 +02:00
README.md itest: add readme 2023-02-23 21:56:12 +08:00

Integration Test

itest is a package that houses the integration tests made for lnd. This package builds test cases using the test framework lntest.

Add New Tests

To add a new test case, create a TestFunc and add it in list_on_test.go. Ideally, the Name should just be the snake case of the name used in TestFunc without the leading test and underscores. For instance, to test lnd's exporting channel backup, we have,

{
		Name:     "export channel backup",
		TestFunc: testExportChannelBackup,
}

The place to put the code of the TestFunc is case-specific. itest package has loosely defined a list of files to test different functionalities of lnd. The new test needs to be put into one of these files, otherwise, a new file needs to be created.

Run Tests

Run a single test case

To run a single test case, use make itest icase=$case, where case is the name defined in list_on_test.go, with spaces replaced with underscores(_).

# Run `testListChannels`.
make itest icase=list_channels

Run multiple test cases

There are two ways to run multiple test cases. One way is to use make itest icase=$cases, where cases has the format cases='(case|case|...)'. The case is the name defined in list_on_test.go, with spaces replaced with underscores(_).

# Run `testListChannels` and `testListAddresses` together.
make itest icase='(list_channels|list_addresses)'

Another way to run multiple cases is similar to how Go runs its tests - by simple regex matching. For instance, the following command will run three cases since they all start with the word list,

# Run `testListChannels`, `testListAddresses`, and `testListPayments` together.
make itest icase=list

Run all tests

To run all tests, use make itest without icase flag.

# Run all test cases.
make itest

Run tests in parallel

To run tests in parallel, use make itest-parallel. This command takes two special arguments,

  • tranches, specifies the number of parts the test cases will be split into.
  • parallel, specifies the number of threads to run in parallel. This value must be smaller than or equal to tranches.
# Split the tests into 4 parts, and run them using 2 threads.
make itest-parallel tranches=4 parallel=2

By default, itest-parallel splits the tests into 4 parts and uses 4 threads to run each of them.

Additional arguments

For both make itest and make itest-parallel, the following arguments are allowed,

  • timeout, specifies the timeout value used in testing.
  • dbbackend, specifies the database backend. Must be bbolt, etcd, or postgres, default to bbolt.
  • backend, specifies the chain backend to be used. Must be one of,
    • btcd, the default value.
    • neutrino
    • bitcoind
    • bitcoind notxindex
    • bitcoind rpcpolling
# Run a single test case using bitcoind as the chain backend and etcd as the
# database backend, with a timeout of 5 minutes.
make itest icase=list_channels backend=bitcoind dbbackend=etcd timeout=5m

# Run all test cases in parallel, using bitcoind notxindex as the chain backend
# and etcd as the database backend, with a timeout of 60 minutes for each
# parallel.
make itest-parallel backend="bitcoind notxindex" dbbackend=etcd timeout=60m