prysm-pulse/testing/endtoend
Radosław Kapka 21bdbd548a
Deduplicate native state (a.k.a. One State to rule them all) (#10483)
* v0

* getters/setters

* init and copy

* hasher

* all the nice stuff

* make bazel happy

* remove tests for smaller PR

* remove old states

* move files

* import fixes

* custom MarshalSSZ

* fixed deadlock

* copy version when copying state

* correct issues in state_trie

* fix Copy()

* better e2e comment

* add code to minimal state

* spectest test

* Revert "Auxiliary commit to revert individual files from 84154423464e8372f7e0a03367403656ac5cd78e"

This reverts commit 9602599d183081291dfa0ba4f1036430f63a7822.

* native state assert

* always error

* always log

* more native state usage

* cleanup

* remove empty line

* Revert "spectests"

This reverts commit 1c49bed5d1cf6224afaf21e18562bf72fae5d2b6.

# Conflicts:
#	beacon-chain/powchain/service.go
#	beacon-chain/state/v1/state_trie.go
#	beacon-chain/state/v2/state_trie.go
#	beacon-chain/state/v3/state_trie.go
#	testing/spectest/shared/phase0/finality/BUILD.bazel
#	testing/spectest/shared/phase0/finality/runner.go

* dedup field trie

* fix test issues

* cleanup

* use correct field num in FinalizedRootProof

* use existing version constant

* halfway there

* "working" version

* some fixes

* fix field nums in tests

* rename v0types to nativetypes

* Revert "Auxiliary commit to revert individual files from dc549b1cf8e724bd08cee1ecc760ff3771d5592d"

This reverts commit 7254d3070d8693b283fc686a2e01a822ecbac1b3.

* uncomment code

* remove map size

* Revert "Revert "spectests""

This reverts commit 39c271ae6b57d6a3737e2c202cd8407857475e56.

* use reverse map

* Revert "Revert "Revert "spectests"""

This reverts commit 19ba8cf95cdca689357c8234a262e08cccbafef4.

* finally found the bug

(cherry picked from commit a5414c4be1bdb61a50b391ea5301895e772cc5e9)

* simplify populateFieldIndexes

* fix copy

(cherry picked from commit 7da4fb8cf51557ef931bb781872ea52fc6731af5)

* remove native state from e2e

* remove index map

* unsupported functions

* Use ProtobufBeaconState() from native state

* tests

* typo

* reduce complexity of `SaveStatesEfficient`

* remove unused receiver name

* update doc.go

* fix test assertion

* fix test assertion 2

* Phase0 justification bits

* bring back state tests

* rename fieldIndexRev

* versioning of ToProto

* remove version check from unexported function

* hasher tests

* don't return error from JustificationBits

* extract fieldConvertersNative

* helper error function

* use fieldConvertersNative

* Introduce RealPosition method on FieldIndex

* use RealPosition in hasher

* remove unused fields

* remove TestAppendBeyondIndicesLimit

(cherry picked from commit 3017e700282969c30006b64c95c21ffe6b166f8b)

* simplify RealPosition

* rename field interface

* use helper in proofs.go

* Update beacon-chain/core/altair/upgrade.go

Co-authored-by: Nishant Das <nishdas93@gmail.com>
Co-authored-by: Raul Jordan <raul@prysmaticlabs.com>
2022-05-09 13:02:34 +00:00
..
components Deduplicate native state (a.k.a. One State to rule them all) (#10483) 2022-05-09 13:02:34 +00:00
evaluators Fix Multiclient E2E Runs (#10660) 2022-05-09 12:38:11 +02:00
helpers Replace ioutil with io and os (#10541) 2022-04-18 20:42:07 +00:00
params Fix E2E Failures (#10540) 2022-04-19 07:53:02 +00:00
policies Remove Eth2-Types Dependency in Prysm (#10578) 2022-04-29 10:32:11 -04:00
static-files/eth1 Fix E2E Failures (#10540) 2022-04-19 07:53:02 +00:00
types run process_slots before caching committee data (#10639) 2022-05-06 14:33:09 +08:00
BUILD.bazel Remove Eth2-Types Dependency in Prysm (#10578) 2022-04-29 10:32:11 -04:00
deps.bzl e2e: Provide e2e config yaml to web3signer (#10123) 2022-04-12 16:57:46 +00:00
endtoend_test.go run process_slots before caching committee data (#10639) 2022-05-06 14:33:09 +08:00
geth_deps.go Move EndtoEnd Tests to Testing/ Folder (#9586) 2021-09-15 14:42:05 +00:00
lighthouse.BUILD Multiclient E2E With Lighthouse (#10020) 2022-02-02 19:13:52 +00:00
mainnet_e2e_test.go Fix Broken E2E Runs (#10572) 2022-04-28 08:45:59 +00:00
minimal_e2e_test.go run process_slots before caching committee data (#10639) 2022-05-06 14:33:09 +08:00
minimal_slashing_e2e_test.go control test (#10323) 2022-03-08 07:58:19 -08:00
multiclient_e2e_test.go Fix Broken E2E Runs (#10572) 2022-04-28 08:45:59 +00:00
README.md e2e: Add web3signer component (#10088) 2022-01-19 16:22:23 +00:00
slasher_simulator_e2e_test.go Remove Eth2-Types Dependency in Prysm (#10578) 2022-04-29 10:32:11 -04:00
web3signer.BUILD e2e: Add web3signer component (#10088) 2022-01-19 16:22:23 +00:00

End-to-end Testing Package

This is the main project folder of the end-to-end testing suite for Prysm. This performs a full end-to-end test for Prysm, including spinning up an ETH1 dev chain, sending deposits to the deposit contract, and making sure the beacon node and its validators are running and performing properly for a few epochs. It also performs a test on a syncing node, and supports featureflags to allow easy E2E testing of experimental features.

How it works

Through the end2EndConfig struct, you can declare several options such as how many epochs the test should run for, and what BeaconConfig the test should use. You can also declare how many beacon nodes and validator clients are run, the E2E will automatically divide the validators evently among the beacon nodes.

In order to "evaluate" the state of the beacon chain while the E2E is running, there are Evaluators that use the beacon chain node API to determine if the network is performing as it should. This can evaluate for conditions like validator activation, finalization, validator participation and more.

Evaluators have 3 parts, the name for it's test name, a policy which declares which epoch(s) the evaluator should run, and then the evaluation which uses the beacon chain API to determine if the beacon chain passes certain conditions like finality.

Current end-to-end tests

  • Minimal Config - 2 beacon nodes, 256 validators, running for 8 epochs
  • Minimal Config Slashing Test - 2 beacon nodes, 256 validators, tests attester and proposer slashing

Instructions

Note: Java 11 or greater is required to run web3signer.

If you wish to run all the minimal spec E2E tests, you can run them through bazel with:

bazel test //testing/endtoend:go_default_test --test_output=streamed