lnd/itest
Olaoluwa Osuntokun 63eefaf5ed
itest: add send payment overpay integration test
In this commit, we add an integration test that verifies a payer can
overpay a fixed-amount BOLT11 invoice by specifying a larger amt_msat
in the SendPaymentV2 request. The test creates a 1000 sat invoice,
pays it with 1100 sat (1,100,000 msat), and asserts that both the
sender's payment record and the receiver's invoice reflect the
overpaid amount.
2026-02-04 08:51:49 +09: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: use prefixed sub-tests 2025-04-23 11:52:39 -03:00
list_off_test.go itest+lntest: migrate lntemp to lntest 2023-02-23 21:56:09 +08:00
list_on_test.go itest: add send payment overpay integration test 2026-02-04 08:51:49 +09:00
lnd_access_perm_test.go itest+lntest: add more itest for accessman 2025-06-20 15:50:25 -07:00
lnd_amp_test.go itest: update tests with timeout_seconds 2025-01-15 19:46:09 +05:30
lnd_bump_fee.go lntest+itest: add testBumpFeeExternalInput 2025-06-04 12:17:54 +02:00
lnd_channel_backup_test.go itest: update num of sweeps in AssertNumPendingSweeps 2025-04-29 14:15:31 +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: fix tests re the new anchor behavior 2025-08-06 14:42:43 +02: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: test imported address in coop close 2025-04-23 11:53:29 -03:00
lnd_coop_close_rbf_test.go itest: add disconnect test 2025-06-04 12:19:41 +02: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 itest: update num of sweeps in AssertNumPendingSweeps 2025-04-29 14:15:31 +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_htlc_path_test.go itest: add payment test with max htlc restriction 2025-08-06 14:47:43 +02: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_force_close_test.go itest: update num of sweeps in AssertNumPendingSweeps 2025-04-29 14:15:31 +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 lnd+lnrpc: update fwdinghistory message 2025-06-20 15:37:24 -07: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 itest: update num of sweeps in AssertNumPendingSweeps 2025-04-29 14:15:31 +08: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: run normal FundPsbt test case in remote-signer mode 2025-08-06 14:44:47 +02: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: run FundPsbt test with imported account 2025-08-06 14:44:47 +02: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 multi: use the "errors" package everywhere 2025-07-01 20:08:12 +02:00
lnd_route_blinding_test.go itest: remove manual channel closures from route blinding tests 2025-04-14 17:11:24 +02: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 itest: test RPCMiddleware gRPC metadata propagation 2025-04-22 15:03:17 +02:00
lnd_send_overpayment_test.go itest: add send payment overpay integration test 2026-02-04 08:51:49 +09: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: fix tests re the new anchor behavior 2025-08-06 14:42:43 +02:00
lnd_switch_test.go chore: fix typo 2025-01-05 20:45:35 +08:00
lnd_taproot_test.go itest: run FundPsbt test with imported account 2025-08-06 14:44:47 +02: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_wallet.go itest: add wallet-related itest 2025-04-17 09:32:28 +08:00
lnd_watchtower_test.go multi: use the "errors" package everywhere 2025-07-01 20:08:12 +02: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 multi: use the "errors" package everywhere 2025-07-01 20:08:12 +02: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