Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge test coverage #10489

Closed
11 of 31 tasks
terencechain opened this issue Apr 6, 2022 · 3 comments
Closed
11 of 31 tasks

Merge test coverage #10489

terencechain opened this issue Apr 6, 2022 · 3 comments
Labels
Merge PRs related to the great milestone the merge Tracking Gotta Catch 'Em All

Comments

@terencechain
Copy link
Member

terencechain commented Apr 6, 2022

Merge test cases

Initial Syncing (beacon_blocks_by_range)

  • BN(fresh) <-> EE(fresh) can sync to head
  • BN(fresh) <-> EE(synced) can sync to head
  • BN(close to synced) <->(fresh) can sync to head
  • Validate when EE goes offline, the UX is still smooth
  • Validate when EE times out, the UX is still smooth
  • Validate BN can retrospectively validate terminal block for optimistic syncing
  • Can optimistic sync through very long non-finality durations

Regular syncing (gossip-sub)

  • Can submit a voluntary exit
  • Can slash someone and be slashed
  • Validate when EE goes offline, the UX is still smooth
  • Validate when EE times out, the UX is still smooth

Emergency conditions

  • Gracefully shut down when an invalid block is justified/finalized
  • --safe-slots-to-import-optimistically works as expected
  • TERMINAL_BLOCK_HASH works as expected

Validator

  • Duties are prevented under an optimistic mode, ensure smooth UX
  • Web3signer works post-merge
  • Fee recipient works with BN default
  • Fee recipient works with VC default from the config file
  • Fee recipient works with VC from local config file
  • Fee recipient works with VC from remote URL config file
  • Fee recipient works with dynamically updating VC fee recipients
  • Checkpoint sync works past-merge, or when EE is syncing and beacon is optimistic

APIs

  • Test all the prysm API endpoints post-Bellatrix
  • Test all the official beacon API endpoints post-Bellatrix

Stress

  • Test large blocks
  • Test shorter slot times

Performance

  • Validate histogram of response times for the different API methods
  • Validate pprof during various run-time conditions
  • Validate Jaeger in Prysm post-merge when it comes to common, processing operations
  • Validate performance during optimistic sync?
  • Validate disk-size growth for both EL and CL
@terencechain terencechain added Merge PRs related to the great milestone the merge Tracking Gotta Catch 'Em All labels Apr 6, 2022
@SeaMonkey82
Copy link

Some initial thoughts based on testing done so far:

Merge test cases

Initial Syncing (beacon_blocks_by_range)

* [ ]  BN(fresh) <-> EE(fresh) can sync to head

* [ ]  BN(fresh) <-> EE(synced) can sync to head

* [ ]  BN(close to synced) <->(fresh) can sync to head

These are true for all EL clients except ethereumjs at the moment since it doesn't currently support optimistic sync, so if the CL gets ahead, the only way to get it to sync is to start fresh. Resuming sync is something that gets tested usually more than once per day, as I'm always checking for the latest commits. If there are conditions which present potential changes in behavior specifically for a fresh sync, please let me know.

Regular syncing (gossip-sub)

* [ ]  Validate when EE goes offline, the UX is still smooth

This isn't currently true. Lots of error noise.

[2022-04-18 21:10:00] ERROR sync: Could not handle p2p pubsub error=Post "http://localhost:8578": dial tcp 127.0.0.1:8578: connect: connection refused
got an unexpected error
github.com/prysmaticlabs/prysm/beacon-chain/powchain.handleRPCError
        beacon-chain/powchain/engine_client.go:290
github.com/prysmaticlabs/prysm/beacon-chain/powchain.(*Service).NewPayload
        beacon-chain/powchain/engine_client.go:71
github.com/prysmaticlabs/prysm/beacon-chain/blockchain.(*Service).notifyNewPayload
        beacon-chain/blockchain/optimistic_sync.go:136
github.com/prysmaticlabs/prysm/beacon-chain/blockchain.(*Service).onBlock
        beacon-chain/blockchain/process_block.go:116
github.com/prysmaticlabs/prysm/beacon-chain/blockchain.(*Service).ReceiveBlock
        beacon-chain/blockchain/receive_block.go:39
github.com/prysmaticlabs/prysm/beacon-chain/sync.(*Service).beaconBlockSubscriber
        beacon-chain/sync/subscriber_beacon_blocks.go:34
github.com/prysmaticlabs/prysm/beacon-chain/sync.(*Service).subscribeWithBase.func1
        beacon-chain/sync/subscriber.go:190
runtime.goexit
        GOROOT/src/runtime/asm_amd64.s:1581
could not validate execution payload from execution engine
github.com/prysmaticlabs/prysm/beacon-chain/blockchain.(*Service).notifyNewPayload
        beacon-chain/blockchain/optimistic_sync.go:161
github.com/prysmaticlabs/prysm/beacon-chain/blockchain.(*Service).onBlock
        beacon-chain/blockchain/process_block.go:116
github.com/prysmaticlabs/prysm/beacon-chain/blockchain.(*Service).ReceiveBlock
        beacon-chain/blockchain/receive_block.go:39
github.com/prysmaticlabs/prysm/beacon-chain/sync.(*Service).beaconBlockSubscriber
        beacon-chain/sync/subscriber_beacon_blocks.go:34
github.com/prysmaticlabs/prysm/beacon-chain/sync.(*Service).subscribeWithBase.func1
        beacon-chain/sync/subscriber.go:190
runtime.goexit
        GOROOT/src/runtime/asm_amd64.s:1581
could not verify new payload
github.com/prysmaticlabs/prysm/beacon-chain/blockchain.(*Service).onBlock
        beacon-chain/blockchain/process_block.go:118
github.com/prysmaticlabs/prysm/beacon-chain/blockchain.(*Service).ReceiveBlock
        beacon-chain/blockchain/receive_block.go:39
github.com/prysmaticlabs/prysm/beacon-chain/sync.(*Service).beaconBlockSubscriber
        beacon-chain/sync/subscriber_beacon_blocks.go:34
github.com/prysmaticlabs/prysm/beacon-chain/sync.(*Service).subscribeWithBase.func1
        beacon-chain/sync/subscriber.go:190
runtime.goexit
        GOROOT/src/runtime/asm_amd64.s:1581
could not process block
github.com/prysmaticlabs/prysm/beacon-chain/blockchain.(*Service).ReceiveBlock
        beacon-chain/blockchain/receive_block.go:40
github.com/prysmaticlabs/prysm/beacon-chain/sync.(*Service).beaconBlockSubscriber
        beacon-chain/sync/subscriber_beacon_blocks.go:34
github.com/prysmaticlabs/prysm/beacon-chain/sync.(*Service).subscribeWithBase.func1
        beacon-chain/sync/subscriber.go:190
runtime.goexit
        GOROOT/src/runtime/asm_amd64.s:1581 topic=/eth2/e7acb210/beacon_block/ssz_snappy

Validator

* [ ]  Duties are prevented under an optimistic mode, ensure smooth UX

This works fine.

@SeaMonkey82
Copy link

SeaMonkey82 commented Apr 28, 2022

Some notes on docs:

https://docs.prylabs.network/docs/wallet/nondeterministic
The "Import validator accounts" section of this page is the only one that doesn't include a table of available flags. --keys-dir is given in the example, but --wallet-dir is omitted.

https://docs.prylabs.network/docs/how-prysm-works/ethereum-public-api
Page describes versions of the API spec as "v1, v2.0.0 and dev"
Current version of the spec is v2.2.0 and prior version is v2.1.0.

@SeaMonkey82
Copy link

Submitted a voluntary exit without incident today.

      "index": "110393",
      "balance": "32008291207",
      "status": "exited_unslashed",
      "validator": {
        "pubkey": "0xb55c538917ac6f096677b794ab52cf4c82c1431771f97693fbff189d7b3ffbaf218174562c8b9aa168ad7ba33df04b7e",
        "withdrawal_credentials": "0x00fd2d67e5cb6eac9f1019400267ecf9aad4570bec7fd25a130c884922f9621f",
        "effective_balance": "32000000000",
        "slashed": false,
        "activation_eligibility_epoch": "10932",
        "activation_epoch": "10938",
        "exit_epoch": "11265",
        "withdrawable_epoch": "11521"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Merge PRs related to the great milestone the merge Tracking Gotta Catch 'Em All
Projects
None yet
Development

No branches or pull requests

3 participants