add ticks_left_in_block (#2694)

* add ticks_left_in_block

* de-combine tests
This commit is contained in:
Rob Walker 2019-02-08 10:30:14 -08:00 committed by GitHub
parent 0115a1f834
commit 0e29868e34
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 23 additions and 3 deletions

View File

@ -124,8 +124,14 @@ impl LeaderScheduler {
tick_height / self.ticks_per_epoch
}
// Returns the number of ticks remaining from the specified tick_height to
// the end of the specified block (i.e. the end of corresponding slot)
pub fn num_ticks_left_in_block(&self, block: u64, tick_height: u64) -> u64 {
((block + 1) * self.ticks_per_slot - tick_height) - 1
}
// Returns the number of ticks remaining from the specified tick_height to the end of the
// current slot
// slot implied by the tick_height
pub fn num_ticks_left_in_slot(&self, tick_height: u64) -> u64 {
self.ticks_per_slot - tick_height % self.ticks_per_slot - 1
}
@ -206,7 +212,6 @@ impl LeaderScheduler {
{
let accounts = bank.accounts.accounts_db.read().unwrap();
// TODO: iterate through checkpoints, too
accounts
.accounts
@ -607,9 +612,24 @@ pub mod tests {
}
#[test]
fn test_num_ticks_left_in_slot() {
fn test_num_ticks_left_in_block() {
let leader_scheduler = LeaderScheduler::new(&LeaderSchedulerConfig::new(10, 2, 1));
assert_eq!(leader_scheduler.num_ticks_left_in_block(0, 0), 9);
assert_eq!(leader_scheduler.num_ticks_left_in_block(1, 0), 19);
assert_eq!(leader_scheduler.num_ticks_left_in_block(0, 1), 8);
assert_eq!(leader_scheduler.num_ticks_left_in_block(0, 8), 1);
assert_eq!(leader_scheduler.num_ticks_left_in_block(0, 9), 0);
assert_eq!(leader_scheduler.num_ticks_left_in_block(1, 10), 9);
assert_eq!(leader_scheduler.num_ticks_left_in_block(1, 11), 8);
assert_eq!(leader_scheduler.num_ticks_left_in_block(1, 19), 0);
assert_eq!(leader_scheduler.num_ticks_left_in_block(2, 20), 9);
assert_eq!(leader_scheduler.num_ticks_left_in_block(2, 21), 8);
}
#[test]
fn test_num_ticks_left_in_slot() {
let leader_scheduler = LeaderScheduler::new(&LeaderSchedulerConfig::new(10, 2, 1));
assert_eq!(leader_scheduler.num_ticks_left_in_slot(0), 9);
assert_eq!(leader_scheduler.num_ticks_left_in_slot(1), 8);
assert_eq!(leader_scheduler.num_ticks_left_in_slot(8), 1);