Time is unreliable IO. We should be able to isolate an manipulate it using a fake/mock rather than being dependent on the system clock.
fn extract_block_info(last_block: &BlockHeader) -> (BlockHeight, Tai64, Instant) {
let last_timestamp = last_block.time();
let duration_since_last_block =
Duration::from_secs(Tai64::now().0.saturating_sub(last_timestamp.0));
let last_block_created = Instant::now()
.checked_sub(duration_since_last_block)
.unwrap_or(Instant::now());
let last_height = *last_block.height();
(last_height, last_timestamp, last_block_created)
}