Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
113 commits
Select commit Hold shift + click to select a range
01bddda
feat: add js-libp2p Echo protocol interoperability tests
Keerthivasan-Venkitajalam Jan 26, 2026
a674d7c
refactor: rename echo/ to echo-interop/ for consistency
Keerthivasan-Venkitajalam Jan 26, 2026
e38cfcd
fix: update Python libp2p requirements for compatibility
Keerthivasan-Venkitajalam Jan 26, 2026
2eb5e57
fix: add libgmp-dev to Python Dockerfile
Keerthivasan-Venkitajalam Jan 26, 2026
2ed3c50
refactor: simplify Python libp2p echo client
Keerthivasan-Venkitajalam Jan 26, 2026
f5f707d
refactor: simplify JS libp2p package dependencies
Keerthivasan-Venkitajalam Jan 26, 2026
a1cbc6e
chore: add package-lock.json for JS libp2p echo server
Keerthivasan-Venkitajalam Jan 26, 2026
1aa664b
refactor: simplify JS libp2p echo server implementation
Keerthivasan-Venkitajalam Jan 26, 2026
a7159e1
feat: add echo interop test orchestration script
Keerthivasan-Venkitajalam Jan 26, 2026
6c0c507
docs: add comprehensive README for echo interop tests
Keerthivasan-Venkitajalam Jan 26, 2026
555ecbc
refactor: rename echo-interop/ to echo/ per maintainer feedback
Keerthivasan-Venkitajalam Jan 27, 2026
c07e4cc
feat: add test matrix generation for echo protocol tests
Keerthivasan-Venkitajalam Jan 27, 2026
0027a9b
feat: add single test execution for echo protocol
Keerthivasan-Venkitajalam Jan 27, 2026
a97c1b7
feat: add HTML dashboard generation for echo test results
Keerthivasan-Venkitajalam Jan 27, 2026
daf3be6
refactor: implement proper test-plans framework pattern in run.sh
Keerthivasan-Venkitajalam Jan 27, 2026
2eba94d
chore: merge upstream master to sync with PR #7
Keerthivasan-Venkitajalam Feb 22, 2026
0668a94
feat(misc): add images.yaml with js/go/rust/python implementations an…
Keerthivasan-Venkitajalam Feb 24, 2026
2e68e40
feat(misc): add main run.sh orchestrator with --protocol-select/--pro…
Keerthivasan-Venkitajalam Feb 24, 2026
1cf1bf5
feat(misc): add generate-tests.sh with 6-dimensional matrix including…
Keerthivasan-Venkitajalam Feb 24, 2026
74e63d4
feat(misc): add run-single-test.sh injecting PROTOCOL env var into di…
Keerthivasan-Venkitajalam Feb 24, 2026
cb9724d
feat(misc): add generate-dashboard.sh with Protocol column in HTML/MD…
Keerthivasan-Venkitajalam Feb 24, 2026
a45e2c5
feat(misc/js): add Dockerfile for js-libp2p v3.x misc test image
Keerthivasan-Venkitajalam Feb 24, 2026
822d57a
feat(misc/js): add package.json with libp2p dependencies for misc int…
Keerthivasan-Venkitajalam Feb 24, 2026
03ec7c7
feat(misc/js): add tsconfig.json extending aegir config
Keerthivasan-Venkitajalam Feb 24, 2026
6273432
feat(misc/js): add .aegir.js with Redis+proxy setup and PROTOCOL env …
Keerthivasan-Venkitajalam Feb 24, 2026
775e79f
feat(misc/js): add src/index.ts entry point
Keerthivasan-Venkitajalam Feb 24, 2026
7ed74c9
feat(misc/js): add test fixture redis-proxy.ts for out-of-band signaling
Keerthivasan-Venkitajalam Feb 24, 2026
691f6f4
feat(misc/js): add get-libp2p.ts fixture with tcp/ws transports, nois…
Keerthivasan-Venkitajalam Feb 24, 2026
8247b3e
feat(misc/js): add dialer.spec.ts with ping/echo/identify test dispat…
Keerthivasan-Venkitajalam Feb 24, 2026
9854986
feat(misc/js): add listener.spec.ts with ping/echo/identify handler d…
Keerthivasan-Venkitajalam Feb 24, 2026
388338d
feat(misc): add README.md describing misc protocol interop suite
Keerthivasan-Venkitajalam Feb 24, 2026
d206833
feat(ci): add run-bash-misc-test composite action with protocol-selec…
Keerthivasan-Venkitajalam Feb 24, 2026
1beb9e6
feat(ci): add misc-interop-pr.yml workflow triggered on PR changes to…
Keerthivasan-Venkitajalam Feb 24, 2026
2d5f8c3
feat(ci): add misc-weekly.yml scheduled workflow (Sundays 2AM UTC) pu…
Keerthivasan-Venkitajalam Feb 24, 2026
32b323c
feat(ci): extend detect-changed-impls to support misc test-type
Keerthivasan-Venkitajalam Feb 24, 2026
7c38b37
feat(ci): integrate misc suite into daily-full-interop.yml as a paral…
Keerthivasan-Venkitajalam Feb 24, 2026
770bad7
feat(hole-punch): add go-v0.45 as relay and peer implementation along…
Keerthivasan-Venkitajalam Feb 24, 2026
439bc72
feat: add js-libp2p Echo protocol interoperability tests
Keerthivasan-Venkitajalam Jan 26, 2026
eb03377
refactor: rename echo/ to echo-interop/ for consistency
Keerthivasan-Venkitajalam Jan 26, 2026
320af6d
fix: update Python libp2p requirements for compatibility
Keerthivasan-Venkitajalam Jan 26, 2026
6886d31
fix: add libgmp-dev to Python Dockerfile
Keerthivasan-Venkitajalam Jan 26, 2026
7dce263
refactor: simplify Python libp2p echo client
Keerthivasan-Venkitajalam Jan 26, 2026
7a27866
refactor: simplify JS libp2p package dependencies
Keerthivasan-Venkitajalam Jan 26, 2026
6a753c4
chore: add package-lock.json for JS libp2p echo server
Keerthivasan-Venkitajalam Jan 26, 2026
3f77584
refactor: simplify JS libp2p echo server implementation
Keerthivasan-Venkitajalam Jan 26, 2026
4fbb159
feat: add echo interop test orchestration script
Keerthivasan-Venkitajalam Jan 26, 2026
af5a6f6
docs: add comprehensive README for echo interop tests
Keerthivasan-Venkitajalam Jan 26, 2026
bff2c48
refactor: rename echo-interop/ to echo/ per maintainer feedback
Keerthivasan-Venkitajalam Jan 27, 2026
c08f603
feat: add test matrix generation for echo protocol tests
Keerthivasan-Venkitajalam Jan 27, 2026
bed6e6d
feat: add single test execution for echo protocol
Keerthivasan-Venkitajalam Jan 27, 2026
7b0fae3
feat: add HTML dashboard generation for echo test results
Keerthivasan-Venkitajalam Jan 27, 2026
6c0ce6c
refactor: implement proper test-plans framework pattern in run.sh
Keerthivasan-Venkitajalam Jan 27, 2026
1f1aa2e
feat(misc): add images.yaml with js/go/rust/python implementations an…
Keerthivasan-Venkitajalam Feb 24, 2026
fbb615f
feat(misc): add main run.sh orchestrator with --protocol-select/--pro…
Keerthivasan-Venkitajalam Feb 24, 2026
8744831
feat(misc): add generate-tests.sh with 6-dimensional matrix including…
Keerthivasan-Venkitajalam Feb 24, 2026
84e7115
feat(misc): add run-single-test.sh injecting PROTOCOL env var into di…
Keerthivasan-Venkitajalam Feb 24, 2026
b3e84db
feat(misc): add generate-dashboard.sh with Protocol column in HTML/MD…
Keerthivasan-Venkitajalam Feb 24, 2026
e3e81c1
feat(misc/js): add Dockerfile for js-libp2p v3.x misc test image
Keerthivasan-Venkitajalam Feb 24, 2026
bc723ba
feat(misc/js): add package.json with libp2p dependencies for misc int…
Keerthivasan-Venkitajalam Feb 24, 2026
419df34
feat(misc/js): add tsconfig.json extending aegir config
Keerthivasan-Venkitajalam Feb 24, 2026
6e68b20
feat(misc/js): add .aegir.js with Redis+proxy setup and PROTOCOL env …
Keerthivasan-Venkitajalam Feb 24, 2026
0aa6d70
feat(misc/js): add src/index.ts entry point
Keerthivasan-Venkitajalam Feb 24, 2026
a965408
feat(misc/js): add test fixture redis-proxy.ts for out-of-band signaling
Keerthivasan-Venkitajalam Feb 24, 2026
4ee819d
feat(misc/js): add get-libp2p.ts fixture with tcp/ws transports, nois…
Keerthivasan-Venkitajalam Feb 24, 2026
afcd4c9
feat(misc/js): add dialer.spec.ts with ping/echo/identify test dispat…
Keerthivasan-Venkitajalam Feb 24, 2026
d5d3bfd
feat(misc/js): add listener.spec.ts with ping/echo/identify handler d…
Keerthivasan-Venkitajalam Feb 24, 2026
fcdc6bd
feat(misc): add README.md describing misc protocol interop suite
Keerthivasan-Venkitajalam Feb 24, 2026
c1802f8
feat(ci): add run-bash-misc-test composite action with protocol-selec…
Keerthivasan-Venkitajalam Feb 24, 2026
d1d7fb9
feat(ci): add misc-interop-pr.yml workflow triggered on PR changes to…
Keerthivasan-Venkitajalam Feb 24, 2026
ccc8dc2
feat(ci): add misc-weekly.yml scheduled workflow (Sundays 2AM UTC) pu…
Keerthivasan-Venkitajalam Feb 24, 2026
39db09a
feat(ci): extend detect-changed-impls to support misc test-type
Keerthivasan-Venkitajalam Feb 24, 2026
fb4eeaa
feat(ci): integrate misc suite into daily-full-interop.yml as a paral…
Keerthivasan-Venkitajalam Feb 24, 2026
26859cd
feat(hole-punch): add go-v0.45 as relay and peer implementation along…
Keerthivasan-Venkitajalam Feb 24, 2026
77141bc
feat(ci): Add S3 upload option and update workflow structure
Keerthivasan-Venkitajalam Feb 25, 2026
f081bc0
feat(ci): Modify daily full interop workflow for Filebase upload
Keerthivasan-Venkitajalam Feb 25, 2026
fd0f1ad
Merge remote-tracking branch 'upstream/master' into echo-protocol-clean
Keerthivasan-Venkitajalam Feb 25, 2026
79b93d4
chore: merge upstream master and resolve daily-full-interop.yml confl…
Keerthivasan-Venkitajalam Feb 25, 2026
8c39966
fix(ci): reduce workflow_dispatch inputs to 25 and fix duplicate uplo…
Keerthivasan-Venkitajalam Feb 25, 2026
730f7e7
feat(perf/js): rewrite index.js to use env vars and Redis coordination
Keerthivasan-Venkitajalam Feb 25, 2026
c44b483
feat(hole-punch/js): add package.json for js-libp2p v3.x hole-punch i…
Keerthivasan-Venkitajalam Feb 25, 2026
f326a42
feat(hole-punch/js): implement relay/dialer/listener in index.js
Keerthivasan-Venkitajalam Feb 25, 2026
44d8d81
feat(hole-punch/js): add Dockerfile.relay for js-libp2p v3.x relay image
Keerthivasan-Venkitajalam Feb 25, 2026
c251494
feat(hole-punch/js): add Dockerfile.peer for js-libp2p v3.x peer image
Keerthivasan-Venkitajalam Feb 25, 2026
356a47d
feat(hole-punch): add js-v3.x to relays and implementations in images…
Keerthivasan-Venkitajalam Feb 25, 2026
64458af
docs(transport): add Related Test Suites section to README
Keerthivasan-Venkitajalam Feb 25, 2026
2f4725a
docs: add misc echo/identify/ping minimal requirements
Keerthivasan-Venkitajalam Feb 25, 2026
238b486
fix: add misc to get_image_name() test type validator
Keerthivasan-Venkitajalam Feb 26, 2026
b861702
fix: add misc case to generate_inputs_yaml() for PROTOCOL_SELECT/IGNORE
Keerthivasan-Venkitajalam Feb 26, 2026
fd7d95e
fix: add misc display name to snapshot README generator
Keerthivasan-Venkitajalam Feb 26, 2026
a243a09
fix: give misc-network its own subnet (10.20.0.0/16)
Keerthivasan-Venkitajalam Feb 26, 2026
1d78f04
fix: add misc section to merge-interop-results.sh (new 4th dir arg)
Keerthivasan-Venkitajalam Feb 26, 2026
02c5bc7
fix(ci): wire misc results into merge step in daily-full-interop.yml
Keerthivasan-Venkitajalam Feb 26, 2026
b264655
fix(docs): correct env var name MISC_PROTOCOL -> PROTOCOL in misc tes…
Keerthivasan-Venkitajalam Feb 26, 2026
b57aff7
chore: update stale comments to include misc in all lib/*.sh files
Keerthivasan-Venkitajalam Feb 26, 2026
aa10bd5
Merge branch 'master' of https://github.com/libp2p/unified-testing in…
Keerthivasan-Venkitajalam Feb 26, 2026
daa531d
Merge branch 'master' of https://github.com/libp2p/unified-testing in…
Keerthivasan-Venkitajalam Feb 27, 2026
5af45d6
fix: resolve misc generate-tests.sh set -e bug, perf Docker build, mi…
Keerthivasan-Venkitajalam Feb 27, 2026
04bb959
Merge upstream/master into echo-protocol-clean
Keerthivasan-Venkitajalam Mar 7, 2026
41d03c7
Fix workflow: reduce inputs to 25 to meet GitHub limit
Keerthivasan-Venkitajalam Mar 7, 2026
1e7dc7b
Fix workflow: reduce inputs to comply with GitHub's 25-input limit
Keerthivasan-Venkitajalam Mar 7, 2026
617a4db
Fix misc protocol CI failures
Keerthivasan-Venkitajalam Mar 7, 2026
4973fcf
fix(misc): update js-v3.x dependencies for libp2p compatibility
Keerthivasan-Venkitajalam Mar 13, 2026
d46a834
feat(misc): enhance Docker build configuration for js-v3.x
Keerthivasan-Venkitajalam Mar 13, 2026
68d7db3
fix(misc): improve aegir configuration for Docker environment
Keerthivasan-Venkitajalam Mar 13, 2026
a51c33d
feat(misc): add TypeScript declarations and build configuration
Keerthivasan-Venkitajalam Mar 13, 2026
28cac5d
fix(misc): update libp2p type definitions and service configuration
Keerthivasan-Venkitajalam Mar 13, 2026
9a00539
fix(misc): implement echo protocol with correct libp2p v3 stream API
Keerthivasan-Venkitajalam Mar 13, 2026
086061a
fix(misc): resolve test matrix generation arithmetic error
Keerthivasan-Venkitajalam Mar 13, 2026
614d6db
fix(misc): resolve test result duplication in test framework
Keerthivasan-Venkitajalam Mar 13, 2026
9a824b5
fix(misc): add legacy environment variable support for cross-implemen…
Keerthivasan-Venkitajalam Mar 13, 2026
e18586d
feat(misc): add comprehensive test documentation and validation tools
Keerthivasan-Venkitajalam Mar 13, 2026
80baa6f
Merge branch 'libp2p:master' into echo-protocol-clean
Keerthivasan-Venkitajalam Mar 13, 2026
64a08b4
Merge branch 'libp2p:master' into echo-protocol-clean
Keerthivasan-Venkitajalam Mar 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions .github/actions/detect-changed-impls/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ description: "Detect which implementations/relays/routers have changed in images

inputs:
test-type:
description: "Type of test (transport, hole-punch, or perf)"
description: "Type of test (transport, hole-punch, perf, or misc)"
required: true
base-ref:
description: "Base branch to compare against"
Expand Down Expand Up @@ -55,8 +55,11 @@ runs:
elif [ "$TEST_TYPE" = "perf" ]; then
IMPLS_FILE="perf/images.yaml"
IMAGES_DIR="perf/images"
elif [ "$TEST_TYPE" = "misc" ]; then
IMPLS_FILE="misc/images.yaml"
IMAGES_DIR="misc/images"
else
echo "Error: Invalid test-type. Must be 'transport', 'hole-punch', or 'perf'"
echo "Error: Invalid test-type. Must be 'transport', 'hole-punch', 'perf', or 'misc'"
exit 1
fi

Expand Down Expand Up @@ -201,6 +204,8 @@ runs:
FULL_SOURCE_PATH="hole-punch/$SOURCE_PATH"
elif [ "$TEST_TYPE" = "perf" ]; then
FULL_SOURCE_PATH="perf/$SOURCE_PATH"
elif [ "$TEST_TYPE" = "misc" ]; then
FULL_SOURCE_PATH="misc/$SOURCE_PATH"
fi

# Check if changed file is within this source path
Expand Down
156 changes: 156 additions & 0 deletions .github/actions/run-bash-misc-test/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,156 @@
name: "Run Misc Protocol Interop Tests (Bash)"
description: "Run the miscellaneous protocol interoperability test suite (ping, echo, identify) using bash scripts"

inputs:
test-select:
description: "Select tests (pipe-separated substrings)"
required: false
default: ""
test-ignore:
description: "Ignore tests (pipe-separated substrings)"
required: false
default: ""
protocol-select:
description: "Select protocols to test (pipe-separated, e.g. 'ping|echo')"
required: false
default: ""
protocol-ignore:
description: "Ignore protocols (pipe-separated, e.g. '~failing')"
required: false
default: ""
cache-dir:
description: "Local directory to use for build cache"
required: false
default: "/srv/cache"
snapshot:
description: "Create test pass snapshot after completion"
required: false
default: "false"
force-matrix-rebuild:
description: "Force test matrix regeneration (bypass cache)"
required: false
default: "false"
force-image-rebuild:
description: "Force Docker image rebuilds (bypass cache)"
required: false
default: "false"
debug:
description: "Enable debug mode (sets DEBUG=true in test containers)"
required: false
default: "false"

runs:
using: "composite"
steps:
- name: Install docker-compose
shell: bash
run: |
mkdir -p $HOME/.docker/cli-plugins
wget -q -O- https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-linux-x86_64 > $HOME/.docker/cli-plugins/docker-compose
chmod +x $HOME/.docker/cli-plugins/docker-compose
docker compose version

- name: Run misc protocol interop tests
shell: bash
working-directory: misc
run: |
set -uo pipefail

# Capture exit code but don't fail immediately
EXIT_CODE=0

SNAPSHOT_FLAG=""
if [ "${{ inputs.snapshot }}" = "true" ]; then
SNAPSHOT_FLAG="--snapshot"
fi

FORCE_MATRIX_FLAG=""
if [ "${{ inputs.force-matrix-rebuild }}" = "true" ]; then
FORCE_MATRIX_FLAG="--force-matrix-rebuild"
fi

FORCE_IMAGE_FLAG=""
if [ "${{ inputs.force-image-rebuild }}" = "true" ]; then
FORCE_IMAGE_FLAG="--force-image-rebuild"
fi

DEBUG_FLAG=""
if [ "${{ inputs.debug }}" = "true" ]; then
DEBUG_FLAG="--debug"
fi

PROTOCOL_SELECT_FLAG=""
if [ -n "${{ inputs.protocol-select }}" ]; then
PROTOCOL_SELECT_FLAG="--protocol-select '${{ inputs.protocol-select }}'"
fi

PROTOCOL_IGNORE_FLAG=""
if [ -n "${{ inputs.protocol-ignore }}" ]; then
PROTOCOL_IGNORE_FLAG="--protocol-ignore '${{ inputs.protocol-ignore }}'"
fi

eval ./run.sh \
--test-select "'${{ inputs.test-select }}'" \
--test-ignore "'${{ inputs.test-ignore }}'" \
--cache-dir "'${{ inputs.cache-dir }}'" \
$SNAPSHOT_FLAG \
$FORCE_MATRIX_FLAG \
$FORCE_IMAGE_FLAG \
$DEBUG_FLAG \
$PROTOCOL_SELECT_FLAG \
$PROTOCOL_IGNORE_FLAG \
-y || EXIT_CODE=$?

# Save exit code for later
echo "$EXIT_CODE" > /tmp/misc-test-exit-code.txt

- name: Find test pass directory
if: always()
id: find-test-pass
shell: bash
run: |
# Find the most recent test pass directory
TEST_PASS_DIR=$(ls -td ${{ inputs.cache-dir }}/test-run/misc-* 2>/dev/null | grep -v '\.zip$' | head -1 || echo "")

if [ -z "$TEST_PASS_DIR" ]; then
echo "Error: Could not find test pass directory"
exit 1
fi

TEST_PASS_NAME=$(basename "$TEST_PASS_DIR")
echo "test-pass-dir=$TEST_PASS_DIR" >> $GITHUB_OUTPUT
echo "test-pass-name=$TEST_PASS_NAME" >> $GITHUB_OUTPUT
echo "→ Test pass: $TEST_PASS_NAME"

- name: Upload test results
if: always()
uses: actions/upload-artifact@v4
with:
name: misc-test-results-${{ steps.find-test-pass.outputs.test-pass-name }}
path: |
${{ steps.find-test-pass.outputs.test-pass-dir }}/results.yaml
${{ steps.find-test-pass.outputs.test-pass-dir }}/results.md
${{ steps.find-test-pass.outputs.test-pass-dir }}/results.html
${{ steps.find-test-pass.outputs.test-pass-dir }}/LATEST_TEST_RESULTS.md
if-no-files-found: warn

- name: Upload snapshot archive
if: always() && inputs.snapshot == 'true'
uses: actions/upload-artifact@v4
with:
name: misc-snapshot-${{ steps.find-test-pass.outputs.test-pass-name }}
path: |
${{ steps.find-test-pass.outputs.test-pass-dir }}
if-no-files-found: error

- name: Fail if tests failed
if: always()
shell: bash
run: |
if [ -f /tmp/misc-test-exit-code.txt ]; then
EXIT_CODE=$(cat /tmp/misc-test-exit-code.txt)
if [ "$EXIT_CODE" -ne 0 ]; then
echo "Tests failed with exit code $EXIT_CODE"
exit $EXIT_CODE
fi
fi
Loading