Skip to content

Conversation

@dhuseby
Copy link
Contributor

@dhuseby dhuseby commented Nov 12, 2025

Signed-off-by: Dave Grantham [email protected]

What was wrong?

The python transport interop testing configuration files were originally checked into the test-plans repo when they should be in the implementation repo like every other implementation.

How was it fixed?

Added interop/transport/Dockerfile, interop/transport/ping_test.py, and interop/transport/pyproject.toml for the transport interop testing framework to use.

To-Do

  • Clean up commit history
  • Add or update documentation related to these changes
  • Add entry to the release notes

Cute Animal Picture

labrador puppy

Dave Grantham added 3 commits November 12, 2025 14:32
Signed-off-by: Dave Grantham <[email protected]>
Signed-off-by: Dave Grantham <[email protected]>
@dhuseby
Copy link
Contributor Author

dhuseby commented Nov 12, 2025

This now works with the re-written transport interop testing framework. Yes the tests are failing but that's a different issue with py-libp2p. This is about getting the Docker image building and running.

./run_tests.sh --test-select '~python' --test-ignore '!~python' -y --force-rebuild

                        ╔╦╦╗  ╔═╗
▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ ║╠╣╚╦═╬╝╠═╗ ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
═══════════════════════ ║║║║║║║╔╣║║ ════════════════════════
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ ╚╩╩═╣╔╩═╣╔╝ ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
                            ╚╝  ╚╝

╲ Transport Interoperability Test Suite
 ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
→ Test Pass: transport-interop-145159-12-11-2025
→ Cache Dir: /srv/cache
→ Test Pass Dir: /srv/cache/test-passes/transport-interop-145159-12-11-2025
→ Workers: 4
→ Select: ~python
→ Ignore: !~python
→ Create Snapshot: false
→ Debug: false
→ Force Rebuild: true

╲ Checking dependencies...
 ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
✓ bash 5.2 (minimum: 4.0)
✓ docker 28.5.2 (minimum: 20.10.0)
  ✓ Docker daemon is running
✓ docker compose 2.40.3 (using 'docker compose')
✓ yq 4.48.1 (minimum: 4.0.0)
✓ wget is installed
✓ unzip is installed

╲ ✓ All dependencies are satisfied
 ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
→ Using: docker compose

╲ Generating test matrix...
 ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
→ bash scripts/generate-tests.sh "~python" "!~python" "false"

╲ Test Matrix Generation
 ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
→ Using CLI test-select: ~python
  → Expanded aliases to: python-v0.4
→ Using CLI test-ignore: !~python
  → Expanded aliases to: rust-v0.53|rust-v0.54|rust-v0.55|rust-v0.56|go-v0.38|go-v0.39|go-v0.40|go-v0.41|go-v0.42|go-v0.43|go-v0.44|go-v0.45|js-v1.x|js-v2.x|js-v3.x|nim-v1.14|jvm-v1.2|c-v0.0.1|dotnet-v1.0|zig-v0.0.1|eth-p2p-z-v0.0.1|chromium-js-v1.x|chromium-js-v2.x|firefox-js-v1.x|firefox-js-v2.x|webkit-js-v1.x|webkit-js-v2.x|chromium-rust-v0.53|chromium-rust-v0.54
→ Computed cache key: 5e4b4c56
  → [MISS] Generating new test matrix

→ Found 30 implementations in impls.yaml
→ Loading implementation data into memory...
  ✓ Loaded 30 implementations into memory
  ✓ Loaded 1 select patterns
  ✓ Loaded 29 ignore patterns

╲ Generating test combinations...
 ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
✓ Generated 3 tests (90 ignored)

╲ ✓ Generated test matrix with 3 tests (90 ignored)
 ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
✓ Cached as: 5e4b4c56.yaml

╲ Building Docker images...
 ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
→ Building 1 required implementations (including base images)

→ bash scripts/build-images.sh "python-v0.4" "true"
  → Cache directory: /srv/cache
  → Filter: python-v0.4

