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:
Jonny Rhea 2019-06-17 15:08:07 -05:00 committed by Danny Ryan
parent c4adf80212
commit 8ea07d24c9
5 changed files with 117 additions and 0 deletions

76
interop/hobbits/README.md Normal file
View File

@ -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

View File

@ -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

BIN
interop/hobbits/hct.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
interop/hobbits/hit.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@ -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