-
Notifications
You must be signed in to change notification settings - Fork 998
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1991 from ethereum/reorg-tests
Reorg tests and add finality test suite
- Loading branch information
Showing
26 changed files
with
124 additions
and
32 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Empty file.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,17 +1,9 @@ | ||
from hashlib import sha256 | ||
from typing import Dict, Union | ||
from remerkleable.byte_arrays import Bytes32 | ||
from typing import Union | ||
|
||
ZERO_BYTES32 = b'\x00' * 32 | ||
|
||
|
||
def _hash(x: Union[bytes, bytearray, memoryview]) -> bytes: | ||
return sha256(x).digest() | ||
|
||
|
||
hash_cache: Dict[bytes, bytes] = {} | ||
|
||
|
||
def hash(x: bytes) -> bytes: | ||
if x in hash_cache: | ||
return hash_cache[x] | ||
return _hash(x) | ||
def hash(x: Union[bytes, bytearray, memoryview]) -> Bytes32: | ||
return Bytes32(sha256(x).digest()) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
# Finality tests | ||
|
||
The aim of the tests for the finality rules. | ||
|
||
- `finality`: transitions triggered by one or more blocks. | ||
|
||
## Test case format | ||
|
||
### `meta.yaml` | ||
|
||
```yaml | ||
description: string -- Optional. Description of test case, purely for debugging purposes. | ||
bls_setting: int -- see general test-format spec. | ||
blocks_count: int -- the number of blocks processed in this test. | ||
``` | ||
### `pre.yaml` | ||
|
||
A YAML-encoded `BeaconState`, the state before running the block transitions. | ||
|
||
Also available as `pre.ssz`. | ||
|
||
|
||
### `blocks_<index>.yaml` | ||
|
||
A series of files, with `<index>` in range `[0, blocks_count)`. Blocks need to be processed in order, | ||
following the main transition function (i.e. process slot and epoch transitions in between blocks as normal) | ||
|
||
Each file is a YAML-encoded `SignedBeaconBlock`. | ||
|
||
Each block is also available as `blocks_<index>.ssz` | ||
|
||
### `post.yaml` | ||
|
||
A YAML-encoded `BeaconState`, the state after applying the block transitions. | ||
|
||
Also available as `post.ssz`. | ||
|
||
|
||
## Condition | ||
|
||
The resulting state should match the expected `post` state, or if the `post` state is left blank, | ||
the handler should reject the series of blocks as invalid. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
# Finality tests | ||
|
||
Finality tests cover regular state-transitions in a common block-list format to test finality rules. | ||
|
||
Information on the format of the tests can be found in the [finality test formats documentation](../../formats/finality/README.md). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
from typing import Iterable | ||
from importlib import reload | ||
|
||
from gen_base import gen_runner, gen_typing | ||
from gen_from_tests.gen import generate_from_tests | ||
|
||
from eth2spec.test.context import PHASE0 | ||
from eth2spec.test.phase0.finality import test_finality | ||
from eth2spec.config import config_util | ||
from eth2spec.phase0 import spec as spec_phase0 | ||
from eth2spec.phase1 import spec as spec_phase1 | ||
from eth2spec.utils import bls | ||
|
||
|
||
def create_provider(handler_name: str, tests_src, config_name: str) -> gen_typing.TestProvider: | ||
|
||
def prepare_fn(configs_path: str) -> str: | ||
config_util.prepare_config(configs_path, config_name) | ||
reload(spec_phase0) | ||
reload(spec_phase1) | ||
bls.use_milagro() | ||
return config_name | ||
|
||
def cases_fn() -> Iterable[gen_typing.TestCase]: | ||
return generate_from_tests( | ||
runner_name='finality', | ||
handler_name=handler_name, | ||
src=tests_src, | ||
fork_name=PHASE0, | ||
) | ||
|
||
return gen_typing.TestProvider(prepare=prepare_fn, make_cases=cases_fn) | ||
|
||
|
||
if __name__ == "__main__": | ||
gen_runner.run_generator("finality", [ | ||
create_provider('finality', test_finality, 'minimal'), | ||
create_provider('finality', test_finality, 'mainnet'), | ||
]) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
../../core/gen_helpers | ||
../../../ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters