939375f1a5
* sweep: use longer variable name for clarity in `addToState` * sweeper: add more docs and debug logs * sweep: prioritize smaller inputs when adding wallet UTXOs This commit sorts wallet UTXOs by their values when using them for sweeping inputs. This way we'd avoid locking large UTXOs when sweeping inputs and also provide an opportunity to aggregate wallet UTXOs. * contractcourt+itest: relax anchor sweeping for CPFP purpose This commit changes from always sweeping anchor for a local force close to only do so when there is an actual time pressure. After this change, a forced anchor sweeping will only be attempted when the deadline is less than 144 blocks. * docs: update release notes * itest: update test `testMultiHopHtlcLocalChainClaim` to skip CPFP Since we now only perform CPFP when both the fee rate is higher and the deadline is less than 144, we need to update the test to reflect that Bob will not CPFP the force close tx for the channle Alice->Bob. * itest: fix `testMultiHopRemoteForceCloseOnChainHtlcTimeout` * itest: update related tests to reflect anchor sweeping This commit updates all related tests to reflect the latest anchor sweeping behavior. Previously, anchor sweeping is always attempted as CPFP when a force close is broadcast, while now it only happens when the deadline is less than 144. For non-CPFP purpose sweeping, it will happen after one block is mined after the force close transaction is confirmed as the anchor will be resent to the sweeper with a floor fee rate, hence making it economical to sweep. |
||
---|---|---|
.. | ||
list_off_test.go | ||
list_on_test.go | ||
lnd_amp_test.go | ||
lnd_channel_backup_test.go | ||
lnd_channel_balance_test.go | ||
lnd_channel_force_close_test.go | ||
lnd_channel_funding_fund_max_test.go | ||
lnd_channel_funding_utxo_selection_test.go | ||
lnd_channel_graph_test.go | ||
lnd_channel_policy_test.go | ||
lnd_custom_features.go | ||
lnd_custom_message_test.go | ||
lnd_etcd_failover_test.go | ||
lnd_forward_interceptor_test.go | ||
lnd_funding_test.go | ||
lnd_hold_invoice_force_test.go | ||
lnd_hold_persistence_test.go | ||
lnd_htlc_test.go | ||
lnd_macaroons_test.go | ||
lnd_max_channel_size_test.go | ||
lnd_max_htlcs_test.go | ||
lnd_misc_test.go | ||
lnd_mpp_test.go | ||
lnd_multi-hop_test.go | ||
lnd_multi-hop-error-propagation_test.go | ||
lnd_multi-hop-payments_test.go | ||
lnd_network_test.go | ||
lnd_neutrino_test.go | ||
lnd_no_etcd_dummy_failover_test.go | ||
lnd_nonstd_sweep_test.go | ||
lnd_onchain_test.go | ||
lnd_open_channel_test.go | ||
lnd_payment_test.go | ||
lnd_psbt_test.go | ||
lnd_recovery_test.go | ||
lnd_remote_signer_test.go | ||
lnd_res_handoff_test.go | ||
lnd_rest_api_test.go | ||
lnd_revocation_test.go | ||
lnd_route_blinding.go | ||
lnd_routing_test.go | ||
lnd_rpc_middleware_interceptor_test.go | ||
lnd_send_multi_path_payment_test.go | ||
lnd_signer_test.go | ||
lnd_single_hop_invoice_test.go | ||
lnd_switch_test.go | ||
lnd_taproot_test.go | ||
lnd_test.go | ||
lnd_trackpayments_test.go | ||
lnd_wallet_import_test.go | ||
lnd_watchtower_test.go | ||
lnd_wipe_fwdpkgs_test.go | ||
lnd_wumbo_channels_test.go | ||
lnd_zero_conf_test.go | ||
log_check_errors.sh | ||
log_substitutions.txt | ||
README.md |
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 totranches
.
# 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 bebbolt
,etcd
, orpostgres
, default tobbolt
.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