Skip to content

Commit e1bfea3

Browse files
committed
Correct test struct initialization ordering
When reloading a node in the test framework, we end up with a new `ChannelManager` that has references to various test util structs. In order for the tests to compile reliably in the face of unrelated changes, those test structs need to always be initialized before both the new but also the original `ChannelManager`. Here we make that change.
1 parent 417e866 commit e1bfea3

7 files changed

+93
-84
lines changed

lightning/src/ln/chanmon_update_fail_tests.rs

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2309,10 +2309,10 @@ fn do_channel_holding_cell_serialize(disconnect: bool, reload_a: bool) {
23092309
// which failed in such a case).
23102310
let chanmon_cfgs = create_chanmon_cfgs(2);
23112311
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
2312+
let persister;
2313+
let new_chain_monitor;
23122314
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
2313-
let persister: test_utils::TestPersister;
2314-
let new_chain_monitor: test_utils::TestChainMonitor;
2315-
let nodes_0_deserialized: ChannelManager<&test_utils::TestChainMonitor, &test_utils::TestBroadcaster, &test_utils::TestKeysInterface, &test_utils::TestKeysInterface, &test_utils::TestKeysInterface, &test_utils::TestFeeEstimator, &test_utils::TestRouter, &test_utils::TestLogger>;
2315+
let nodes_0_deserialized;
23162316
let mut nodes = create_network(2, &node_cfgs, &node_chanmgrs);
23172317

23182318
let chan_id = create_announced_chan_between_nodes_with_value(&nodes, 0, 1, 15_000_000, 7_000_000_000).2;
@@ -2851,15 +2851,16 @@ fn do_test_outbound_reload_without_init_mon(use_0conf: bool) {
28512851
let chanmon_cfgs = create_chanmon_cfgs(2);
28522852
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
28532853

2854-
let persister: test_utils::TestPersister;
2855-
let new_chain_monitor: test_utils::TestChainMonitor;
2856-
let nodes_0_deserialized: ChannelManager<&test_utils::TestChainMonitor, &test_utils::TestBroadcaster, &test_utils::TestKeysInterface, &test_utils::TestKeysInterface, &test_utils::TestKeysInterface, &test_utils::TestFeeEstimator, &test_utils::TestRouter, &test_utils::TestLogger>;
2854+
let persister;
2855+
let new_chain_monitor;
28572856

28582857
let mut chan_config = test_default_channel_config();
28592858
chan_config.manually_accept_inbound_channels = true;
28602859
chan_config.channel_handshake_limits.trust_own_funding_0conf = true;
28612860

28622861
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[Some(chan_config), Some(chan_config)]);
2862+
let nodes_0_deserialized;
2863+
28632864
let mut nodes = create_network(2, &node_cfgs, &node_chanmgrs);
28642865

28652866
nodes[0].node.create_channel(nodes[1].node.get_our_node_id(), 100000, 10001, 43, None).unwrap();
@@ -2941,15 +2942,16 @@ fn do_test_inbound_reload_without_init_mon(use_0conf: bool, lock_commitment: boo
29412942
let chanmon_cfgs = create_chanmon_cfgs(2);
29422943
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
29432944

2944-
let persister: test_utils::TestPersister;
2945-
let new_chain_monitor: test_utils::TestChainMonitor;
2946-
let nodes_1_deserialized: ChannelManager<&test_utils::TestChainMonitor, &test_utils::TestBroadcaster, &test_utils::TestKeysInterface, &test_utils::TestKeysInterface, &test_utils::TestKeysInterface, &test_utils::TestFeeEstimator, &test_utils::TestRouter, &test_utils::TestLogger>;
2945+
let persister;
2946+
let new_chain_monitor;
29472947

29482948
let mut chan_config = test_default_channel_config();
29492949
chan_config.manually_accept_inbound_channels = true;
29502950
chan_config.channel_handshake_limits.trust_own_funding_0conf = true;
29512951

29522952
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[Some(chan_config), Some(chan_config)]);
2953+
let nodes_1_deserialized;
2954+
29532955
let mut nodes = create_network(2, &node_cfgs, &node_chanmgrs);
29542956

29552957
nodes[0].node.create_channel(nodes[1].node.get_our_node_id(), 100000, 10001, 43, None).unwrap();

lightning/src/ln/monitor_tests.rs

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1638,13 +1638,14 @@ fn test_revoked_counterparty_aggregated_claims() {
16381638

16391639
fn do_test_restored_packages_retry(check_old_monitor_retries_after_upgrade: bool) {
16401640
// Tests that we'll retry packages that were previously timelocked after we've restored them.
1641+
let chanmon_cfgs = create_chanmon_cfgs(2);
1642+
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
16411643
let persister;
16421644
let new_chain_monitor;
1643-
let node_deserialized;
16441645

1645-
let chanmon_cfgs = create_chanmon_cfgs(2);
1646-
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
16471646
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
1647+
let node_deserialized;
1648+
16481649
let mut nodes = create_network(2, &node_cfgs, &node_chanmgrs);
16491650

16501651
// Open a channel, lock in an HTLC, and immediately broadcast the commitment transaction. This
@@ -1969,19 +1970,15 @@ fn test_anchors_aggregated_revoked_htlc_tx() {
19691970
// Required to sign a revoked commitment transaction
19701971
chanmon_cfgs[1].keys_manager.disable_revocation_policy_check = true;
19711972
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
1973+
let bob_persister;
1974+
let bob_chain_monitor;
1975+
19721976
let mut anchors_config = UserConfig::default();
19731977
anchors_config.channel_handshake_config.announced_channel = true;
19741978
anchors_config.channel_handshake_config.negotiate_anchors_zero_fee_htlc_tx = true;
19751979
anchors_config.manually_accept_inbound_channels = true;
19761980
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[Some(anchors_config), Some(anchors_config)]);
1977-
1978-
let bob_persister: test_utils::TestPersister;
1979-
let bob_chain_monitor: test_utils::TestChainMonitor;
1980-
let bob_deserialized: ChannelManager<
1981-
&test_utils::TestChainMonitor, &test_utils::TestBroadcaster, &test_utils::TestKeysInterface,
1982-
&test_utils::TestKeysInterface, &test_utils::TestKeysInterface, &test_utils::TestFeeEstimator,
1983-
&test_utils::TestRouter, &test_utils::TestLogger,
1984-
>;
1981+
let bob_deserialized;
19851982

19861983
let mut nodes = create_network(2, &node_cfgs, &node_chanmgrs);
19871984

lightning/src/ln/onion_route_tests.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -673,11 +673,11 @@ fn do_test_onion_failure_stale_channel_update(announced_channel: bool) {
673673
config.accept_forwards_to_priv_channels = !announced_channel;
674674
config.channel_config.max_dust_htlc_exposure = MaxDustHTLCExposure::FeeRateMultiplier(5_000_000 / 253);
675675
let chanmon_cfgs = create_chanmon_cfgs(3);
676+
let node_cfgs = create_node_cfgs(3, &chanmon_cfgs);
676677
let persister;
677678
let chain_monitor;
678-
let channel_manager_1_deserialized;
679-
let node_cfgs = create_node_cfgs(3, &chanmon_cfgs);
680679
let node_chanmgrs = create_node_chanmgrs(3, &node_cfgs, &[None, Some(config), None]);
680+
let channel_manager_1_deserialized;
681681
let mut nodes = create_network(3, &node_cfgs, &node_chanmgrs);
682682

683683
let other_channel = create_chan_between_nodes(

lightning/src/ln/payment_tests.rs

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -514,10 +514,10 @@ fn do_retry_with_no_persist(confirm_before_reload: bool) {
514514
// which has separate codepaths for "commitment transaction already confirmed" and not.
515515
let chanmon_cfgs = create_chanmon_cfgs(3);
516516
let node_cfgs = create_node_cfgs(3, &chanmon_cfgs);
517+
let persister;
518+
let new_chain_monitor;
517519
let node_chanmgrs = create_node_chanmgrs(3, &node_cfgs, &[None, None, None]);
518-
let persister: test_utils::TestPersister;
519-
let new_chain_monitor: test_utils::TestChainMonitor;
520-
let nodes_0_deserialized: ChannelManager<&test_utils::TestChainMonitor, &test_utils::TestBroadcaster, &test_utils::TestKeysInterface, &test_utils::TestKeysInterface, &test_utils::TestKeysInterface, &test_utils::TestFeeEstimator, &test_utils::TestRouter, &test_utils::TestLogger>;
520+
let nodes_0_deserialized;
521521
let mut nodes = create_network(3, &node_cfgs, &node_chanmgrs);
522522

523523
let chan_id = create_announced_chan_between_nodes(&nodes, 0, 1).2;
@@ -714,17 +714,17 @@ fn do_test_completed_payment_not_retryable_on_reload(use_dust: bool) {
714714
let mut manually_accept_config = test_default_channel_config();
715715
manually_accept_config.manually_accept_inbound_channels = true;
716716

717-
let node_chanmgrs = create_node_chanmgrs(3, &node_cfgs, &[None, Some(manually_accept_config), None]);
717+
let first_persister;
718+
let first_new_chain_monitor;
719+
let second_persister;
720+
let second_new_chain_monitor;
721+
let third_persister;
722+
let third_new_chain_monitor;
718723

719-
let first_persister: test_utils::TestPersister;
720-
let first_new_chain_monitor: test_utils::TestChainMonitor;
721-
let first_nodes_0_deserialized: ChannelManager<&test_utils::TestChainMonitor, &test_utils::TestBroadcaster, &test_utils::TestKeysInterface, &test_utils::TestKeysInterface, &test_utils::TestKeysInterface, &test_utils::TestFeeEstimator, &test_utils::TestRouter, &test_utils::TestLogger>;
722-
let second_persister: test_utils::TestPersister;
723-
let second_new_chain_monitor: test_utils::TestChainMonitor;
724-
let second_nodes_0_deserialized: ChannelManager<&test_utils::TestChainMonitor, &test_utils::TestBroadcaster, &test_utils::TestKeysInterface, &test_utils::TestKeysInterface, &test_utils::TestKeysInterface, &test_utils::TestFeeEstimator, &test_utils::TestRouter, &test_utils::TestLogger>;
725-
let third_persister: test_utils::TestPersister;
726-
let third_new_chain_monitor: test_utils::TestChainMonitor;
727-
let third_nodes_0_deserialized: ChannelManager<&test_utils::TestChainMonitor, &test_utils::TestBroadcaster, &test_utils::TestKeysInterface, &test_utils::TestKeysInterface, &test_utils::TestKeysInterface, &test_utils::TestFeeEstimator, &test_utils::TestRouter, &test_utils::TestLogger>;
724+
let node_chanmgrs = create_node_chanmgrs(3, &node_cfgs, &[None, Some(manually_accept_config), None]);
725+
let first_nodes_0_deserialized;
726+
let second_nodes_0_deserialized;
727+
let third_nodes_0_deserialized;
728728

729729
let mut nodes = create_network(3, &node_cfgs, &node_chanmgrs);
730730

@@ -913,10 +913,10 @@ fn do_test_dup_htlc_onchain_fails_on_reload(persist_manager_post_event: bool, co
913913
// duplicate HTLC fail/claim (e.g. via a PaymentPathFailed event).
914914
let chanmon_cfgs = create_chanmon_cfgs(2);
915915
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
916+
let persister;
917+
let new_chain_monitor;
916918
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
917-
let persister: test_utils::TestPersister;
918-
let new_chain_monitor: test_utils::TestChainMonitor;
919-
let nodes_0_deserialized: ChannelManager<&test_utils::TestChainMonitor, &test_utils::TestBroadcaster, &test_utils::TestKeysInterface, &test_utils::TestKeysInterface, &test_utils::TestKeysInterface, &test_utils::TestFeeEstimator, &test_utils::TestRouter, &test_utils::TestLogger>;
919+
let nodes_0_deserialized;
920920
let mut nodes = create_network(2, &node_cfgs, &node_chanmgrs);
921921

922922
let (_, _, chan_id, funding_tx) = create_announced_chan_between_nodes(&nodes, 0, 1);
@@ -1054,10 +1054,10 @@ fn test_fulfill_restart_failure() {
10541054
// handle it, we should test the logic for it anyway. We do that here.
10551055
let chanmon_cfgs = create_chanmon_cfgs(2);
10561056
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
1057+
let persister;
1058+
let new_chain_monitor;
10571059
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
1058-
let persister: test_utils::TestPersister;
1059-
let new_chain_monitor: test_utils::TestChainMonitor;
1060-
let nodes_1_deserialized: ChannelManager<&test_utils::TestChainMonitor, &test_utils::TestBroadcaster, &test_utils::TestKeysInterface, &test_utils::TestKeysInterface, &test_utils::TestKeysInterface, &test_utils::TestFeeEstimator, &test_utils::TestRouter, &test_utils::TestLogger>;
1060+
let nodes_1_deserialized;
10611061
let mut nodes = create_network(2, &node_cfgs, &node_chanmgrs);
10621062

10631063
let chan_id = create_announced_chan_between_nodes(&nodes, 0, 1).2;
@@ -1956,10 +1956,10 @@ fn do_automatic_retries(test: AutoRetry) {
19561956
// below.
19571957
let chanmon_cfgs = create_chanmon_cfgs(3);
19581958
let node_cfgs = create_node_cfgs(3, &chanmon_cfgs);
1959-
let node_chanmgrs = create_node_chanmgrs(3, &node_cfgs, &[None, None, None]);
1960-
19611959
let persister;
19621960
let new_chain_monitor;
1961+
1962+
let node_chanmgrs = create_node_chanmgrs(3, &node_cfgs, &[None, None, None]);
19631963
let node_0_deserialized;
19641964

19651965
let mut nodes = create_network(3, &node_cfgs, &node_chanmgrs);
@@ -3178,9 +3178,9 @@ fn do_no_missing_sent_on_midpoint_reload(persist_manager_with_payment: bool) {
31783178
// it was last persisted.
31793179
let chanmon_cfgs = create_chanmon_cfgs(2);
31803180
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
3181-
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
31823181
let (persister_a, persister_b, persister_c);
31833182
let (chain_monitor_a, chain_monitor_b, chain_monitor_c);
3183+
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
31843184
let (nodes_0_deserialized, nodes_0_deserialized_b, nodes_0_deserialized_c);
31853185
let mut nodes = create_network(2, &node_cfgs, &node_chanmgrs);
31863186

@@ -3755,12 +3755,12 @@ fn do_test_payment_metadata_consistency(do_reload: bool, do_modify: bool) {
37553755
// modified payment metadata, which will in turn result in it being failed by the recipient.
37563756
let chanmon_cfgs = create_chanmon_cfgs(4);
37573757
let node_cfgs = create_node_cfgs(4, &chanmon_cfgs);
3758+
let persister;
3759+
let new_chain_monitor;
3760+
37583761
let mut config = test_default_channel_config();
37593762
config.channel_handshake_config.max_inbound_htlc_value_in_flight_percent_of_channel = 50;
37603763
let node_chanmgrs = create_node_chanmgrs(4, &node_cfgs, &[None, Some(config), Some(config), Some(config)]);
3761-
3762-
let persister;
3763-
let new_chain_monitor;
37643764
let nodes_0_deserialized;
37653765

37663766
let mut nodes = create_network(4, &node_cfgs, &node_chanmgrs);

lightning/src/ln/priv_short_conf_tests.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,10 @@ fn test_priv_forwarding_rejection() {
4242
let node_cfgs = create_node_cfgs(3, &chanmon_cfgs);
4343
let mut no_announce_cfg = test_default_channel_config();
4444
no_announce_cfg.accept_forwards_to_priv_channels = false;
45+
let persister;
46+
let new_chain_monitor;
4547
let node_chanmgrs = create_node_chanmgrs(3, &node_cfgs, &[None, Some(no_announce_cfg), None]);
46-
let persister: test_utils::TestPersister;
47-
let new_chain_monitor: test_utils::TestChainMonitor;
48-
let nodes_1_deserialized: ChannelManager<&test_utils::TestChainMonitor, &test_utils::TestBroadcaster, &test_utils::TestKeysInterface, &test_utils::TestKeysInterface, &test_utils::TestKeysInterface, &test_utils::TestFeeEstimator, &test_utils::TestRouter, &test_utils::TestLogger>;
48+
let nodes_1_deserialized;
4949
let mut nodes = create_network(3, &node_cfgs, &node_chanmgrs);
5050

5151
let chan_id_1 = create_announced_chan_between_nodes_with_value(&nodes, 0, 1, 1_000_000, 500_000_000).2;

0 commit comments

Comments
 (0)