From d6721797a991938fea47956e39b866fd7ad7b2ee Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Mon, 25 Apr 2022 23:53:33 +0000 Subject: [PATCH] removes outdated and flaky test_skip_repair from retransmit-stage (backport #24121) (#24663) * removes outdated and flaky test_skip_repair from retransmit-stage (#24121) test_skip_repair in retransmit-stage is no longer relevant because following: https://github.com/solana-labs/solana/pull/19233 repair packets are filtered out earlier in window-service and so retransmit stage does not know if a shred is repaired or not. Also, following turbine peer shuffle changes: https://github.com/solana-labs/solana/pull/24080 the test has become flaky since it does not take into account how peers are shuffled for each shred. (cherry picked from commit 228257149307fc295678ebe42813fdefe3368102) # Conflicts: # core/src/retransmit_stage.rs * removes mergify merge conflicts Co-authored-by: behzad nouri --- core/src/retransmit_stage.rs | 90 +----------------------------------- 1 file changed, 1 insertion(+), 89 deletions(-) diff --git a/core/src/retransmit_stage.rs b/core/src/retransmit_stage.rs index da678dac8ea2c6..f32cf5f5af1e95 100644 --- a/core/src/retransmit_stage.rs +++ b/core/src/retransmit_stage.rs @@ -528,95 +528,7 @@ impl RetransmitStage { #[cfg(test)] mod tests { - use { - super::*, - solana_gossip::contact_info::ContactInfo, - solana_ledger::{ - blockstore_processor::{process_blockstore, ProcessOptions}, - create_new_tmp_ledger, - genesis_utils::{create_genesis_config, GenesisConfigInfo}, - }, - solana_net_utils::find_available_port_in_range, - solana_sdk::signature::Keypair, - solana_streamer::socket::SocketAddrSpace, - std::net::{IpAddr, Ipv4Addr}, - }; - - #[test] - fn test_skip_repair() { - solana_logger::setup(); - let GenesisConfigInfo { genesis_config, .. } = create_genesis_config(123); - let (ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_config); - let blockstore = Blockstore::open(&ledger_path).unwrap(); - let opts = ProcessOptions { - accounts_db_test_hash_calculation: true, - full_leader_cache: true, - ..ProcessOptions::default() - }; - let (accounts_package_sender, _) = channel(); - let (bank_forks, cached_leader_schedule, _) = process_blockstore( - &genesis_config, - &blockstore, - Vec::new(), - opts, - None, - None, - accounts_package_sender, - None, - ) - .unwrap(); - let leader_schedule_cache = Arc::new(cached_leader_schedule); - let bank_forks = Arc::new(RwLock::new(bank_forks)); - - let mut me = ContactInfo::new_localhost(&solana_sdk::pubkey::new_rand(), 0); - let ip_addr = IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0)); - let port = find_available_port_in_range(ip_addr, (8000, 10000)).unwrap(); - let me_retransmit = UdpSocket::bind(format!("127.0.0.1:{}", port)).unwrap(); - // need to make sure tvu and tpu are valid addresses - me.tvu_forwards = me_retransmit.local_addr().unwrap(); - - let port = find_available_port_in_range(ip_addr, (8000, 10000)).unwrap(); - me.tvu = UdpSocket::bind(format!("127.0.0.1:{}", port)) - .unwrap() - .local_addr() - .unwrap(); - // This fixes the order of nodes returned by shuffle_peers_and_index, - // and makes turbine retransmit tree deterministic for the purpose of - // the test. - let other = std::iter::repeat_with(solana_sdk::pubkey::new_rand) - .find(|pk| me.id < *pk) - .unwrap(); - let other = ContactInfo::new_localhost(&other, 0); - let cluster_info = ClusterInfo::new( - other, - Arc::new(Keypair::new()), - SocketAddrSpace::Unspecified, - ); - cluster_info.insert_info(me); - - let retransmit_socket = Arc::new(vec![UdpSocket::bind("0.0.0.0:0").unwrap()]); - let cluster_info = Arc::new(cluster_info); - - let (retransmit_sender, retransmit_receiver) = channel(); - let _retransmit_sender = retransmit_sender.clone(); - let _t_retransmit = retransmitter( - retransmit_socket, - bank_forks, - leader_schedule_cache, - cluster_info, - retransmit_receiver, - Arc::default(), // MaxSlots - None, - ); - - let shred = Shred::new_from_data(0, 0, 0, None, true, true, 0, 0x20, 0); - // it should send this over the sockets. - retransmit_sender.send(vec![shred]).unwrap(); - let mut packet_batch = PacketBatch::new(vec![]); - solana_streamer::packet::recv_from(&mut packet_batch, &me_retransmit, 1).unwrap(); - assert_eq!(packet_batch.packets.len(), 1); - assert!(!packet_batch.packets[0].meta.repair()); - } + use super::*; #[test] fn test_already_received() {