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.
This commit is contained in:
parent
eb65ffb779
commit
2282571493
|
@ -525,85 +525,7 @@ impl RetransmitStage {
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use {
|
use super::*;
|
||||||
super::*,
|
|
||||||
solana_gossip::contact_info::ContactInfo,
|
|
||||||
solana_ledger::{
|
|
||||||
blockstore_processor::{test_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 (bank_forks, leader_schedule_cache) =
|
|
||||||
test_process_blockstore(&genesis_config, &blockstore, opts);
|
|
||||||
let leader_schedule_cache = Arc::new(leader_schedule_cache);
|
|
||||||
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) = unbounded();
|
|
||||||
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());
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_already_received() {
|
fn test_already_received() {
|
||||||
|
|
Loading…
Reference in New Issue