def test_epoch_fetcher_fetches_from_all_contracts(w3, tester, validator_set_contract): val_def, (contract1, contract2) = initialize_scenario(validator_set_contract, transition_heights=[100, 200]) fetcher = EpochFetcher(w3, val_def) validators1 = initialize_validators(contract1) validators2 = initialize_validators(contract2) epochs = fetcher.fetch_new_epochs() assert epochs == [Epoch(100, validators1, 0), Epoch(200, validators2, 1)]
def test_epoch_fetcher_without_contracts(w3, tester): val_def = [ ValidatorDefinitionRange( enter_height=0, leave_height=None, is_contract=False, validators=[get_random_address()], contract_address=None, ) ] fetcher = EpochFetcher(w3, val_def) mine_until(w3, tester, 50) fetcher.fetch_new_epochs() assert fetcher.last_fetch_height == 50
def test_epoch_fetcher_ignores_stale_contracts(w3, tester, validator_set_contract): val_def, (contract1, contract2) = initialize_scenario(validator_set_contract, transition_heights=[100, 200]) fetcher = EpochFetcher(w3, val_def) initialize_validators(contract1) mine_until(w3, tester, 250) initialize_validators(contract2) fetcher.fetch_new_epochs() change_validators(contract1) epochs = fetcher.fetch_new_epochs() assert epochs == []
def _initialize_primary_oracle(self, chain_spec_path: Path) -> None: with chain_spec_path.open("r") as f: chain_spec = json.load(f) self.original_chain_spec = chain_spec validator_definition = chain_spec["engine"]["authorityRound"][ "params"]["validators"] validator_definition_ranges = get_validator_definition_ranges( validator_definition) self.epoch_fetcher = EpochFetcher(self.w3, validator_definition_ranges) self.primary_oracle = PrimaryOracle() static_epochs = get_static_epochs(validator_definition_ranges) for epoch in static_epochs: self.primary_oracle.add_epoch(epoch) self._update_epochs()
def test_epoch_fetcher_updates_last_fetch_height(w3, tester, validator_set_contract): val_def, (contract, ) = initialize_scenario(validator_set_contract, transition_heights=[100]) initialize_validators(contract) fetcher = EpochFetcher(w3, val_def) assert fetcher.last_fetch_height == 0 fetcher.fetch_new_epochs() assert fetcher.last_fetch_height == w3.eth.blockNumber mine_until(w3, tester, 50) fetcher.fetch_new_epochs() assert fetcher.last_fetch_height == 50