Skip to content

Commit

Permalink
tests: two tests for ejector
Browse files Browse the repository at this point in the history
  • Loading branch information
vgorkavenko committed Jan 29, 2025
1 parent 6705365 commit ab2b8c4
Showing 1 changed file with 42 additions and 0 deletions.
42 changes: 42 additions & 0 deletions tests/modules/accounting/test_validator_state.py
Original file line number Diff line number Diff line change
Expand Up @@ -164,3 +164,45 @@ def test_get_lido_new_exited_validators(web3, validator_state):
exited_validators = validator_state.get_lido_newly_exited_validators(blockstamp)
# We didn't expect the second validator because total_exited_validators hasn't changed
assert exited_validators == {(1, 0): 3}


@pytest.mark.unit
def test_get_recently_requested_validators_by_operator(monkeypatch, web3, validator_state):
mocked_events = [
{'args': {'stakingModuleId': 1, 'nodeOperatorId': 0, 'validatorIndex': 1}},
{'args': {'stakingModuleId': 1, 'nodeOperatorId': 0, 'validatorIndex': 2}},
]
mock_get_events_in_past = Mock(return_value=mocked_events)
monkeypatch.setattr('src.services.validator_state.get_events_in_past', mock_get_events_in_past)
web3.lido_contracts.oracle_daemon_config.validator_delayed_timeout_in_slots = Mock(return_value=7200)

global_indexes = validator_state.get_recently_requested_validators_by_operator(12, blockstamp)

assert global_indexes == {(1, 0): {1, 2}, (1, 1): set()}
mock_get_events_in_past.assert_called_once_with(
web3.lido_contracts.validators_exit_bus_oracle.events.ValidatorExitRequest,
to_blockstamp=blockstamp,
for_slots=7200,
seconds_per_slot=12,
)


@pytest.mark.unit
def test_get_recently_requested_but_not_exited_validators(monkeypatch, web3, chain_config, validator_state):
mocked_events = [
{'args': {'stakingModuleId': 1, 'nodeOperatorId': 0, 'validatorIndex': 1}},
{'args': {'stakingModuleId': 1, 'nodeOperatorId': 0, 'validatorIndex': 2}},
]
mock_get_events_in_past = Mock(return_value=mocked_events)
monkeypatch.setattr('src.services.validator_state.get_events_in_past', mock_get_events_in_past)
web3.lido_contracts.oracle_daemon_config.validator_delayed_timeout_in_slots = Mock(return_value=7200)

blockstamp = ReferenceBlockStampFactory.build(
ref_slot=15392,
ref_epoch=481,
)
recently_requested_validators = validator_state.get_recently_requested_but_not_exited_validators(
blockstamp, chain_config
)

assert [int(v.index) for v in recently_requested_validators] == [1, 5, 6]

0 comments on commit ab2b8c4

Please sign in to comment.