fix tests and off by one error

This commit is contained in:
Danny Ryan 2019-04-14 18:50:05 +10:00
parent 229af3deda
commit 06807cf520
No known key found for this signature in database
GPG Key ID: 2765A792E42CE07A
3 changed files with 6 additions and 14 deletions

View File

@ -1320,17 +1320,18 @@ def initiate_validator_exit(state: BeaconState, index: ValidatorIndex) -> None:
if validator.exit_epoch != FAR_FUTURE_EPOCH: if validator.exit_epoch != FAR_FUTURE_EPOCH:
return return
# Compute exit queue parameters # Compute exit queue parameters (pad with GENESIS_EPOCH in case empty)
exit_queue_epoch = sorted([validator.exit_epoch for validator in state.validator_registry if exit_queue_epoch = sorted([
validator.exit_epoch != FAR_FUTURE_EPOCH validator.exit_epoch for validator in state.validator_registry
].append(GENESIS_EPOCH), key=lambda index: state.validator_registry[index].exit_epoch)[-1] if validator.exit_epoch != FAR_FUTURE_EPOCH
] + [GENESIS_EPOCH])[-1]
delayed_activation_exit_epoch = get_delayed_activation_exit_epoch(get_current_epoch(state)) delayed_activation_exit_epoch = get_delayed_activation_exit_epoch(get_current_epoch(state))
if exit_queue_epoch < delayed_activation_exit_epoch: if exit_queue_epoch < delayed_activation_exit_epoch:
exit_queue_epoch = delayed_activation_exit_epoch exit_queue_epoch = delayed_activation_exit_epoch
exit_queue_churn = len([v for v in state.validator_registry if v.exit_epoch == exit_queue_epoch]) exit_queue_churn = len([v for v in state.validator_registry if v.exit_epoch == exit_queue_epoch])
if exit_queue_churn > get_churn_limit(state): if exit_queue_churn >= get_churn_limit(state):
exit_queue_epoch += 1 exit_queue_epoch += 1
# Set validator exit epoch and withdrawable epoch # Set validator exit epoch and withdrawable epoch

View File

@ -78,10 +78,6 @@ def test_success_exit_queue(state):
) )
pre_state, post_state = run_voluntary_exit_processing(post_state, voluntary_exit) pre_state, post_state = run_voluntary_exit_processing(post_state, voluntary_exit)
assert post_state.exit_queue_churn > pre_state.exit_queue_churn
assert post_state.exit_queue_epoch >= pre_state.exit_queue_epoch
assert post_state.exit_queue_epoch == pre_state.exit_queue_epoch
# exit an additional validator # exit an additional validator
validator_index = get_active_validator_indices(state, current_epoch)[-1] validator_index = get_active_validator_indices(state, current_epoch)[-1]
@ -99,9 +95,6 @@ def test_success_exit_queue(state):
post_state.validator_registry[validator_index].exit_epoch == post_state.validator_registry[validator_index].exit_epoch ==
post_state.validator_registry[initial_indices[0]].exit_epoch + 1 post_state.validator_registry[initial_indices[0]].exit_epoch + 1
) )
assert post_state.exit_queue_churn == 0
assert post_state.exit_queue_epoch == pre_state.exit_queue_epoch + 1
return pre_state, voluntary_exit, post_state return pre_state, voluntary_exit, post_state

View File

@ -346,8 +346,6 @@ def test_no_exit_churn_too_long_since_change(state):
state_transition(post_state, block) state_transition(post_state, block)
assert post_state.validator_registry[validator_index].exit_epoch == spec.FAR_FUTURE_EPOCH assert post_state.validator_registry[validator_index].exit_epoch == spec.FAR_FUTURE_EPOCH
assert post_state.exit_queue_churn == pre_state.exit_queue_churn
assert post_state.exit_queue_epoch == pre_state.exit_queue_epoch
return pre_state, [block], post_state return pre_state, [block], post_state