@@ -8,18 +8,18 @@ use common::{
8
8
} ;
9
9
10
10
use lightning:: check_added_monitors;
11
- use lightning:: events:: Event ;
11
+ use lightning:: events:: { ClosureReason , Event } ;
12
12
use lightning:: get_event_msg;
13
13
use lightning:: ln:: channelmanager:: PaymentId ;
14
14
use lightning:: ln:: channelmanager:: Retry ;
15
- use lightning:: ln:: functional_test_utils:: create_chan_between_nodes_with_value;
16
15
use lightning:: ln:: functional_test_utils:: create_funding_transaction;
17
16
use lightning:: ln:: functional_test_utils:: do_commitment_signed_dance;
18
17
use lightning:: ln:: functional_test_utils:: expect_channel_pending_event;
19
18
use lightning:: ln:: functional_test_utils:: expect_channel_ready_event;
20
19
use lightning:: ln:: functional_test_utils:: expect_payment_sent;
21
20
use lightning:: ln:: functional_test_utils:: test_default_channel_config;
22
21
use lightning:: ln:: functional_test_utils:: SendEvent ;
22
+ use lightning:: ln:: functional_test_utils:: { connect_blocks, create_chan_between_nodes_with_value} ;
23
23
use lightning:: ln:: msgs:: BaseMessageHandler ;
24
24
use lightning:: ln:: msgs:: ChannelMessageHandler ;
25
25
use lightning:: ln:: msgs:: MessageSendEvent ;
@@ -1115,8 +1115,9 @@ fn client_trusts_lsp_end_to_end_test() {
1115
1115
} ;
1116
1116
1117
1117
// Check that before the client claims, the service node has not broadcasted anything
1118
- let events = service_node. liquidity_manager . get_and_clear_pending_events ( ) ;
1119
- assert ! ( events. is_empty( ) , "Expected no events from service node, got: {:?}" , events) ;
1118
+ let broadcasted = service_node. inner . tx_broadcaster . txn_broadcasted . lock ( ) . unwrap ( ) ;
1119
+ assert ! ( broadcasted. is_empty( ) , "There should be no broadcasted txs yet" ) ;
1120
+ drop ( broadcasted) ;
1120
1121
1121
1122
client_node. inner . node . claim_funds ( preimage. unwrap ( ) ) ;
1122
1123
@@ -1728,10 +1729,56 @@ fn client_trusts_lsp_partial_fee_does_not_trigger_broadcast() {
1728
1729
let partial_skim_msat = fee_base_msat - 1 ; // less than promised fee
1729
1730
service_handler. payment_forwarded ( channel_id, partial_skim_msat) . unwrap ( ) ;
1730
1731
1731
- let events_after_partial = service_node. liquidity_manager . get_and_clear_pending_events ( ) ;
1732
+ let broadcasted = service_node. inner . tx_broadcaster . txn_broadcasted . lock ( ) . unwrap ( ) ;
1733
+ assert ! ( broadcasted. is_empty( ) , "There should be no broadcasted txs yet" ) ;
1734
+ drop ( broadcasted) ;
1735
+
1736
+ // before mining blocks, service node should have 2 channels
1737
+ {
1738
+ let chans = service_node. inner . node . list_channels ( ) ;
1739
+ assert_eq ! ( chans. len( ) , 2 ) ;
1740
+ assert ! ( chans. iter( ) . any( |cd| cd. counterparty. node_id == payer_node_id) ) ;
1741
+ assert ! ( chans. iter( ) . any( |cd| cd. counterparty. node_id == client_node_id) ) ;
1742
+ }
1743
+
1744
+ const SOME_EXTRA_BLOCKS : u32 = 3 ;
1745
+ let client_htlc_cltv_expiry = pay_event. msgs [ 0 ] . cltv_expiry ;
1746
+ let target_height = client_htlc_cltv_expiry. saturating_add ( SOME_EXTRA_BLOCKS ) ;
1747
+ let cur_height = service_node. inner . best_block_info ( ) . 1 ;
1748
+ let d = target_height - cur_height;
1749
+ connect_blocks ( & service_node. inner , d) ;
1750
+ connect_blocks ( & client_node. inner , d) ;
1751
+ connect_blocks ( & payer_node, d) ;
1752
+
1753
+ service_node. inner . node . process_pending_htlc_forwards ( ) ;
1754
+ client_node. inner . node . process_pending_htlc_forwards ( ) ;
1755
+
1756
+ let svc_events = service_node. inner . node . get_and_clear_pending_events ( ) ;
1757
+ let _ = client_node. inner . node . get_and_clear_pending_events ( ) ;
1758
+ let closed_on_service = svc_events. iter ( ) . any ( |ev| {
1759
+ matches ! ( ev, Event :: ChannelClosed { reason: ClosureReason :: HTLCsTimedOut { .. } , .. } )
1760
+ } ) ;
1732
1761
assert ! (
1733
- events_after_partial . is_empty ( ) ,
1734
- "Funding tx broadcast event emitted prematurely: {:?}" ,
1735
- events_after_partial
1762
+ closed_on_service ,
1763
+ "Expected service->client channel to be force-closed due to HTLC timeout. svc_events = {:?}" ,
1764
+ svc_events
1736
1765
) ;
1766
+
1767
+ // now check the service->payer channel
1768
+ {
1769
+ let chans = service_node. inner . node . list_channels ( ) ;
1770
+ assert ! ( chans. len( ) == 1 ) ;
1771
+ assert ! (
1772
+ chans. iter( ) . any( |cd| cd. counterparty. node_id == payer_node_id && cd. is_channel_ready) ,
1773
+ "Expected payer->service channel to remain open. channels: {:?}" ,
1774
+ chans
1775
+ ) ;
1776
+ }
1777
+
1778
+ service_node. inner . node . get_and_clear_pending_msg_events ( ) ;
1779
+ client_node. inner . node . get_and_clear_pending_msg_events ( ) ;
1780
+ payer_node. node . get_and_clear_pending_msg_events ( ) ;
1781
+ service_node. inner . chain_monitor . added_monitors . lock ( ) . unwrap ( ) . clear ( ) ;
1782
+ client_node. inner . chain_monitor . added_monitors . lock ( ) . unwrap ( ) . clear ( ) ;
1783
+ payer_node. chain_monitor . added_monitors . lock ( ) . unwrap ( ) . clear ( ) ;
1737
1784
}
0 commit comments