Repository navigation
[P2P] Peer discovery debug CLI sub-commands #730
Description
Objective
Extend the debug CLI to expose sub-commands for driving peer discovery in the P2P module (analogous to how it currently supports driving consensus). This will facilitate both manual and automated testing efforts.
Origin Document
Based on a discussion between @dylanlott and myself about end-to-end test planning for peer discovery. It has been made clear in discussions past (probably in documentation somewhere as well) that we want to prioritize supporting robust manual testing/investigation of these dynamic systems (before they get a chance to run away from us).
Goals
- Expose controls to peer discovery to developers
- Support step-by-step progression through peer discovery
- Support debugging & reproducing peer discovery scenarios (incl. edge cases)
Deliverable
- Extend the debug CLI to expose the sub-commands subcommands outlined below (peer CLI UX)
- (Bonus): draft a design for reproducible peer discovery failure reports or something
- Could be generic (e.g. trace based)
CLI UX - peer & p2p subcommands
The following commands should send/broadcast debug messages into the network, resulting in nodes to print to their respective logs, similar to the debug subcommand's behavior.
peer discovery status # background router only
peer discovery start # background router only
peer discovery stop # background router only
peer list [--all | --staked | --unstaked]
peer forget (--all | <forgetter peer ID>)
peer connections
peer interrogate <peer ID>
peer disconnect <peer ID>
p2pCmd persisten flags:
--trace
NOTE: p2p commands MAY interact with a remote/standalone node rather than utilize the CLI's own P2P module
p2p send [--trace] <peer ID> <text message>
p2p broadcast [--trace] <text message>
Non-goals / Non-deliverables
- Refactoring/simplifying the
Routerinterface - Additional, unrelated libp2p integration work
General issue deliverables
- Update the appropriate CHANGELOG(s)
- Update any relevant local/global README(s)
- Update relevant source code tree explanations
- Add or update any relevant or supporting mermaid diagrams
Testing Methodology
- New CLI subcommands behave as expected
- All tests:
make test_all - LocalNet: verify a
LocalNetis still functioning correctly by following the instructions at docs/development/README.md - k8s LocalNet: verify a
k8s LocalNetis still functioning correctly by following the instructions here
Creator: @bryanchriswhite
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsDone
Activity
[-][P2P] Peer discovery debug CLI sub-commands[/-][+][WIP] [P2P] Peer discovery debug CLI sub-commands[/+][-][WIP] [P2P] Peer discovery debug CLI sub-commands[/-][+][P2P] Peer discovery debug CLI sub-commands[/+][Client] [Tooling] refactor: CLI (#806)
[P2P] Refactor P2P submodules (#895)
Olshansk commentedon Jul 13, 2023
@bryanchriswhite We haven't merged in the P2P subcommand in yet, so do you think this was closed prematurely?
Olshansk commentedon Jul 14, 2023
Per my comment above, reopening until it's merged or told otherwise.