@@ -358,7 +358,7 @@ impl From<(transports::Addr, OwnedTransmit)> for TransportsSenderMessage {
358358#[ cfg( test) ]
359359mod tests {
360360
361- use tracing_test:: traced_test;
361+ // use tracing_test::traced_test;
362362
363363 // use super::*;
364364
@@ -378,131 +378,136 @@ mod tests {
378378 // (std::net::IpAddr::V4(Ipv4Addr::LOCALHOST), port).into()
379379 // }
380380
381+ // TODO(multipath-tests): Support this again
382+ /*
381383 #[tokio::test]
382384 #[traced_test]
383385 async fn test_prune_direct_addresses() {
384- panic ! ( "support this again" ) ;
385- // let transports = Transports::new(Vec::new(), Vec::new(), Arc::new(1200.into()));
386- // let direct_addrs = DiscoveredDirectAddrs::default();
387- // let secret_key = SecretKey::generate(&mut rand::rngs::OsRng);
388- // let (disco, _) = DiscoState::new(&secret_key);
389- // let node_map = NodeMap::new(
390- // secret_key.public(),
391- // Default::default(),
392- // transports.create_sender(),
393- // direct_addrs.addrs.watch(),
394- // disco,
395- // );
396- // let public_key = SecretKey::generate(rand::thread_rng()).public();
397- // let id = node_map
398- // .inner
399- // .lock()
400- // .unwrap()
401- // .insert_node(Options {
402- // node_id: public_key,
403- // relay_url: None,
404- // active: false,
405- // source: Source::NamedApp {
406- // name: "test".into(),
407- // },
408- // path_selection: PathSelection::default(),
409- // })
410- // .id();
411-
412- // const LOCALHOST: IpAddr = IpAddr::V4(std::net::Ipv4Addr::LOCALHOST);
413-
414- // // add [`MAX_INACTIVE_DIRECT_ADDRESSES`] active direct addresses and double
415- // // [`MAX_INACTIVE_DIRECT_ADDRESSES`] that are inactive
416-
417- // info!("Adding active addresses");
418- // for i in 0..MAX_INACTIVE_DIRECT_ADDRESSES {
419- // let addr = SocketAddr::new(LOCALHOST, 5000 + i as u16);
420- // let node_addr = NodeAddr::new(public_key).with_direct_addresses([addr]);
421- // // add address
422- // node_map.add_test_addr(node_addr).await;
423- // // make it active
424- // node_map.inner.lock().unwrap().receive_udp(addr);
425- // }
426-
427- // info!("Adding offline/inactive addresses");
428- // for i in 0..MAX_INACTIVE_DIRECT_ADDRESSES * 2 {
429- // let addr = SocketAddr::new(LOCALHOST, 6000 + i as u16);
430- // let node_addr = NodeAddr::new(public_key).with_direct_addresses([addr]);
431- // node_map.add_test_addr(node_addr).await;
432- // }
433-
434- // let mut node_map_inner = node_map.inner.lock().unwrap();
435- // let endpoint = node_map_inner.by_id.get_mut(&id).unwrap();
436-
437- // info!("Adding alive addresses");
438- // for i in 0..MAX_INACTIVE_DIRECT_ADDRESSES {
439- // let addr = SendAddr::Udp(SocketAddr::new(LOCALHOST, 7000 + i as u16));
440- // let txid = stun_rs::TransactionId::from([i as u8; 12]);
441- // // Note that this already invokes .prune_direct_addresses() because these are
442- // // new UDP paths.
443- // // endpoint.handle_ping(addr, txid);
444- // }
445-
446- // info!("Pruning addresses");
447- // endpoint.prune_direct_addresses(Instant::now());
448-
449- // // Half the offline addresses should have been pruned. All the active and alive
450- // // addresses should have been kept.
451- // assert_eq!(
452- // endpoint.direct_addresses().count(),
453- // MAX_INACTIVE_DIRECT_ADDRESSES * 3
454- // );
455-
456- // // We should have both offline and alive addresses which are not active.
457- // assert_eq!(
458- // endpoint
459- // .direct_address_states()
460- // .filter(|(_addr, state)| !state.is_active())
461- // .count(),
462- // MAX_INACTIVE_DIRECT_ADDRESSES * 2
463- // )
386+ let transports = Transports::new(Vec::new(), Vec::new(), Arc::new(1200.into()));
387+ let direct_addrs = DiscoveredDirectAddrs::default();
388+ let secret_key = SecretKey::generate(&mut rand::rngs::OsRng);
389+ let (disco, _) = DiscoState::new(&secret_key);
390+ let node_map = NodeMap::new(
391+ secret_key.public(),
392+ Default::default(),
393+ transports.create_sender(),
394+ direct_addrs.addrs.watch(),
395+ disco,
396+ );
397+ let public_key = SecretKey::generate(rand::thread_rng()).public();
398+ let id = node_map
399+ .inner
400+ .lock()
401+ .unwrap()
402+ .insert_node(Options {
403+ node_id: public_key,
404+ relay_url: None,
405+ active: false,
406+ source: Source::NamedApp {
407+ name: "test".into(),
408+ },
409+ path_selection: PathSelection::default(),
410+ })
411+ .id();
412+
413+ const LOCALHOST: IpAddr = IpAddr::V4(std::net::Ipv4Addr::LOCALHOST);
414+
415+ // add [`MAX_INACTIVE_DIRECT_ADDRESSES`] active direct addresses and double
416+ // [`MAX_INACTIVE_DIRECT_ADDRESSES`] that are inactive
417+
418+ info!("Adding active addresses");
419+ for i in 0..MAX_INACTIVE_DIRECT_ADDRESSES {
420+ let addr = SocketAddr::new(LOCALHOST, 5000 + i as u16);
421+ let node_addr = NodeAddr::new(public_key).with_direct_addresses([addr]);
422+ // add address
423+ node_map.add_test_addr(node_addr).await;
424+ // make it active
425+ node_map.inner.lock().unwrap().receive_udp(addr);
426+ }
427+
428+ info!("Adding offline/inactive addresses");
429+ for i in 0..MAX_INACTIVE_DIRECT_ADDRESSES * 2 {
430+ let addr = SocketAddr::new(LOCALHOST, 6000 + i as u16);
431+ let node_addr = NodeAddr::new(public_key).with_direct_addresses([addr]);
432+ node_map.add_test_addr(node_addr).await;
433+ }
434+
435+ let mut node_map_inner = node_map.inner.lock().unwrap();
436+ let endpoint = node_map_inner.by_id.get_mut(&id).unwrap();
437+
438+ info!("Adding alive addresses");
439+ for i in 0..MAX_INACTIVE_DIRECT_ADDRESSES {
440+ let addr = SendAddr::Udp(SocketAddr::new(LOCALHOST, 7000 + i as u16));
441+ let txid = stun_rs::TransactionId::from([i as u8; 12]);
442+ // Note that this already invokes .prune_direct_addresses() because these are
443+ // new UDP paths.
444+ // endpoint.handle_ping(addr, txid);
445+ }
446+
447+ info!("Pruning addresses");
448+ endpoint.prune_direct_addresses(Instant::now());
449+
450+ // Half the offline addresses should have been pruned. All the active and alive
451+ // addresses should have been kept.
452+ assert_eq!(
453+ endpoint.direct_addresses().count(),
454+ MAX_INACTIVE_DIRECT_ADDRESSES * 3
455+ );
456+
457+ // We should have both offline and alive addresses which are not active.
458+ assert_eq!(
459+ endpoint
460+ .direct_address_states()
461+ .filter(|(_addr, state)| !state.is_active())
462+ .count(),
463+ MAX_INACTIVE_DIRECT_ADDRESSES * 2
464+ )
464465 }
466+ */
465467
468+ // TODO(multipath-tests): Support this again
469+ /*
466470 #[tokio::test]
467471 async fn test_prune_inactive() {
468472 panic!("support this again");
469- // let transports = Transports::new(Vec::new(), Vec::new(), Arc::new(1200.into()));
470- // let direct_addrs = DiscoveredDirectAddrs::default();
471- // let secret_key = SecretKey::generate(&mut rand::rngs::OsRng);
472- // let (disco, _) = DiscoState::new(&secret_key);
473- // let node_map = NodeMap::new(
474- // secret_key.public(),
475- // Default::default(),
476- // transports.create_sender(),
477- // direct_addrs.addrs.watch(),
478- // disco,
479- // );
480- // // add one active node and more than MAX_INACTIVE_NODES inactive nodes
481- // let active_node = SecretKey::generate(rand::thread_rng()).public();
482- // let addr = SocketAddr::new(IpAddr::V4(Ipv4Addr::LOCALHOST), 167);
483- // node_map
484- // .add_test_addr(NodeAddr::new(active_node).with_direct_addresses([addr]))
485- // .await;
486- // node_map
487- // .inner
488- // .lock()
489- // .unwrap()
490- // .receive_udp(addr)
491- // .expect("registered");
492-
493- // for _ in 0..MAX_INACTIVE_NODES + 1 {
494- // let node = SecretKey::generate(rand::thread_rng()).public();
495- // node_map.add_test_addr(NodeAddr::new(node)).await;
496- // }
497-
498- // assert_eq!(node_map.node_count(), MAX_INACTIVE_NODES + 2);
499- // node_map.prune_inactive();
500- // assert_eq!(node_map.node_count(), MAX_INACTIVE_NODES + 1);
501- // node_map
502- // .inner
503- // .lock()
504- // .unwrap()
505- // .get(NodeStateKey::NodeId(active_node))
506- // .expect("should not be pruned");
473+ let transports = Transports::new(Vec::new(), Vec::new(), Arc::new(1200.into()));
474+ let direct_addrs = DiscoveredDirectAddrs::default();
475+ let secret_key = SecretKey::generate(&mut rand::rngs::OsRng);
476+ let (disco, _) = DiscoState::new(&secret_key);
477+ let node_map = NodeMap::new(
478+ secret_key.public(),
479+ Default::default(),
480+ transports.create_sender(),
481+ direct_addrs.addrs.watch(),
482+ disco,
483+ );
484+ // add one active node and more than MAX_INACTIVE_NODES inactive nodes
485+ let active_node = SecretKey::generate(rand::thread_rng()).public();
486+ let addr = SocketAddr::new(IpAddr::V4(Ipv4Addr::LOCALHOST), 167);
487+ node_map
488+ .add_test_addr(NodeAddr::new(active_node).with_direct_addresses([addr]))
489+ .await;
490+ node_map
491+ .inner
492+ .lock()
493+ .unwrap()
494+ .receive_udp(addr)
495+ .expect("registered");
496+
497+ for _ in 0..MAX_INACTIVE_NODES + 1 {
498+ let node = SecretKey::generate(rand::thread_rng()).public();
499+ node_map.add_test_addr(NodeAddr::new(node)).await;
500+ }
501+
502+ assert_eq!(node_map.node_count(), MAX_INACTIVE_NODES + 2);
503+ node_map.prune_inactive();
504+ assert_eq!(node_map.node_count(), MAX_INACTIVE_NODES + 1);
505+ node_map
506+ .inner
507+ .lock()
508+ .unwrap()
509+ .get(NodeStateKey::NodeId(active_node))
510+ .expect("should not be pruned");
507511 }
512+ */
508513}
0 commit comments