Esempio n. 1
0
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)]
Esempio n. 2
0
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
Esempio n. 3
0
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 == []
Esempio n. 4
0
    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()
Esempio n. 5
0
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