╲ Building: python-v0.4
 ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
→ Type: github
→ Repo: libp2p/py-libp2p
→ Commit: 8b34e465
  → [MISS] Downloading snapshot...
--2025-11-12 14:52:07--  https://github.com/libp2p/py-libp2p/archive/8b34e4654ac46cfe6043ba75e7aa64e4c3c29777.zip
Resolving github.com (github.com)... 140.82.112.3
Connecting to github.com (github.com)|140.82.112.3|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://codeload.github.com/libp2p/py-libp2p/zip/8b34e4654ac46cfe6043ba75e7aa64e4c3c29777 [following]
--2025-11-12 14:52:08--  https://codeload.github.com/libp2p/py-libp2p/zip/8b34e4654ac46cfe6043ba75e7aa64e4c3c29777
Resolving codeload.github.com (codeload.github.com)... 140.82.112.10
Connecting to codeload.github.com (codeload.github.com)|140.82.112.10|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [application/zip]
Saving to: ‘/srv/cache/snapshots/8b34e4654ac46cfe6043ba75e7aa64e4c3c29777.zip’

/srv/cache/snapshots/8b34e4654ac46c     [   <=>                                                            ]   1.20M  2.81MB/s    in 0.4s    

2025-11-12 14:52:08 (2.81 MB/s) - ‘/srv/cache/snapshots/8b34e4654ac46cfe6043ba75e7aa64e4c3c29777.zip’ saved [1262903]

  ✓ Added to cache: 8b34e465.zip
→ Extracting snapshot to: /tmp/tmp.kXbbXCD3u5
→ Building Docker image: docker build -f /tmp/tmp.kXbbXCD3u5/py-libp2p-8b34e4654ac46cfe6043ba75e7aa64e4c3c29777/interop/transport/Dockerfile -t python-v0.4 /tmp/tmp.kXbbXCD3u5/py-libp2p-8b34e4654ac46cfe6043ba75e7aa64e4c3c29777
[+] Building 33.2s (12/12) FINISHED                                                                                            docker:default
 => [internal] load build definition from Dockerfile                                                                                     0.0s
 => => transferring dockerfile: 725B                                                                                                     0.0s
 => [internal] load metadata for docker.io/library/python:3.11-slim                                                                      0.6s
 => [internal] load .dockerignore                                                                                                        0.0s
 => => transferring context: 2B                                                                                                          0.0s
 => [internal] load build context                                                                                                        0.1s
 => => transferring context: 4.23MB                                                                                                      0.1s
 => [1/7] FROM docker.io/library/python:3.11-slim@sha256:e4676722fba839e2e5cdb844a52262b43e90e56dbd55b7ad953ee3615ad7534f                0.0s
 => CACHED [2/7] WORKDIR /app                                                                                                            0.0s
 => CACHED [3/7] RUN apt-get update && apt-get install -y     redis-tools     build-essential     cmake     pkg-config     libgmp-dev    0.0s
 => [4/7] COPY ./ /app/py-libp2p                                                                                                         0.1s
 => [5/7] COPY interop/transport/pyproject.toml .                                                                                        0.0s
 => [6/7] RUN pip install --no-cache-dir -e .                                                                                           30.7s
 => [7/7] COPY interop/transport/ping_test.py .                                                                                          0.0s 
 => exporting to image                                                                                                                   1.5s 
 => => exporting layers                                                                                                                  1.5s 
 => => writing image sha256:ea5f6e8ff46059b623e6e6b2848abc464ca03f87d44bdaab84af83712ac2bc93                                             0.0s 
 => => naming to docker.io/library/python-v0.4                                                                                           0.0s 
→ Cleaning up extracted snapshot...                                                                                                           
✓ Built: python-v0.4
✓ Image ID: ea5f6e8ff460...

✓ All required images built successfully

╲ Test selection...
 ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
