Skip to content

Commit 9c428a2

Browse files
committed
wip test
1 parent 637b216 commit 9c428a2

File tree

1 file changed

+59
-24
lines changed

1 file changed

+59
-24
lines changed

src/tests/mod.rs

Lines changed: 59 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -75,16 +75,14 @@ fn generate_node_announcement(private_key: Option<SecretKey>) -> NodeAnnouncemen
7575
}
7676

7777

78-
fn generate_channel_announcement(short_channel_id: u64) -> ChannelAnnouncement {
78+
fn generate_channel_announcement_between_nodes(short_channel_id: u64, random_private_key_1: &SecretKey, random_private_key_2: &SecretKey) -> ChannelAnnouncement {
7979
let secp_context = Secp256k1::new();
8080

81-
let random_private_key_1 = SecretKey::from_slice(&[1; 32]).unwrap();
8281
let random_public_key_1 = random_private_key_1.public_key(&secp_context);
83-
let node_id_1 = NodeId::from_pubkey(&random_public_key_1);
82+
let node_id_1 = NodeId::from_pubkey(random_public_key_1);
8483

85-
let random_private_key_2 = SecretKey::from_slice(&[2; 32]).unwrap();
8684
let random_public_key_2 = random_private_key_2.public_key(&secp_context);
87-
let node_id_2 = NodeId::from_pubkey(&random_public_key_2);
85+
let node_id_2 = NodeId::from_pubkey(random_public_key_2);
8886

8987
let announcement = UnsignedChannelAnnouncement {
9088
features: ChannelFeatures::empty(),
@@ -98,8 +96,8 @@ fn generate_channel_announcement(short_channel_id: u64) -> ChannelAnnouncement {
9896
};
9997

10098
let msg_hash = bitcoin::secp256k1::Message::from_slice(&Sha256dHash::hash(&announcement.encode()[..])[..]).unwrap();
101-
let node_signature_1 = secp_context.sign_ecdsa(&msg_hash, &random_private_key_1);
102-
let node_signature_2 = secp_context.sign_ecdsa(&msg_hash, &random_private_key_2);
99+
let node_signature_1 = secp_context.sign_ecdsa(&msg_hash, random_private_key_1);
100+
let node_signature_2 = secp_context.sign_ecdsa(&msg_hash, random_private_key_2);
103101

104102
ChannelAnnouncement {
105103
node_signature_1,
@@ -110,6 +108,12 @@ fn generate_channel_announcement(short_channel_id: u64) -> ChannelAnnouncement {
110108
}
111109
}
112110

111+
fn generate_channel_announcement(short_channel_id: u64) -> ChannelAnnouncement {
112+
let random_private_key_1 = SecretKey::from_slice(&[1; 32]).unwrap();
113+
let random_private_key_2 = SecretKey::from_slice(&[2; 32]).unwrap();
114+
generate_channel_announcement_between_nodes(short_channel_id, &random_private_key_1, &random_private_key_2)
115+
}
116+
113117
fn generate_update(scid: u64, direction: bool, timestamp: u32, expiry_delta: u16, min_msat: u64, max_msat: u64, base_msat: u32, fee_rate: u32) -> ChannelUpdate {
114118
let flag_mask = if direction { 1 } else { 0 };
115119
ChannelUpdate {
@@ -360,29 +364,58 @@ async fn test_node_announcement_delta_detection() {
360364
let timestamp = current_time() - 10;
361365

362366
{ // seed the db
367+
let third_node = SecretKey::from_slice(&[3; 32]).unwrap();
368+
let fourth_node = SecretKey::from_slice(&[4; 32]).unwrap();
363369

364370
{ // necessary for the node announcements to be considered relevant
365371
let announcement = generate_channel_announcement(1);
366-
let update_1 = generate_update(1, false, timestamp, 0, 0, 0, 6, 0);
367-
let update_2 = generate_update(1, true, timestamp, 0, 0, 0, 6, 0);
372+
let update_1 = generate_update(1, false, timestamp - 10, 0, 0, 0, 6, 0);
373+
let update_2 = generate_update(1, true, timestamp - 10, 0, 0, 0, 6, 0);
368374

369375
network_graph_arc.update_channel_from_announcement_no_lookup(&announcement).unwrap();
370376
network_graph_arc.update_channel_unsigned(&update_1.contents).unwrap();
371377
network_graph_arc.update_channel_unsigned(&update_2.contents).unwrap();
372378

373-
receiver.send(GossipMessage::ChannelAnnouncement(announcement, 100, Some(timestamp))).await.unwrap();
374-
receiver.send(GossipMessage::ChannelUpdate(update_1, Some(timestamp))).await.unwrap();
375-
receiver.send(GossipMessage::ChannelUpdate(update_2, Some(timestamp))).await.unwrap();
379+
receiver.send(GossipMessage::ChannelAnnouncement(announcement, 100, Some(timestamp - 10))).await.unwrap();
380+
receiver.send(GossipMessage::ChannelUpdate(update_1, Some(timestamp - 10))).await.unwrap();
381+
receiver.send(GossipMessage::ChannelUpdate(update_2, Some(timestamp - 10))).await.unwrap();
376382
}
377383

378-
let mut announcement = generate_node_announcement(None);
379-
announcement.contents.timestamp = timestamp - 10;
380-
network_graph_arc.update_node_from_unsigned_announcement(&announcement.contents).unwrap();
381-
receiver.send(GossipMessage::NodeAnnouncement(announcement.clone(), Some(announcement.contents.timestamp))).await.unwrap();
382-
announcement.contents.timestamp = timestamp - 8;
383-
network_graph_arc.update_node_from_unsigned_announcement(&announcement.contents).unwrap();
384-
receiver.send(GossipMessage::NodeAnnouncement(announcement.clone(), Some(announcement.contents.timestamp))).await.unwrap();
384+
{ // necessary for the second node announcements to be considered relevant
385+
let announcement = generate_channel_announcement_between_nodes(1, &third_node, &fourth_node);
386+
let update_1 = generate_update(1, false, timestamp - 10, 0, 0, 0, 6, 0);
387+
let update_2 = generate_update(1, true, timestamp - 10, 0, 0, 0, 6, 0);
385388

389+
network_graph_arc.update_channel_from_announcement_no_lookup(&announcement).unwrap();
390+
network_graph_arc.update_channel_unsigned(&update_1.contents).unwrap();
391+
network_graph_arc.update_channel_unsigned(&update_2.contents).unwrap();
392+
393+
receiver.send(GossipMessage::ChannelAnnouncement(announcement, 100, Some(timestamp - 10))).await.unwrap();
394+
receiver.send(GossipMessage::ChannelUpdate(update_1, Some(timestamp - 10))).await.unwrap();
395+
receiver.send(GossipMessage::ChannelUpdate(update_2, Some(timestamp - 10))).await.unwrap();
396+
}
397+
398+
{
399+
// Add some node announcements from before the last sync for node 1.
400+
let mut announcement = generate_node_announcement(None);
401+
announcement.contents.timestamp = timestamp - 10;
402+
network_graph_arc.update_node_from_unsigned_announcement(&announcement.contents).unwrap();
403+
receiver.send(GossipMessage::NodeAnnouncement(announcement.clone(), Some(announcement.contents.timestamp))).await.unwrap();
404+
announcement.contents.timestamp = timestamp - 8;
405+
network_graph_arc.update_node_from_unsigned_announcement(&announcement.contents).unwrap();
406+
receiver.send(GossipMessage::NodeAnnouncement(announcement.clone(), Some(announcement.contents.timestamp))).await.unwrap();
407+
}
408+
409+
{
410+
// Add a node announcement from before the last sync for node 4.
411+
let mut announcement = generate_node_announcement(Some(fourth_node.clone()));
412+
announcement.contents.timestamp = timestamp - 10;
413+
network_graph_arc.update_node_from_unsigned_announcement(&announcement.contents).unwrap();
414+
receiver.send(GossipMessage::NodeAnnouncement(announcement.clone(), Some(announcement.contents.timestamp))).await.unwrap();
415+
}
416+
417+
// Add current announcements for node 2 and 3, both of which should be included in their
418+
// entirety as they're new since the last sync time
386419
{
387420
let mut current_announcement = generate_node_announcement(Some(SecretKey::from_slice(&[2; 32]).unwrap()));
388421
current_announcement.contents.features = NodeFeatures::from_be_bytes(vec![23, 48]);
@@ -392,14 +425,15 @@ async fn test_node_announcement_delta_detection() {
392425
}
393426

394427
{
395-
let mut current_announcement = generate_node_announcement(Some(SecretKey::from_slice(&[3; 32]).unwrap()));
428+
let mut current_announcement = generate_node_announcement(Some(second_node));
396429
current_announcement.contents.features = NodeFeatures::from_be_bytes(vec![22, 49]);
397430
current_announcement.contents.timestamp = timestamp;
398431
receiver.send(GossipMessage::NodeAnnouncement(current_announcement, Some(timestamp))).await.unwrap();
399432
}
400433

401434
{
402-
// modify announcement to contain a bunch of addresses
435+
// modify announcement of node 1 to contain a bunch of addresses
436+
let mut announcement = generate_node_announcement(None);
403437
announcement.contents.addresses.push(SocketAddress::Hostname {
404438
hostname: "google.com".to_string().try_into().unwrap(),
405439
port: 443,
@@ -431,11 +465,12 @@ async fn test_node_announcement_delta_detection() {
431465
let serialization = serialize_delta(&delta, 2, logger.clone());
432466
clean_test_db().await;
433467

468+
// We should have
434469
assert_eq!(serialization.message_count, 3);
435470
assert_eq!(serialization.node_announcement_count, 2);
436-
assert_eq!(serialization.node_update_count, 1);
437-
assert_eq!(serialization.node_feature_update_count, 1);
438-
assert_eq!(serialization.node_address_update_count, 1);
471+
assert_eq!(serialization.node_update_count, 2);
472+
assert_eq!(serialization.node_feature_update_count, 2);
473+
assert_eq!(serialization.node_address_update_count, 2);
439474
}
440475

441476
/// If a channel has only seen updates in one direction, it should not be announced

0 commit comments

Comments
 (0)