feat: transport nim-v2.2#77
Conversation
|
Looks like From what I observed the issue is that cc: @richard-ramos |
|
Excellent contribution by @rlve on this PR. Adding nim-v1.15 support to the transport interoperability test suite is an important step toward improving implementation diversity and strengthening compatibility testing across the libp2p ecosystem. It is great to see continued work ensuring the Nim implementation is represented more broadly across transport interoperability coverage. I also want to appreciate the detailed debugging work done here. The investigation around the failing Python ↔ Nim WebSocket interoperability cases, particularly identifying the issue with Python sending an empty It is clear a lot of effort has gone into iterating through multiple fixes, testing behavior across implementations, and narrowing down the root cause of the remaining failures. Contributions like this significantly strengthen long-term interoperability reliability. Since Transport Interoperability Tests (PR) / run-tests is still failing, tagging @acul71 and @sumanjeet0012 here as well, could you both please help investigate the remaining CI/CD and cross-implementation interoperability issues at the earliest so we can move this important PR forward. Great work overall, @rlve, really appreciate the persistence and the technical depth behind this contribution. This is a meaningful improvement for libp2p interoperability testing. CCing @johannamoran |
Failing Tests AnalysisSnapshot: 1. python-v0.x (dialer) → nim-v1.15 (listener) — ws, noise, mplexExit code: 1 The ping actually succeeds (RTT ~1.14ms). The crash happens during teardown when Python tries to send the Mplex Fix: Python should catch and swallow 2 & 3. nim-v1.15 (dialer) → python-v0.x (listener) — ws, noise, yamux & mplexExit code: 255 Nim fails immediately after connecting with: Key observation: Nim dials Python over TCP (both yamux and mplex) without any issues. This rules out Noise and muxer bugs entirely. The problem is specific to WebSocket. Python's listener reaches Fix: Capture the raw WS frames with 4. nim-v1.15 (dialer) → lua-v0.1.0 (listener) — tcp, noise, yamuxError: Timeout at 180s No application logs from either container — but that's normal for Lua (the passing test Nim's dialer never even gets a connection, which puts the failure at the socket bind/listen stage before any libp2p logic runs. Most likely causes:
Fix: Check the Lua listener code for how it parses and binds to the multiaddr provided via env vars. |
|
@acul71 , @sumanjeet0012 : Lets discuss with @richard-ramos and @rlve and arrive at a good conclusion on the issue. This is indeed an important PR like hole punching interop PR. |
3abaec1 to
babeca3
Compare
|
@seetadev @acul71 @sumanjeet0012 @richard-ramos I have updated nim version to the latest master. These are the current results:
|
seetadev
left a comment
There was a problem hiding this comment.
Awesome, great progress 💯 @rlve
Ccing @GrapeBaBa (Ethp2p-zig maintainer) and @dozyio (lua-libp2p maintainer). Please share the interop tests logs with them.
Also Ccing @johannamoran and @mishmosh.
Add
nimto transport interop tests.