→ Selected tests:
  ✓ python-v0.4 x python-v0.4 (tcp, noise, mplex)
  ✓ python-v0.4 x python-v0.4 (tcp, noise, yamux)
  ✓ python-v0.4 x python-v0.4 (quic-v1)

→ Ignored tests:
  ✗ rust-v0.53 x python-v0.4 (tcp, noise, mplex) [ignored]
  ✗ rust-v0.53 x python-v0.4 (tcp, noise, yamux) [ignored]
  ✗ rust-v0.53 x python-v0.4 (quic-v1) [ignored]
  ✗ rust-v0.54 x python-v0.4 (tcp, noise, mplex) [ignored]
  ✗ rust-v0.54 x python-v0.4 (tcp, noise, yamux) [ignored]
  ✗ rust-v0.54 x python-v0.4 (quic-v1) [ignored]
  ✗ rust-v0.55 x python-v0.4 (tcp, noise, mplex) [ignored]
  ✗ rust-v0.55 x python-v0.4 (tcp, noise, yamux) [ignored]
  ✗ rust-v0.55 x python-v0.4 (quic-v1) [ignored]
  ✗ rust-v0.56 x python-v0.4 (tcp, noise, mplex) [ignored]
  ✗ rust-v0.56 x python-v0.4 (tcp, noise, yamux) [ignored]
  ✗ rust-v0.56 x python-v0.4 (quic-v1) [ignored]
  ✗ go-v0.38 x python-v0.4 (tcp, noise, yamux) [ignored]
  ✗ go-v0.38 x python-v0.4 (quic-v1) [ignored]
  ✗ go-v0.39 x python-v0.4 (tcp, noise, yamux) [ignored]
  ✗ go-v0.39 x python-v0.4 (quic-v1) [ignored]
  ✗ go-v0.40 x python-v0.4 (tcp, noise, yamux) [ignored]
  ✗ go-v0.40 x python-v0.4 (quic-v1) [ignored]
  ✗ go-v0.41 x python-v0.4 (tcp, noise, yamux) [ignored]
  ✗ go-v0.41 x python-v0.4 (quic-v1) [ignored]
  ✗ go-v0.42 x python-v0.4 (tcp, noise, yamux) [ignored]
  ✗ go-v0.42 x python-v0.4 (quic-v1) [ignored]
  ✗ go-v0.43 x python-v0.4 (tcp, noise, yamux) [ignored]
  ✗ go-v0.43 x python-v0.4 (quic-v1) [ignored]
  ✗ go-v0.44 x python-v0.4 (tcp, noise, yamux) [ignored]
  ✗ go-v0.44 x python-v0.4 (quic-v1) [ignored]
  ✗ go-v0.45 x python-v0.4 (tcp, noise, yamux) [ignored]
  ✗ go-v0.45 x python-v0.4 (quic-v1) [ignored]
  ✗ python-v0.4 x rust-v0.53 (tcp, noise, mplex) [ignored]
  ✗ python-v0.4 x rust-v0.53 (tcp, noise, yamux) [ignored]
  ✗ python-v0.4 x rust-v0.53 (quic-v1) [ignored]
  ✗ python-v0.4 x rust-v0.54 (tcp, noise, mplex) [ignored]
  ✗ python-v0.4 x rust-v0.54 (tcp, noise, yamux) [ignored]
  ✗ python-v0.4 x rust-v0.54 (quic-v1) [ignored]
  ✗ python-v0.4 x rust-v0.55 (tcp, noise, mplex) [ignored]
  ✗ python-v0.4 x rust-v0.55 (tcp, noise, yamux) [ignored]
  ✗ python-v0.4 x rust-v0.55 (quic-v1) [ignored]
  ✗ python-v0.4 x rust-v0.56 (tcp, noise, mplex) [ignored]
  ✗ python-v0.4 x rust-v0.56 (tcp, noise, yamux) [ignored]
  ✗ python-v0.4 x rust-v0.56 (quic-v1) [ignored]
  ✗ python-v0.4 x go-v0.38 (tcp, noise, yamux) [ignored]
  ✗ python-v0.4 x go-v0.38 (quic-v1) [ignored]
  ✗ python-v0.4 x go-v0.39 (tcp, noise, yamux) [ignored]
  ✗ python-v0.4 x go-v0.39 (quic-v1) [ignored]
  ✗ python-v0.4 x go-v0.40 (tcp, noise, yamux) [ignored]
  ✗ python-v0.4 x go-v0.40 (quic-v1) [ignored]
  ✗ python-v0.4 x go-v0.41 (tcp, noise, yamux) [ignored]
  ✗ python-v0.4 x go-v0.41 (quic-v1) [ignored]
  ✗ python-v0.4 x go-v0.42 (tcp, noise, yamux) [ignored]
  ✗ python-v0.4 x go-v0.42 (quic-v1) [ignored]
  ✗ python-v0.4 x go-v0.43 (tcp, noise, yamux) [ignored]
  ✗ python-v0.4 x go-v0.43 (quic-v1) [ignored]
  ✗ python-v0.4 x go-v0.44 (tcp, noise, yamux) [ignored]
  ✗ python-v0.4 x go-v0.44 (quic-v1) [ignored]
  ✗ python-v0.4 x go-v0.45 (tcp, noise, yamux) [ignored]
  ✗ python-v0.4 x go-v0.45 (quic-v1) [ignored]
  ✗ python-v0.4 x js-v1.x (tcp, noise, mplex) [ignored]
  ✗ python-v0.4 x js-v1.x (tcp, noise, yamux) [ignored]
  ✗ python-v0.4 x js-v2.x (tcp, noise, mplex) [ignored]
  ✗ python-v0.4 x js-v2.x (tcp, noise, yamux) [ignored]
  ✗ python-v0.4 x js-v3.x (tcp, noise, mplex) [ignored]
  ✗ python-v0.4 x js-v3.x (tcp, noise, yamux) [ignored]
  ✗ python-v0.4 x nim-v1.14 (tcp, noise, mplex) [ignored]
  ✗ python-v0.4 x nim-v1.14 (tcp, noise, yamux) [ignored]
  ✗ python-v0.4 x jvm-v1.2 (tcp, noise, mplex) [ignored]
  ✗ python-v0.4 x jvm-v1.2 (tcp, noise, yamux) [ignored]
  ✗ python-v0.4 x jvm-v1.2 (quic-v1) [ignored]
  ✗ python-v0.4 x c-v0.0.1 (tcp, noise, mplex) [ignored]
  ✗ python-v0.4 x c-v0.0.1 (tcp, noise, yamux) [ignored]
  ✗ python-v0.4 x c-v0.0.1 (quic-v1) [ignored]
  ✗ python-v0.4 x dotnet-v1.0 (tcp, noise, yamux) [ignored]
  ✗ python-v0.4 x zig-v0.0.1 (quic-v1) [ignored]
  ✗ python-v0.4 x eth-p2p-z-v0.0.1 (quic-v1) [ignored]
  ✗ js-v1.x x python-v0.4 (tcp, noise, mplex) [ignored]
  ✗ js-v1.x x python-v0.4 (tcp, noise, yamux) [ignored]
  ✗ js-v2.x x python-v0.4 (tcp, noise, mplex) [ignored]
  ✗ js-v2.x x python-v0.4 (tcp, noise, yamux) [ignored]
  ✗ js-v3.x x python-v0.4 (tcp, noise, mplex) [ignored]
  ✗ js-v3.x x python-v0.4 (tcp, noise, yamux) [ignored]
  ✗ nim-v1.14 x python-v0.4 (tcp, noise, mplex) [ignored]
  ✗ nim-v1.14 x python-v0.4 (tcp, noise, yamux) [ignored]
  ✗ jvm-v1.2 x python-v0.4 (tcp, noise, mplex) [ignored]
  ✗ jvm-v1.2 x python-v0.4 (tcp, noise, yamux) [ignored]
  ✗ jvm-v1.2 x python-v0.4 (quic-v1) [ignored]
  ✗ c-v0.0.1 x python-v0.4 (tcp, noise, mplex) [ignored]
  ✗ c-v0.0.1 x python-v0.4 (tcp, noise, yamux) [ignored]
  ✗ c-v0.0.1 x python-v0.4 (quic-v1) [ignored]
  ✗ dotnet-v1.0 x python-v0.4 (tcp, noise, yamux) [ignored]
  ✗ zig-v0.0.1 x python-v0.4 (quic-v1) [ignored]
  ✗ eth-p2p-z-v0.0.1 x python-v0.4 (quic-v1) [ignored]

