libp2p / libp2p/cpp-libp2p

Multiselect integration test

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

Nobody has claimed this yet.

help wanted
Dominant language
C++
Stars
492
Forks
130
PR merge metrics
No merged PRs in 30d

Description

Testing of #111 uncovers that protocol negotiation happens more often than in the master branch. Moreover, that negotiation often fails due to unexpected messages which may indicate the error-prone messages flow and order.

The issue is to create some integration test for the multiselect protocol to reveal such errors and verify messages order correctness without any dependency on underlying implementation (either callbacks or tasks scheduling - #111 addresses it).

Log example of multiselect issues when #111 gets employed:

[2021-03-15 15:29:45.873680000][th:584649][info] multiselect got a unexpected request-response combination - sending 'ls'
[2021-03-15 15:29:45.873701000][th:584649][warning] listener_mgr can not negotiate protocols, other side has violated a protocol and sent an unexpected message
[2021-03-15 15:29:45.984183000][th:584649][info] multiselect got a unexpected request-response combination - sending 'ls'
[2021-03-15 15:29:45.984203000][th:584649][warning] listener_mgr can not negotiate protocols, other side has violated a protocol and sent an unexpected message

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

Review issue #111 alongside the multiselect protocol flow and any existing integration-test entry points. Reproduce the logged unexpected message and negotiation-order failures, then define a test that verifies message ordering without depending on callbacks or task scheduling.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
networking, testing
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.