Skip to content

Commit 46009a5

Browse files
committed
Add a few more simple tests of the PeerHandler
These increase coverage and caught previous lockorder inversions.
1 parent cc7f859 commit 46009a5

File tree

1 file changed

+43
-1
lines changed

1 file changed

+43
-1
lines changed

lightning/src/ln/peer_handler.rs

+43-1
Original file line numberDiff line numberDiff line change
@@ -1833,7 +1833,7 @@ fn is_gossip_msg(type_id: u16) -> bool {
18331833
#[cfg(test)]
18341834
mod tests {
18351835
use ln::peer_handler::{PeerManager, MessageHandler, SocketDescriptor, IgnoringMessageHandler, filter_addresses};
1836-
use ln::msgs;
1836+
use ln::{msgs, wire};
18371837
use ln::msgs::NetAddress;
18381838
use util::events;
18391839
use util::test_utils;
@@ -1946,6 +1946,48 @@ mod tests {
19461946
assert_eq!(peers[0].peers.read().unwrap().len(), 0);
19471947
}
19481948

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