→ Total: 3 tests to execute, 90 ignored

╲ Running tests... (4 workers)
 ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
[3/3] python-v0.4 x python-v0.4 (quic-v1)
[2/3] python-v0.4 x python-v0.4 (tcp, noise, yamux)
[1/3] python-v0.4 x python-v0.4 (tcp, noise, mplex)

╲ Collecting results...
 ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
→ Results:
  → Total: 3
  ✓ Passed: 0
  ✗ Failed: 3
    - python-v0.4 x python-v0.4 (quic-v1)
    - python-v0.4 x python-v0.4 (tcp, noise, mplex)
    - python-v0.4 x python-v0.4 (tcp, noise, yamux)

→ Total time: 00:00:57

╲ Generating results dashboard...
 ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
→ bash scripts/generate-dashboard.sh
  ✓ Generated /srv/cache/test-passes/transport-interop-145159-12-11-2025/results.md
  ✓ Generated /srv/cache/test-passes/transport-interop-145159-12-11-2025/results.html

╲ ✗ 3 test(s) failed
 ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔

@sumanjeet0012
Copy link
Contributor

Thanks, @dhuseby, for raising this PR.

There are no issues with py-libp2p itself—the difference is that it has basic linting configurations enabled (checking for trailing whitespaces, extra newlines, line length, etc.), unlike the test-plans repo.

