This reverts commit c901227d0f
.
This commit is contained in:
committed by
Tyera Eulberg
parent
e3e9d32f33
commit
01e932c6a4
@ -632,19 +632,19 @@ mod tests {
|
|||||||
assert!(should_skip_retransmit(&shred, &shreds_received));
|
assert!(should_skip_retransmit(&shred, &shreds_received));
|
||||||
assert!(should_skip_retransmit(&shred, &shreds_received));
|
assert!(should_skip_retransmit(&shred, &shreds_received));
|
||||||
|
|
||||||
let shred = Shred::new_empty_coding(slot, index, 0, 1, 1, version);
|
let shred = Shred::new_empty_coding(slot, index, 0, 1, 1, 0, version);
|
||||||
// Coding at (1, 5) passes
|
// Coding at (1, 5) passes
|
||||||
assert!(!should_skip_retransmit(&shred, &shreds_received));
|
assert!(!should_skip_retransmit(&shred, &shreds_received));
|
||||||
// then blocked
|
// then blocked
|
||||||
assert!(should_skip_retransmit(&shred, &shreds_received));
|
assert!(should_skip_retransmit(&shred, &shreds_received));
|
||||||
|
|
||||||
let shred = Shred::new_empty_coding(slot, index, 2, 1, 1, version);
|
let shred = Shred::new_empty_coding(slot, index, 2, 1, 1, 0, version);
|
||||||
// 2nd unique coding at (1, 5) passes
|
// 2nd unique coding at (1, 5) passes
|
||||||
assert!(!should_skip_retransmit(&shred, &shreds_received));
|
assert!(!should_skip_retransmit(&shred, &shreds_received));
|
||||||
// same again is blocked
|
// same again is blocked
|
||||||
assert!(should_skip_retransmit(&shred, &shreds_received));
|
assert!(should_skip_retransmit(&shred, &shreds_received));
|
||||||
|
|
||||||
let shred = Shred::new_empty_coding(slot, index, 3, 1, 1, version);
|
let shred = Shred::new_empty_coding(slot, index, 3, 1, 1, 0, version);
|
||||||
// Another unique coding at (1, 5) always blocked
|
// Another unique coding at (1, 5) always blocked
|
||||||
assert!(should_skip_retransmit(&shred, &shreds_received));
|
assert!(should_skip_retransmit(&shred, &shreds_received));
|
||||||
assert!(should_skip_retransmit(&shred, &shreds_received));
|
assert!(should_skip_retransmit(&shred, &shreds_received));
|
||||||
|
@ -791,7 +791,15 @@ mod test {
|
|||||||
));
|
));
|
||||||
|
|
||||||
// If it's a coding shred, test that slot >= root
|
// If it's a coding shred, test that slot >= root
|
||||||
let (common, coding) = Shredder::new_coding_shred_header(5, 5, 5, 6, 6, 0);
|
let (common, coding) = Shredder::new_coding_shred_header(
|
||||||
|
5, // slot
|
||||||
|
5, // index
|
||||||
|
5, // fec_set_index
|
||||||
|
6, // num_data_shreds
|
||||||
|
6, // num_coding_shreds
|
||||||
|
3, // position
|
||||||
|
0, // version
|
||||||
|
);
|
||||||
let mut coding_shred =
|
let mut coding_shred =
|
||||||
Shred::new_empty_from_header(common, DataShredHeader::default(), coding);
|
Shred::new_empty_from_header(common, DataShredHeader::default(), coding);
|
||||||
Shredder::sign_shred(&leader_keypair, &mut coding_shred);
|
Shredder::sign_shred(&leader_keypair, &mut coding_shred);
|
||||||
@ -918,7 +926,15 @@ mod test {
|
|||||||
std::net::{IpAddr, Ipv4Addr},
|
std::net::{IpAddr, Ipv4Addr},
|
||||||
};
|
};
|
||||||
solana_logger::setup();
|
solana_logger::setup();
|
||||||
let (common, coding) = Shredder::new_coding_shred_header(5, 5, 5, 6, 6, 0);
|
let (common, coding) = Shredder::new_coding_shred_header(
|
||||||
|
5, // slot
|
||||||
|
5, // index
|
||||||
|
5, // fec_set_index
|
||||||
|
6, // num_data_shreds
|
||||||
|
6, // num_coding_shreds
|
||||||
|
4, // position
|
||||||
|
0, // version
|
||||||
|
);
|
||||||
let shred = Shred::new_empty_from_header(common, DataShredHeader::default(), coding);
|
let shred = Shred::new_empty_from_header(common, DataShredHeader::default(), coding);
|
||||||
let mut shreds = vec![shred.clone(), shred.clone(), shred];
|
let mut shreds = vec![shred.clone(), shred.clone(), shred];
|
||||||
let _from_addr = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080);
|
let _from_addr = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080);
|
||||||
|
@ -5717,7 +5717,14 @@ pub mod tests {
|
|||||||
let blockstore = Blockstore::open(&blockstore_path).unwrap();
|
let blockstore = Blockstore::open(&blockstore_path).unwrap();
|
||||||
|
|
||||||
let slot = 1;
|
let slot = 1;
|
||||||
let (shred, coding) = Shredder::new_coding_shred_header(slot, 11, 11, 11, 11, 0);
|
let (shred, coding) = Shredder::new_coding_shred_header(
|
||||||
|
slot, 11, // index
|
||||||
|
11, // fec_set_index
|
||||||
|
11, // num_data_shreds
|
||||||
|
11, // num_coding_shreds
|
||||||
|
8, // position
|
||||||
|
0, // version
|
||||||
|
);
|
||||||
let coding_shred =
|
let coding_shred =
|
||||||
Shred::new_empty_from_header(shred, DataShredHeader::default(), coding);
|
Shred::new_empty_from_header(shred, DataShredHeader::default(), coding);
|
||||||
|
|
||||||
@ -5767,7 +5774,14 @@ pub mod tests {
|
|||||||
let last_root = RwLock::new(0);
|
let last_root = RwLock::new(0);
|
||||||
|
|
||||||
let slot = 1;
|
let slot = 1;
|
||||||
let (mut shred, coding) = Shredder::new_coding_shred_header(slot, 11, 11, 11, 11, 0);
|
let (mut shred, coding) = Shredder::new_coding_shred_header(
|
||||||
|
slot, 11, // index
|
||||||
|
11, // fec_set_index
|
||||||
|
11, // num_data_shreds
|
||||||
|
11, // num_coding_shreds
|
||||||
|
8, // position
|
||||||
|
0, // version
|
||||||
|
);
|
||||||
let coding_shred = Shred::new_empty_from_header(
|
let coding_shred = Shred::new_empty_from_header(
|
||||||
shred.clone(),
|
shred.clone(),
|
||||||
DataShredHeader::default(),
|
DataShredHeader::default(),
|
||||||
|
@ -75,7 +75,12 @@ use {
|
|||||||
pubkey::Pubkey,
|
pubkey::Pubkey,
|
||||||
signature::{Keypair, Signature, Signer},
|
signature::{Keypair, Signature, Signer},
|
||||||
},
|
},
|
||||||
std::{convert::TryInto, mem::size_of, ops::Deref, sync::Arc},
|
std::{
|
||||||
|
convert::{TryFrom, TryInto},
|
||||||
|
mem::size_of,
|
||||||
|
ops::Deref,
|
||||||
|
sync::Arc,
|
||||||
|
},
|
||||||
thiserror::Error,
|
thiserror::Error,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -203,8 +208,7 @@ pub struct DataShredHeader {
|
|||||||
pub struct CodingShredHeader {
|
pub struct CodingShredHeader {
|
||||||
pub num_data_shreds: u16,
|
pub num_data_shreds: u16,
|
||||||
pub num_coding_shreds: u16,
|
pub num_coding_shreds: u16,
|
||||||
#[serde(rename = "position")]
|
pub position: u16,
|
||||||
__unused: u16,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq)]
|
#[derive(Clone, Debug, PartialEq)]
|
||||||
@ -362,8 +366,9 @@ impl Shred {
|
|||||||
slot: Slot,
|
slot: Slot,
|
||||||
index: u32,
|
index: u32,
|
||||||
fec_set_index: u32,
|
fec_set_index: u32,
|
||||||
num_data: usize,
|
num_data: u16,
|
||||||
num_code: usize,
|
num_code: u16,
|
||||||
|
position: u16,
|
||||||
version: u16,
|
version: u16,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
let (header, coding_header) = Shredder::new_coding_shred_header(
|
let (header, coding_header) = Shredder::new_coding_shred_header(
|
||||||
@ -372,6 +377,7 @@ impl Shred {
|
|||||||
fec_set_index,
|
fec_set_index,
|
||||||
num_data,
|
num_data,
|
||||||
num_code,
|
num_code,
|
||||||
|
position,
|
||||||
version,
|
version,
|
||||||
);
|
);
|
||||||
Shred::new_empty_from_header(header, DataShredHeader::default(), coding_header)
|
Shred::new_empty_from_header(header, DataShredHeader::default(), coding_header)
|
||||||
@ -757,8 +763,9 @@ impl Shredder {
|
|||||||
slot: Slot,
|
slot: Slot,
|
||||||
index: u32,
|
index: u32,
|
||||||
fec_set_index: u32,
|
fec_set_index: u32,
|
||||||
num_data: usize,
|
num_data_shreds: u16,
|
||||||
num_code: usize,
|
num_coding_shreds: u16,
|
||||||
|
position: u16,
|
||||||
version: u16,
|
version: u16,
|
||||||
) -> (ShredCommonHeader, CodingShredHeader) {
|
) -> (ShredCommonHeader, CodingShredHeader) {
|
||||||
let header = ShredCommonHeader {
|
let header = ShredCommonHeader {
|
||||||
@ -772,9 +779,9 @@ impl Shredder {
|
|||||||
(
|
(
|
||||||
header,
|
header,
|
||||||
CodingShredHeader {
|
CodingShredHeader {
|
||||||
num_data_shreds: num_data as u16,
|
num_data_shreds,
|
||||||
num_coding_shreds: num_code as u16,
|
num_coding_shreds,
|
||||||
..CodingShredHeader::default()
|
position,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@ -810,6 +817,8 @@ impl Shredder {
|
|||||||
.unwrap()
|
.unwrap()
|
||||||
.encode(&data, &mut parity[..])
|
.encode(&data, &mut parity[..])
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
let num_data = u16::try_from(num_data).unwrap();
|
||||||
|
let num_coding = u16::try_from(num_coding).unwrap();
|
||||||
parity
|
parity
|
||||||
.iter()
|
.iter()
|
||||||
.enumerate()
|
.enumerate()
|
||||||
@ -820,6 +829,7 @@ impl Shredder {
|
|||||||
fec_set_index,
|
fec_set_index,
|
||||||
num_data,
|
num_data,
|
||||||
num_coding,
|
num_coding,
|
||||||
|
u16::try_from(i).unwrap(), // position
|
||||||
version,
|
version,
|
||||||
);
|
);
|
||||||
shred.payload[SIZE_OF_CODING_SHRED_HEADERS..].copy_from_slice(parity);
|
shred.payload[SIZE_OF_CODING_SHRED_HEADERS..].copy_from_slice(parity);
|
||||||
@ -1947,7 +1957,15 @@ pub mod tests {
|
|||||||
);
|
);
|
||||||
assert_eq!(stats.index_overrun, 4);
|
assert_eq!(stats.index_overrun, 4);
|
||||||
|
|
||||||
let shred = Shred::new_empty_coding(8, 2, 10, 30, 4, 200);
|
let shred = Shred::new_empty_coding(
|
||||||
|
8, // slot
|
||||||
|
2, // index
|
||||||
|
10, // fec_set_index
|
||||||
|
30, // num_data
|
||||||
|
4, // num_code
|
||||||
|
1, // position
|
||||||
|
200, // version
|
||||||
|
);
|
||||||
shred.copy_to_packet(&mut packet);
|
shred.copy_to_packet(&mut packet);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
Some((8, 2, false)),
|
Some((8, 2, false)),
|
||||||
@ -1959,7 +1977,15 @@ pub mod tests {
|
|||||||
assert_eq!(None, get_shred_slot_index_type(&packet, &mut stats));
|
assert_eq!(None, get_shred_slot_index_type(&packet, &mut stats));
|
||||||
assert_eq!(1, stats.index_out_of_bounds);
|
assert_eq!(1, stats.index_out_of_bounds);
|
||||||
|
|
||||||
let (mut header, coding_header) = Shredder::new_coding_shred_header(8, 2, 10, 30, 4, 200);
|
let (mut header, coding_header) = Shredder::new_coding_shred_header(
|
||||||
|
8, // slot
|
||||||
|
2, // index
|
||||||
|
10, // fec_set_index
|
||||||
|
30, // num_data_shreds
|
||||||
|
4, // num_coding_shreds
|
||||||
|
3, // position
|
||||||
|
200, // version
|
||||||
|
);
|
||||||
header.shred_type = ShredType(u8::MAX);
|
header.shred_type = ShredType(u8::MAX);
|
||||||
let shred = Shred::new_empty_from_header(header, DataShredHeader::default(), coding_header);
|
let shred = Shred::new_empty_from_header(header, DataShredHeader::default(), coding_header);
|
||||||
shred.copy_to_packet(&mut packet);
|
shred.copy_to_packet(&mut packet);
|
||||||
|
Reference in New Issue
Block a user