fixups
This commit is contained in:
parent
e16acec901
commit
7a41868173
43
src/bank.rs
43
src/bank.rs
|
@ -33,6 +33,13 @@ pub const MAX_ENTRY_IDS: usize = 1024 * 16;
|
||||||
|
|
||||||
pub const VERIFY_BLOCK_SIZE: usize = 16;
|
pub const VERIFY_BLOCK_SIZE: usize = 16;
|
||||||
|
|
||||||
|
fn rotate_vector<T: Clone>(v: Vec<T>, at: usize) -> Vec<T> {
|
||||||
|
let mut ret = Vec::with_capacity(v.len());
|
||||||
|
ret.extend_from_slice(&v[at..]);
|
||||||
|
ret.extend_from_slice(&v[0..at]);
|
||||||
|
ret
|
||||||
|
}
|
||||||
|
|
||||||
/// Reasons a transaction might be rejected.
|
/// Reasons a transaction might be rejected.
|
||||||
#[derive(Debug, PartialEq, Eq)]
|
#[derive(Debug, PartialEq, Eq)]
|
||||||
pub enum BankError {
|
pub enum BankError {
|
||||||
|
@ -341,9 +348,6 @@ impl Bank {
|
||||||
result?;
|
result?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// TODO: verify this is ok in cases like:
|
|
||||||
// 1. an untrusted genesis or tx-<DATE>.log
|
|
||||||
// 2. a crazy leader..
|
|
||||||
if !entry.has_more {
|
if !entry.has_more {
|
||||||
self.register_entry_id(&entry.id);
|
self.register_entry_id(&entry.id);
|
||||||
}
|
}
|
||||||
|
@ -363,9 +367,6 @@ impl Bank {
|
||||||
result?;
|
result?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// TODO: verify this is ok in cases like:
|
|
||||||
// 1. an untrusted genesis or tx-<DATE>.log
|
|
||||||
// 2. a crazy leader..
|
|
||||||
if !entry.has_more {
|
if !entry.has_more {
|
||||||
self.register_entry_id(&entry.id);
|
self.register_entry_id(&entry.id);
|
||||||
}
|
}
|
||||||
|
@ -435,10 +436,7 @@ impl Bank {
|
||||||
|
|
||||||
// check if we need to shift tail around
|
// check if we need to shift tail around
|
||||||
let tail = if tail.len() == WINDOW_SIZE as usize && tail_idx != 0 {
|
let tail = if tail.len() == WINDOW_SIZE as usize && tail_idx != 0 {
|
||||||
let mut shift = Vec::with_capacity(WINDOW_SIZE as usize);
|
rotate_vector(tail, tail_idx)
|
||||||
shift.extend_from_slice(&tail[tail_idx..]);
|
|
||||||
shift.extend_from_slice(&tail[0..tail_idx]);
|
|
||||||
shift
|
|
||||||
} else {
|
} else {
|
||||||
tail
|
tail
|
||||||
};
|
};
|
||||||
|
@ -823,12 +821,12 @@ mod tests {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_process_ledger_around_window_size() {
|
fn test_process_ledger_around_window_size() {
|
||||||
// benchmark
|
// // benchmark
|
||||||
for _ in 0..10 {
|
// for _ in 0..10 {
|
||||||
let (ledger, _) = create_sample_ledger(WINDOW_SIZE as usize * 6);
|
// let (ledger, _) = create_sample_ledger(WINDOW_SIZE as usize * 6);
|
||||||
let bank = Bank::default();
|
// let bank = Bank::default();
|
||||||
let (_, _) = bank.process_ledger(ledger).unwrap();
|
// let (_, _) = bank.process_ledger(ledger).unwrap();
|
||||||
}
|
// }
|
||||||
|
|
||||||
let window_size = WINDOW_SIZE as usize;
|
let window_size = WINDOW_SIZE as usize;
|
||||||
for entry_count in window_size - 3..window_size + 2 {
|
for entry_count in window_size - 3..window_size + 2 {
|
||||||
|
@ -874,4 +872,17 @@ mod tests {
|
||||||
bank.process_ledger(genesis.chain(block)).unwrap();
|
bank.process_ledger(genesis.chain(block)).unwrap();
|
||||||
assert_eq!(bank.get_balance(&mint.pubkey()), 1);
|
assert_eq!(bank.get_balance(&mint.pubkey()), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_rotate_vector() {
|
||||||
|
let test = vec![4, 1, 2, 3];
|
||||||
|
let etest = vec![4, 1, 2, 3];
|
||||||
|
|
||||||
|
let (left, right) = etest.split_at(1);
|
||||||
|
let mut right = right.to_vec();
|
||||||
|
right.extend(left);
|
||||||
|
|
||||||
|
assert_eq!(rotate_vector(test, 1), right);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue