Upgrade Rust to 1.52.0 (#17096)
* Upgrade Rust to 1.52.0 update nightly_version to newly pushed docker image fix clippy lint errors 1.52 comes with grcov 0.8.0, include this version to script * upgrade to Rust 1.52.1 * disabling Serum from downstream projects until it is upgraded to Rust 1.52.1
This commit is contained in:
@ -1200,7 +1200,8 @@ impl Blockstore {
|
||||
just_inserted_data_shreds.insert((slot, shred_index), shred);
|
||||
index_meta_working_set_entry.did_insert_occur = true;
|
||||
slot_meta_entry.did_insert_occur = true;
|
||||
if !erasure_metas.contains_key(&(slot, set_index)) {
|
||||
if let std::collections::hash_map::Entry::Vacant(_) = erasure_metas.entry((slot, set_index))
|
||||
{
|
||||
if let Some(meta) = self
|
||||
.erasure_meta_cf
|
||||
.get((slot, set_index))
|
||||
@ -5381,17 +5382,14 @@ pub mod tests {
|
||||
panic!("Shred in unexpected format")
|
||||
}
|
||||
};
|
||||
assert_eq!(
|
||||
blockstore.should_insert_data_shred(
|
||||
&shred7,
|
||||
&slot_meta,
|
||||
&HashMap::new(),
|
||||
&last_root,
|
||||
None,
|
||||
false
|
||||
),
|
||||
assert!(!blockstore.should_insert_data_shred(
|
||||
&shred7,
|
||||
&slot_meta,
|
||||
&HashMap::new(),
|
||||
&last_root,
|
||||
None,
|
||||
false
|
||||
);
|
||||
));
|
||||
assert!(blockstore.has_duplicate_shreds_in_slot(0));
|
||||
|
||||
// Insert all pending shreds
|
||||
@ -5405,17 +5403,14 @@ pub mod tests {
|
||||
} else {
|
||||
panic!("Shred in unexpected format")
|
||||
}
|
||||
assert_eq!(
|
||||
blockstore.should_insert_data_shred(
|
||||
&shred7,
|
||||
&slot_meta,
|
||||
&HashMap::new(),
|
||||
&last_root,
|
||||
None,
|
||||
false
|
||||
),
|
||||
assert!(!blockstore.should_insert_data_shred(
|
||||
&shred7,
|
||||
&slot_meta,
|
||||
&HashMap::new(),
|
||||
&last_root,
|
||||
None,
|
||||
false
|
||||
);
|
||||
));
|
||||
}
|
||||
Blockstore::destroy(&blockstore_path).expect("Expected successful database destruction");
|
||||
}
|
||||
|
@ -115,7 +115,7 @@ impl Blockstore {
|
||||
.batch()
|
||||
.expect("Database Error: Failed to get write batch");
|
||||
// delete range cf is not inclusive
|
||||
let to_slot = to_slot.checked_add(1).unwrap_or(std::u64::MAX);
|
||||
let to_slot = to_slot.saturating_add(1);
|
||||
|
||||
let mut delete_range_timer = Measure::start("delete_range");
|
||||
let mut columns_purged = self
|
||||
|
@ -868,17 +868,14 @@ mod tests {
|
||||
solana_logger::setup();
|
||||
let zero = Hash::default();
|
||||
let one = hash(&zero.as_ref());
|
||||
assert_eq!(vec![][..].verify(&zero), true); // base case
|
||||
assert_eq!(vec![Entry::new_tick(0, &zero)][..].verify(&zero), true); // singleton case 1
|
||||
assert_eq!(vec![Entry::new_tick(0, &zero)][..].verify(&one), false); // singleton case 2, bad
|
||||
assert_eq!(
|
||||
vec![next_entry(&zero, 0, vec![]); 2][..].verify(&zero),
|
||||
true
|
||||
); // inductive step
|
||||
assert!(vec![][..].verify(&zero)); // base case
|
||||
assert!(vec![Entry::new_tick(0, &zero)][..].verify(&zero)); // singleton case 1
|
||||
assert!(!vec![Entry::new_tick(0, &zero)][..].verify(&one)); // singleton case 2, bad
|
||||
assert!(vec![next_entry(&zero, 0, vec![]); 2][..].verify(&zero)); // inductive step
|
||||
|
||||
let mut bad_ticks = vec![next_entry(&zero, 0, vec![]); 2];
|
||||
bad_ticks[1].hash = one;
|
||||
assert_eq!(bad_ticks.verify(&zero), false); // inductive step, bad
|
||||
assert!(!bad_ticks.verify(&zero)); // inductive step, bad
|
||||
}
|
||||
|
||||
#[test]
|
||||
@ -887,18 +884,18 @@ mod tests {
|
||||
let zero = Hash::default();
|
||||
let one = hash(&zero.as_ref());
|
||||
let two = hash(&one.as_ref());
|
||||
assert_eq!(vec![][..].verify(&one), true); // base case
|
||||
assert_eq!(vec![Entry::new_tick(1, &two)][..].verify(&one), true); // singleton case 1
|
||||
assert_eq!(vec![Entry::new_tick(1, &two)][..].verify(&two), false); // singleton case 2, bad
|
||||
assert!(vec![][..].verify(&one)); // base case
|
||||
assert!(vec![Entry::new_tick(1, &two)][..].verify(&one)); // singleton case 1
|
||||
assert!(!vec![Entry::new_tick(1, &two)][..].verify(&two)); // singleton case 2, bad
|
||||
|
||||
let mut ticks = vec![next_entry(&one, 1, vec![])];
|
||||
ticks.push(next_entry(&ticks.last().unwrap().hash, 1, vec![]));
|
||||
assert_eq!(ticks.verify(&one), true); // inductive step
|
||||
assert!(ticks.verify(&one)); // inductive step
|
||||
|
||||
let mut bad_ticks = vec![next_entry(&one, 1, vec![])];
|
||||
bad_ticks.push(next_entry(&bad_ticks.last().unwrap().hash, 1, vec![]));
|
||||
bad_ticks[1].hash = one;
|
||||
assert_eq!(bad_ticks.verify(&one), false); // inductive step, bad
|
||||
assert!(!bad_ticks.verify(&one)); // inductive step, bad
|
||||
}
|
||||
|
||||
#[test]
|
||||
@ -910,15 +907,9 @@ mod tests {
|
||||
let alice_pubkey = Keypair::new();
|
||||
let tx0 = create_sample_payment(&alice_pubkey, one);
|
||||
let tx1 = create_sample_timestamp(&alice_pubkey, one);
|
||||
assert_eq!(vec![][..].verify(&one), true); // base case
|
||||
assert_eq!(
|
||||
vec![next_entry(&one, 1, vec![tx0.clone()])][..].verify(&one),
|
||||
true
|
||||
); // singleton case 1
|
||||
assert_eq!(
|
||||
vec![next_entry(&one, 1, vec![tx0.clone()])][..].verify(&two),
|
||||
false
|
||||
); // singleton case 2, bad
|
||||
assert!(vec![][..].verify(&one)); // base case
|
||||
assert!(vec![next_entry(&one, 1, vec![tx0.clone()])][..].verify(&one)); // singleton case 1
|
||||
assert!(!vec![next_entry(&one, 1, vec![tx0.clone()])][..].verify(&two)); // singleton case 2, bad
|
||||
|
||||
let mut ticks = vec![next_entry(&one, 1, vec![tx0.clone()])];
|
||||
ticks.push(next_entry(
|
||||
@ -926,12 +917,12 @@ mod tests {
|
||||
1,
|
||||
vec![tx1.clone()],
|
||||
));
|
||||
assert_eq!(ticks.verify(&one), true); // inductive step
|
||||
assert!(ticks.verify(&one)); // inductive step
|
||||
|
||||
let mut bad_ticks = vec![next_entry(&one, 1, vec![tx0])];
|
||||
bad_ticks.push(next_entry(&bad_ticks.last().unwrap().hash, 1, vec![tx1]));
|
||||
bad_ticks[1].hash = one;
|
||||
assert_eq!(bad_ticks.verify(&one), false); // inductive step, bad
|
||||
assert!(!bad_ticks.verify(&one)); // inductive step, bad
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -1,4 +1,4 @@
|
||||
#![cfg_attr(RUSTC_WITH_SPECIALIZATION, feature(specialization))]
|
||||
#![cfg_attr(RUSTC_WITH_SPECIALIZATION, feature(min_specialization))]
|
||||
#![allow(clippy::integer_arithmetic)]
|
||||
#[macro_use]
|
||||
extern crate solana_bpf_loader_program;
|
||||
|
@ -197,95 +197,77 @@ mod tests {
|
||||
let one_with_zero = hashv(&[&zero.as_ref(), &zero.as_ref()]);
|
||||
|
||||
let mut poh = Poh::new(zero, None);
|
||||
assert_eq!(
|
||||
verify(
|
||||
zero,
|
||||
&[
|
||||
(poh.tick().unwrap(), None),
|
||||
(poh.record(zero).unwrap(), Some(zero)),
|
||||
(poh.record(zero).unwrap(), Some(zero)),
|
||||
(poh.tick().unwrap(), None),
|
||||
],
|
||||
),
|
||||
true
|
||||
);
|
||||
assert!(verify(
|
||||
zero,
|
||||
&[
|
||||
(poh.tick().unwrap(), None),
|
||||
(poh.record(zero).unwrap(), Some(zero)),
|
||||
(poh.record(zero).unwrap(), Some(zero)),
|
||||
(poh.tick().unwrap(), None),
|
||||
],
|
||||
));
|
||||
|
||||
assert_eq!(
|
||||
verify(
|
||||
zero,
|
||||
&[(
|
||||
PohEntry {
|
||||
num_hashes: 1,
|
||||
hash: one,
|
||||
},
|
||||
None
|
||||
)],
|
||||
),
|
||||
true
|
||||
);
|
||||
assert_eq!(
|
||||
verify(
|
||||
zero,
|
||||
&[(
|
||||
PohEntry {
|
||||
num_hashes: 2,
|
||||
hash: two,
|
||||
},
|
||||
None
|
||||
)]
|
||||
),
|
||||
true
|
||||
);
|
||||
assert!(verify(
|
||||
zero,
|
||||
&[(
|
||||
PohEntry {
|
||||
num_hashes: 1,
|
||||
hash: one,
|
||||
},
|
||||
None
|
||||
)],
|
||||
));
|
||||
assert!(verify(
|
||||
zero,
|
||||
&[(
|
||||
PohEntry {
|
||||
num_hashes: 2,
|
||||
hash: two,
|
||||
},
|
||||
None
|
||||
)]
|
||||
));
|
||||
|
||||
assert_eq!(
|
||||
verify(
|
||||
zero,
|
||||
&[(
|
||||
assert!(verify(
|
||||
zero,
|
||||
&[(
|
||||
PohEntry {
|
||||
num_hashes: 1,
|
||||
hash: one_with_zero,
|
||||
},
|
||||
Some(zero)
|
||||
)]
|
||||
));
|
||||
assert!(!verify(
|
||||
zero,
|
||||
&[(
|
||||
PohEntry {
|
||||
num_hashes: 1,
|
||||
hash: zero,
|
||||
},
|
||||
None
|
||||
)]
|
||||
));
|
||||
|
||||
assert!(verify(
|
||||
zero,
|
||||
&[
|
||||
(
|
||||
PohEntry {
|
||||
num_hashes: 1,
|
||||
hash: one_with_zero,
|
||||
},
|
||||
Some(zero)
|
||||
)]
|
||||
),
|
||||
true
|
||||
);
|
||||
assert_eq!(
|
||||
verify(
|
||||
zero,
|
||||
&[(
|
||||
),
|
||||
(
|
||||
PohEntry {
|
||||
num_hashes: 1,
|
||||
hash: zero,
|
||||
hash: hash(&one_with_zero.as_ref()),
|
||||
},
|
||||
None
|
||||
)]
|
||||
),
|
||||
false
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
verify(
|
||||
zero,
|
||||
&[
|
||||
(
|
||||
PohEntry {
|
||||
num_hashes: 1,
|
||||
hash: one_with_zero,
|
||||
},
|
||||
Some(zero)
|
||||
),
|
||||
(
|
||||
PohEntry {
|
||||
num_hashes: 1,
|
||||
hash: hash(&one_with_zero.as_ref()),
|
||||
},
|
||||
None
|
||||
)
|
||||
]
|
||||
),
|
||||
true
|
||||
);
|
||||
)
|
||||
]
|
||||
));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
Reference in New Issue
Block a user