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

Basic project flare (hole punching) test #21

Closed
BigLep opened this issue Mar 17, 2022 · 1 comment
Closed

Basic project flare (hole punching) test #21

BigLep opened this issue Mar 17, 2022 · 1 comment

Comments

@BigLep
Copy link
Contributor

BigLep commented Mar 17, 2022

Done Criteria

We have a test-plan that can be run as part of go-libp2p CI that spins up two go-libp2p nodes behind separate NATs and confirms that hole-punching succeeds within the allotted 3 retries.

One go-libp2p nodes should be using the latest go-libp2p code. The other should be using the previous release. (We do this to ensure we haven't deviated from the spec.)

Why Important

This is critical for ensuring we don't regress on project Flare functionality. Once libp2p consumers like go-ipfs start enabling hole punching in go-libp2p by default, users are going to start having access to more content. We want to make sure future releases of go-libp2p don't regress on this behavior, effectively taking away content that was previously accessible. We need this automated because manual testing of hole punching scenarios doesn't scale.

User/Customer

go-libp2p maintainers to ensure not regressing.
This gives go-ipfs, Lotus, etc. confidence about including the functionality by default.

Notes

  1. At least as of 2022-03-16 there is active effort to get Testground as a Service infrastructure up and reliable so test-plans can be executed as part of CI. Since we have high confidence that this is coming and that it will land, we can resolve this issue once we have the test plan that passes manually for now.
  2. NAT functionality in Testground will be needed. This is being tracked here: Enable creating nodes behind NATs and/or firewalls testground/testground#1299
  3. A key thing here is to make sure we don't break compatibility from the spec. This is why we don't test two identical libp2p nodes. Even better than two go-libp2p nodes would be a rust-libp2p and go-libp2p node.
  4. There is a SimOpen PR here (Simopen Tests #16 ) in case it's of use.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants