prysm-pulse/endtoend
Ivan Martinez 4ab0a91e51
Validator Slashing Protection DB (#4389)
* Begin adding DB to validator client

Begin adding ValidatorProposalHistory

Implement most of proposal history

Finish tests

Fix marking a proposal for the first time

Change proposalhistory to not using bit shifting

Add pb.go

Change after proto/slashing added

Finally fix protos

Fix most tests

Fix all tests for double proposal protection

Start initialiing DB in validator client

Add db to validator struct

Add DB to ProposeBlock

Fix test errors and begin mocking

Fix test formatting and pass test for validator protection!

Fix merge issues

Fix renames

Fix tests

* Fix tests

* Fix first startup on DB

* Fix nil check tests

* Fix E2E

* Fix e2e flag

* Fix comments

* Fix for comments

* Move proposal hepers to validator/client to keep DB clean

* Add clear-db flag to validator client

* Fix formatting

* Clear out unintended changes

* Fix build issues

* Fix build issues

* Gazelle

* Fix mock test

* Remove proposal history

* Add terminal confirmation to DB clearing

* Add interface for validatorDB, add context to DB functions

* Add force-clear-db flag

* Cleanup

* Update validator/node/node.go

Co-Authored-By: Raul Jordan <raul@prysmaticlabs.com>

* Change db to clear file, not whole folder

* Fix db test

* Fix teardown test

Co-authored-by: Raul Jordan <raul@prysmaticlabs.com>
2020-01-08 13:16:17 -05:00
..
evaluators Efficient computation of epoch participation (#4430) 2020-01-07 19:28:25 +00:00
beacon_node.go Update run time to v0.9.3 (#4154) 2020-01-07 18:47:39 +00:00
BUILD.bazel Build docker images for non-root user (#4320) 2019-12-18 20:52:25 +00:00
demo_e2e_test.go Update run time to v0.9.3 (#4154) 2020-01-07 18:47:39 +00:00
endtoend_test.go Efficient computation of epoch participation (#4430) 2020-01-07 19:28:25 +00:00
epochTimer.go End To End Tests for Demo and Minimal config (#3932) 2019-11-15 13:56:26 -05:00
eth1.go Vastly improve E2E logs and add README (#4440) 2020-01-07 17:00:51 +00:00
minimal_e2e_test.go End To End Tests for Demo and Minimal config (#3932) 2019-11-15 13:56:26 -05:00
README.md Vastly improve E2E logs and add README (#4440) 2020-01-07 17:00:51 +00:00
validator.go Validator Slashing Protection DB (#4389) 2020-01-08 13:16:17 -05: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 it's validators are running and performing properly for a few epochs.

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 - 4 beacon nodes, 64 validators, running for 5 epochs
  • Demo Config - 4 beacon nodes, 64 validators, running for 5 epochs

Instructions

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

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

To test only for a specific config, run:

bazel test //endtoend:go_default_test --test_output=streamed --test_filter=TestEndToEnd_DemoConfig