libp2p / libp2p/go-libp2p

Stress Test

Open
#839 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

kind/enhancement kind/test
Dominant language
Go
Stars
6.9k
Forks
1.3k
Avg merge
13d 21h
Merged PRs (30d)
1

Description

We should write a simple stress-test for testground that:

1. Opens connections between a bunch of peers using different transports.
2. Creates and uses a bunch of streams.
a. Idle streams.
b. Low bandwidth streams.
c. Burst streams.
d. Rapidly closes streams (i.e., repeatedly open/close, maybe send a little bit of data).
e. Full-throttle streams. We should have at least one stream sending as much data as it can at all times and this stream should never break.

Under _good_ network conditions (no bad middleboxes), no connection/stream should fail for any reason. Testground should be able to behave like a good network.

Motivation: bugs like https://github.com/libp2p/go-yamux/issues/15. Under good network conditions, connections should never simply break.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the Testground entry point for integration or network tests and identify how peers, transports, and streams are created. Use the listed idle, low-bandwidth, burst, rapidly closing, and full-throttle stream cases as acceptance criteria. Done means connections and streams remain reliable under good network conditions.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
distributed-systems, networking, testing-qa
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.