Create intiial interop procedure (#48)
* Create hobbits-client_interop_proceedure.md * Update hobbits-client_interop_proceedure.md * Update hobbits-client_interop_proceedure.md adding link to hobbits conformance tests * Create hobbits-conformance-tests * Add files via upload * Update hobbits-conformance-tests * Update hobbits-conformance-tests * Create hobbits-interop_procedure.md * Update and rename hobbits-conformance-tests to hobbits-conformance-tests.md * Delete hobbits-client_interop_proceedure.md * Add files via upload * Create hobbits-integration-tests.md * Update hobbits-interop_procedure.md * Update hobbits-integration-tests.md * Delete hit.png * Add files via upload * Delete hit.png * Add files via upload * Update hobbits-integration-tests.md * Update interop/hobbits-integration-tests.md Co-Authored-By: Hsiao-Wei Wang <hwwang156@gmail.com> * Update interop/hobbits-interop_procedure.md Co-Authored-By: Hsiao-Wei Wang <hwwang156@gmail.com> * Update interop/hobbits-interop_procedure.md Co-Authored-By: Hsiao-Wei Wang <hwwang156@gmail.com> * Update interop/hobbits-interop_procedure.md Co-Authored-By: Hsiao-Wei Wang <hwwang156@gmail.com> * Update interop/hobbits-integration-tests.md Co-Authored-By: Hsiao-Wei Wang <hwwang156@gmail.com> * Update interop/hobbits-interop_procedure.md Co-Authored-By: Hsiao-Wei Wang <hwwang156@gmail.com> * Create README.md * changed dir structure per hww comments * Update interop/hobbits/README.md Co-Authored-By: Danny Ryan <dannyjryan@gmail.com> * Update interop/hobbits/README.md Co-Authored-By: Danny Ryan <dannyjryan@gmail.com> * Update interop/hobbits/README.md Co-Authored-By: Danny Ryan <dannyjryan@gmail.com> * Update interop/hobbits/README.md Co-Authored-By: Danny Ryan <dannyjryan@gmail.com> * Update interop/hobbits/README.md Co-Authored-By: Danny Ryan <dannyjryan@gmail.com> * Update interop/hobbits/integration-tests.md Co-Authored-By: Danny Ryan <dannyjryan@gmail.com> * Update README.md * Update integration-tests.md
This commit is contained in:
parent
c4adf80212
commit
8ea07d24c9
|
@ -0,0 +1,76 @@
|
|||
# Initial Interop
|
||||
|
||||
For the initial client interop, clients will utilize a simplified networking implementation and wire protocol. For more information please review the hobbits specification [here](https://github.com/deltap2p/hobbits).
|
||||
|
||||
### Prereqs
|
||||
|
||||
- targeting the frozen spec (v0.8)
|
||||
- all clients must pass reference tests
|
||||
- all clients must pass [hobbits integration tests](./integration-tests.md)
|
||||
- all wire protocol implementations must pass [hobbits conformance tests](./conformance-tests.md)
|
||||
|
||||
## Stage One: Coordinated Start
|
||||
|
||||
Clients simulate a coordinated genesis event and gossip blocks/attestations for each slot. This stage demonstrates the ability of clients to finalize the chain starting from `Eth2Genesis`.
|
||||
|
||||
### Prereqs
|
||||
|
||||
- Ability to read in the N number of deposits required to trigger the `is_genesis_trigger` function
|
||||
- Ability to gossip blocks and attestations
|
||||
- Static peering
|
||||
- TCP transport
|
||||
- [Minimal Constants](https://github.com/ethereum/eth2.0-specs/tree/master/configs/constant_presets)
|
||||
|
||||
### Procedure
|
||||
|
||||
For the initial round:
|
||||
1. Clients will pair off in teams of two.
|
||||
2. `is_genesis_trigger` will be triggered on startup
|
||||
3. Once the clients can finalize the chain, then they pick another client pair to interop with.
|
||||
|
||||
Repeat (1) & (2) until all clients are talking.
|
||||
|
||||
>**Round 1:** 2 nodes (one per client) with 16 validators/client
|
||||
>**Round 2:** 4 nodes (one per client) with 8 validators/client
|
||||
>**Round 3:** 8 nodes (one per client) with 4 validators/client
|
||||
|
||||
### Goal
|
||||
|
||||
Clients can declare success at each round after 3 epochs where:
|
||||
- Epoch 2 is justified
|
||||
- Epoch 1 is finalized
|
||||
|
||||
Stretch goal is for clients to run ~15 minutes without error and continual finalization.
|
||||
|
||||
## Stage Two: Join & Sync
|
||||
|
||||
Clients join an existing short-lived testnet and sync. This stage demonstrates the clients' ability to successfully join an existing network.
|
||||
|
||||
### Prereqs
|
||||
|
||||
- RPC methods implemented so that a new client can sync to an existing testnet.
|
||||
- Standup a short-lived heterogeneous testnet
|
||||
- Static peering
|
||||
- TCP transport
|
||||
|
||||
### Procedure
|
||||
|
||||
For the initial round:
|
||||
1. Clients will pair off in teams of two
|
||||
2. Clients A & B create a testnet
|
||||
3. A adds another node to sync from scratch
|
||||
4. B adds another node to sync from scratch
|
||||
|
||||
> Note: The additional nodes will not have validators
|
||||
|
||||
Repeat steps (1) thru (3) until all clients are talking.
|
||||
|
||||
>**Round 1:** 2 nodes (one per client) with 16 validators/client
|
||||
>**Round 2:** 4 nodes (one per client) with 8 validators/client
|
||||
>**Round 3:** 8 nodes (one per client) with 4 validators/client
|
||||
|
||||
### Goal
|
||||
|
||||
Clients can declare success when they are able to sync to the existing testnet chain and stay in sync for 3 epochs where:
|
||||
- Epoch 2 is justified
|
||||
- Epoch 1 is finalized
|
|
@ -0,0 +1,22 @@
|
|||
# Conformance testing procedure
|
||||
|
||||
![hct](hct.png)
|
||||
|
||||
### Test 1: Ping/Pong
|
||||
1) conformance app sends a ping with a random payload of bytes
|
||||
2) sample app receives the ping and returns the payload in the pong
|
||||
3) conformance app tests the payload sent vs the payload received.
|
||||
match -> success
|
||||
mismatch -> fail
|
||||
|
||||
### Test 2: Port Test
|
||||
1) conformance app dials the sample app's tcp port
|
||||
open -> success
|
||||
closed -> fail
|
||||
|
||||
### Test 3: Send/Rcv Msg
|
||||
1) conformance app sends a message to sample app
|
||||
2) sample app receives message and returns payload in a reply message
|
||||
3) conformance app tests the payload sent vs the payload received.
|
||||
match -> success
|
||||
mismatch -> fail
|
Binary file not shown.
After Width: | Height: | Size: 16 KiB |
Binary file not shown.
After Width: | Height: | Size: 3.9 KiB |
|
@ -0,0 +1,19 @@
|
|||
# integration testing procedure
|
||||
|
||||
![hit](hit.png)
|
||||
|
||||
### Test 1: Coordinated Start
|
||||
|
||||
1. Both clients are connected as above and started
|
||||
2. `is_genesis_trigger` will be triggered immediately
|
||||
3. Messages between clients are routed through the relay
|
||||
4. The relay decodes and encodes each message as it passes thru the relay
|
||||
5. If the clients are able to justify and finalize, then they pass
|
||||
|
||||
### Test 2: Join & Sync
|
||||
|
||||
1. Both clients are connected as above and started
|
||||
2. Clients run for a couple of epochs
|
||||
3. A third client (w/o validators) joins the network and asks to sync
|
||||
4. If the new client can successfully sync and all 3 continue to finalize the chain, then they pass
|
||||
|
Loading…
Reference in New Issue