mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-16 03:12:41 +00:00
Add block gen test for pos blocks
This commit is contained in:
@@ -50,7 +50,7 @@ impl ExecutionBlockGenerator {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn insert_merge_block(&mut self, number: u64, block_hash: Hash256) -> Result<(), String> {
|
||||
pub fn insert_pos_block(&mut self, number: u64) -> Result<(), String> {
|
||||
if number <= self.terminal_block_number {
|
||||
return Err(format!(
|
||||
"cannot insert block {} as it is prior to terminal block {}",
|
||||
@@ -58,6 +58,13 @@ impl ExecutionBlockGenerator {
|
||||
));
|
||||
}
|
||||
|
||||
let time_based_block = self.block_number_at(self.seconds_since_genesis);
|
||||
if time_based_block < self.terminal_block_number {
|
||||
if number > time_based_block {
|
||||
return Err(format!("it is too early to insert block {}", number));
|
||||
}
|
||||
}
|
||||
|
||||
let next_block = self
|
||||
.latest_merge_block
|
||||
.unwrap_or(self.terminal_block_number)
|
||||
@@ -148,7 +155,7 @@ mod test {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn simple() {
|
||||
fn pow_chain_only() {
|
||||
const TERMINAL_DIFFICULTY: u64 = 10;
|
||||
const TERMINAL_BLOCK: u64 = 10;
|
||||
const DIFFICULTY_INCREMENT: u64 = 1;
|
||||
@@ -201,4 +208,37 @@ mod test {
|
||||
generator.increment_seconds_since_genesis(1);
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn pos_blocks() {
|
||||
const TERMINAL_DIFFICULTY: u64 = 10;
|
||||
const TERMINAL_BLOCK: u64 = 10;
|
||||
|
||||
let mut generator = ExecutionBlockGenerator::new(TERMINAL_DIFFICULTY, TERMINAL_BLOCK);
|
||||
|
||||
let penultimate_pow_block = generator.terminal_block_number.checked_sub(1).unwrap();
|
||||
let last_pow_block = generator.terminal_block_number;
|
||||
let first_pos_block = generator.terminal_block_number + 1;
|
||||
let second_pos_block = first_pos_block + 1;
|
||||
|
||||
generator.set_clock_for_block_number(penultimate_pow_block);
|
||||
|
||||
assert!(generator.block_by_number(last_pow_block).is_none());
|
||||
|
||||
assert!(generator.insert_pos_block(first_pos_block).is_err());
|
||||
|
||||
generator.set_clock_for_block_number(last_pow_block);
|
||||
|
||||
generator.block_by_number(last_pow_block).unwrap();
|
||||
|
||||
assert!(generator.block_by_number(first_pos_block).is_none());
|
||||
|
||||
generator.insert_pos_block(first_pos_block).unwrap();
|
||||
|
||||
generator.block_by_number(first_pos_block).unwrap();
|
||||
|
||||
assert!(generator.insert_pos_block(first_pos_block).is_err());
|
||||
|
||||
generator.insert_pos_block(second_pos_block).unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user