We usually run: pre-commit run --all-files to catch and fix lint issues locally.

I’d be happy to resolve these—it should take less than half an hour. Please let me know if you’d prefer me to raise a PR against your fork or if you’d like to grant collaborator access so I can fix them directly here.

@acul71
Copy link
Contributor

acul71 commented Nov 13, 2025

Hi @sumanjeet0012, since I don't have admin access to add collaborators directly, could you please:

  1. Create a branch with the lint fixes (run pre-commit run --all-files to fix the issues)
  2. Open a PR targeting the branch dhuseby/fix/set-up-interop-testing (not main)
  3. I'll then merge it or push the commits directly to this PR branch

Alternatively, if you create a branch and let me know the name, I can pull and push those commits directly to this PR branch.

Thanks!

@sumanjeet0012
Copy link
Contributor

sumanjeet0012 commented Nov 13, 2025

@dhuseby I would like to share that we recently had a meeting where we discussed the resolution of the lint issues in this PR #1042 . Both @pacrob and @acul71 have confirmed that this PR successfully addresses the lint issues.

wish to share that this PR #1042 will be merged soon.
We will then continue our work on this PR for interop V2.

@acul71
Copy link
Contributor

acul71 commented Nov 15, 2025

@sumanjeet0012 has this got

Current commit SHA for python-v0.4:

651f54ce43f463bf55512d4a9e4664955372205c

This is set in transport-interop/impl/python/v0.4/Makefile on line 2.

This commit corresponds to the "Enhance QUIC Connection ID tracking with proactive notification and improved fallback" commit from PR #1046, which includes the QUIC interop fixes we implemented.

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

Successfully merging this pull request may close these issues.

4 participants