Skip to content

Commit 930ee2a

Browse files
committed
Add a few more simple tests of the PeerHandler
These increase coverage and caught previous lockorder inversions.
1 parent 9ff0a19 commit 930ee2a

File tree

1 file changed

+43
-1
lines changed

1 file changed

+43
-1
lines changed

lightning/src/ln/peer_handler.rs

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1829,7 +1829,7 @@ fn is_gossip_msg(type_id: u16) -> bool {
18291829
#[cfg(test)]
18301830
mod tests {
18311831
use ln::peer_handler::{PeerManager, MessageHandler, SocketDescriptor, IgnoringMessageHandler, filter_addresses};
1832-
use ln::msgs;
1832+
use ln::{msgs, wire};
18331833
use ln::msgs::NetAddress;
18341834
use util::events;
18351835
use util::test_utils;
@@ -1942,6 +1942,48 @@ mod tests {
19421942
assert_eq!(peers[0].peers.read().unwrap().len(), 0);
19431943
}
19441944

1945+
#[test]
1946+
fn test_send_simple_msg() {
1947+
// Simple test which builds a network of PeerManager, connects and brings them to NoiseState::Finished and
1948+
// push a message from one peer to another.
1949+
let cfgs = create_peermgr_cfgs(2);
1950+
let a_chan_handler = test_utils::TestChannelMessageHandler::new();
1951+
let b_chan_handler = test_utils::TestChannelMessageHandler::new();
1952+
let mut peers = create_network(2, &cfgs);
1953+
let (fd_a, mut fd_b) = establish_connection(&peers[0], &peers[1]);
1954+
assert_eq!(peers[0].peers.read().unwrap().len(), 1);
1955+
1956+
let secp_ctx = Secp256k1::new();
1957+
let their_id = PublicKey::from_secret_key(&secp_ctx, &peers[1].our_node_secret);
1958+
1959+
let msg = msgs::Shutdown { channel_id: [42; 32], scriptpubkey: bitcoin::Script::new() };
1960+
a_chan_handler.pending_events.lock().unwrap().push(events::MessageSendEvent::SendShutdown {
1961+
node_id: their_id, msg: msg.clone()
1962+
});
1963+
peers[0].message_handler.chan_handler = &a_chan_handler;
1964+
1965+
b_chan_handler.expect_receive_msg(wire::Message::Shutdown(msg));
1966+
peers[1].message_handler.chan_handler = &b_chan_handler;
1967+
1968+
peers[0].process_events();
1969+
1970+
let a_data = fd_a.outbound_data.lock().unwrap().split_off(0);
1971+
assert_eq!(peers[1].read_event(&mut fd_b, &a_data).unwrap(), false);
1972+
}
1973+
1974+
#[test]
1975+
fn test_disconnect_all_peer() {
1976+
// Simple test which builds a network of PeerManager, connects and brings them to NoiseState::Finished and
1977+
// then calls disconnect_all_peers
1978+
let cfgs = create_peermgr_cfgs(2);
1979+
let peers = create_network(2, &cfgs);
1980+
establish_connection(&peers[0], &peers[1]);
1981+
assert_eq!(peers[0].peers.read().unwrap().len(), 1);
1982+
1983+
peers[0].disconnect_all_peers();
1984+
assert_eq!(peers[0].peers.read().unwrap().len(), 0);
1985+
}
1986+
19451987
#[test]
19461988
fn test_timer_tick_occurred() {
19471989
// Create peers, a vector of two peer managers, perform initial set up and check that peers[0] has one Peer.

0 commit comments

Comments
 (0)