Skip to content

Commit 19695c7

Browse files
Merge branch 'master' into migrate/perf_interop
2 parents f6304e5 + b7d7fc3 commit 19695c7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+2124
-17394
lines changed

.github/actions/run-bash-hole-punch-test/action.yml

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ inputs:
2626
description: "Ignore routers (pipe-separated substrings)"
2727
required: false
2828
default: ""
29+
transport-ignore:
30+
description: "Ignore transports (pipe-separated patterns). Default excludes ws and webrtc-direct which are incompatible with DCUtR hole-punching."
31+
required: false
32+
default: "ws|webrtc-direct"
2933
cache-dir:
3034
description: "Local directory to use for build cache"
3135
required: false
@@ -42,6 +46,10 @@ inputs:
4246
description: "Force Docker image rebuilds (bypass cache)"
4347
required: false
4448
default: "false"
49+
export-docker-images:
50+
description: "Export Docker images when creating snapshot"
51+
required: false
52+
default: "false"
4553
debug:
4654
description: "Enable debug mode (sets DEBUG=true in test containers)"
4755
required: false
@@ -50,13 +58,9 @@ inputs:
5058
runs:
5159
using: "composite"
5260
steps:
53-
- name: Install docker-compose
61+
- name: Verify docker compose
5462
shell: bash
55-
run: |
56-
mkdir -p $HOME/.docker/cli-plugins
57-
wget -q -O- https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-linux-x86_64 > $HOME/.docker/cli-plugins/docker-compose
58-
chmod +x $HOME/.docker/cli-plugins/docker-compose
59-
docker compose version
63+
run: docker compose version
6064

6165
- name: Run hole punch interop tests
6266
shell: bash
@@ -82,6 +86,11 @@ runs:
8286
FORCE_IMAGE_FLAG="--force-image-rebuild"
8387
fi
8488
89+
EXPORT_DOCKER_FLAG=""
90+
if [ "${{ inputs.export-docker-images }}" = "true" ]; then
91+
EXPORT_DOCKER_FLAG="--export-docker-images"
92+
fi
93+
8594
DEBUG_FLAG=""
8695
if [ "${{ inputs.debug }}" = "true" ]; then
8796
DEBUG_FLAG="--debug"
@@ -94,8 +103,10 @@ runs:
94103
--relay-ignore '${{ inputs.relay-ignore }}' \
95104
--router-select '${{ inputs.router-select }}' \
96105
--router-ignore '${{ inputs.router-ignore }}' \
106+
--transport-ignore '${{ inputs.transport-ignore }}' \
97107
--cache-dir '${{ inputs.cache-dir }}' \
98108
$SNAPSHOT_FLAG \
109+
$EXPORT_DOCKER_FLAG \
99110
$FORCE_MATRIX_FLAG \
100111
$FORCE_IMAGE_FLAG \
101112
$DEBUG_FLAG \

.github/actions/run-bash-perf-test/action.yml

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ inputs:
5454
description: "Force Docker image rebuilds (bypass cache)"
5555
required: false
5656
default: "false"
57+
export-docker-images:
58+
description: "Export Docker images when creating snapshot"
59+
required: false
60+
default: "false"
5761
debug:
5862
description: "Enable debug mode (sets DEBUG=true in test containers)"
5963
required: false
@@ -62,13 +66,9 @@ inputs:
6266
runs:
6367
using: "composite"
6468
steps:
65-
- name: Install docker-compose
69+
- name: Verify docker compose
6670
shell: bash
67-
run: |
68-
mkdir -p $HOME/.docker/cli-plugins
69-
wget -q -O- https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-linux-x86_64 > $HOME/.docker/cli-plugins/docker-compose
70-
chmod +x $HOME/.docker/cli-plugins/docker-compose
71-
docker compose version
71+
run: docker compose version
7272

7373
- name: Run perf benchmarks
7474
shell: bash
@@ -94,6 +94,11 @@ runs:
9494
FORCE_IMAGE_FLAG="--force-image-rebuild"
9595
fi
9696
97+
EXPORT_DOCKER_FLAG=""
98+
if [ "${{ inputs.export-docker-images }}" = "true" ]; then
99+
EXPORT_DOCKER_FLAG="--export-docker-images"
100+
fi
101+
97102
DEBUG_FLAG=""
98103
if [ "${{ inputs.debug }}" = "true" ]; then
99104
DEBUG_FLAG="--debug"
@@ -125,7 +130,7 @@ runs:
125130
fi
126131
127132
./run.sh \
128-
--test-select '${{ inputs.test-select }}' \
133+
--impl-select '${{ inputs.test-select }}' \
129134
--test-ignore '${{ inputs.test-ignore }}' \
130135
--baseline-select '${{ inputs.baseline-select }}' \
131136
--baseline-ignore '${{ inputs.baseline-ignore }}' \
@@ -136,6 +141,7 @@ runs:
136141
$DURATION_FLAG \
137142
$LATENCY_ITERATIONS_FLAG \
138143
$SNAPSHOT_FLAG \
144+
$EXPORT_DOCKER_FLAG \
139145
$FORCE_MATRIX_FLAG \
140146
$FORCE_IMAGE_FLAG \
141147
$DEBUG_FLAG \
@@ -174,16 +180,6 @@ runs:
174180
${{ steps.find-test-pass.outputs.test-pass-dir }}/LATEST_TEST_RESULTS.md
175181
if-no-files-found: warn
176182

177-
- name: Upload box plot images
178-
if: always()
179-
uses: actions/upload-artifact@v4
180-
with:
181-
name: perf-test-box-plot-${{ steps.find-test-pass.outputs.test-pass-name }}
182-
path: |
183-
${{ steps.find-test-pass.outputs.test-pass-dir }}/boxplot-*.png
184-
if-no-files-found: ignore
185-
compression-level: 0
186-
187183
- name: Upload snapshot archive
188184
if: always() && inputs.snapshot == 'true'
189185
uses: actions/upload-artifact@v4

.github/actions/run-bash-transport-test/action.yml

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ inputs:
2626
description: "Force Docker image rebuilds (bypass cache)"
2727
required: false
2828
default: "false"
29+
export-docker-images:
30+
description: "Export Docker images when creating snapshot"
31+
required: false
32+
default: "false"
2933
debug:
3034
description: "Enable debug mode (sets DEBUG=true in test containers)"
3135
required: false
@@ -34,13 +38,9 @@ inputs:
3438
runs:
3539
using: "composite"
3640
steps:
37-
- name: Install docker-compose
41+
- name: Verify docker compose
3842
shell: bash
39-
run: |
40-
mkdir -p $HOME/.docker/cli-plugins
41-
wget -q -O- https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-linux-x86_64 > $HOME/.docker/cli-plugins/docker-compose
42-
chmod +x $HOME/.docker/cli-plugins/docker-compose
43-
docker compose version
43+
run: docker compose version
4444

4545
- name: Run transport interop tests
4646
shell: bash
@@ -66,6 +66,11 @@ runs:
6666
FORCE_IMAGE_FLAG="--force-image-rebuild"
6767
fi
6868
69+
EXPORT_DOCKER_FLAG=""
70+
if [ "${{ inputs.export-docker-images }}" = "true" ]; then
71+
EXPORT_DOCKER_FLAG="--export-docker-images"
72+
fi
73+
6974
DEBUG_FLAG=""
7075
if [ "${{ inputs.debug }}" = "true" ]; then
7176
DEBUG_FLAG="--debug"
@@ -76,6 +81,7 @@ runs:
7681
--test-ignore '${{ inputs.test-ignore }}' \
7782
--cache-dir '${{ inputs.cache-dir }}' \
7883
$SNAPSHOT_FLAG \
84+
$EXPORT_DOCKER_FLAG \
7985
$FORCE_MATRIX_FLAG \
8086
$FORCE_IMAGE_FLAG \
8187
$DEBUG_FLAG \

.github/actions/run-transport-interop-test/action.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ inputs:
1010
required: false
1111
default: ""
1212
test-root:
13-
description: "Path to the transport-interop folder"
13+
description: "Path to the transport folder"
1414
required: true
1515
update-readme:
1616
description: "Whether to update the README.md file with the new dashboard"
@@ -69,11 +69,11 @@ runs:
6969
echo "PUSH_CACHE=true" >> $GITHUB_ENV
7070
7171
# This depends on where this file is within this repository. This walks up
72-
# from here to the transport-interop folder
72+
# from here to the transport folder
7373
- name: Find working directory
7474
shell: bash
7575
run: |
76-
WORK_DIR=$(realpath "$GITHUB_ACTION_PATH/../../../transport-interop")
76+
WORK_DIR=$(realpath "$GITHUB_ACTION_PATH/../../../transport")
7777
echo "WORK_DIR=$WORK_DIR" >> $GITHUB_OUTPUT
7878
id: find-workdir
7979

.github/workflows/daily-full-interop.yml

Lines changed: 42 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,11 @@ on:
6262
required: false
6363
default: '~failing'
6464
type: string
65+
hole-punch-transport-ignore:
66+
description: '[Hole-punch] Ignore transports (pipe-separated patterns)'
67+
required: false
68+
default: 'ws|webrtc-direct'
69+
type: string
6570
hole-punch-force-matrix-rebuild:
6671
description: '[Hole-punch] Force test matrix regeneration'
6772
required: false
@@ -124,6 +129,11 @@ on:
124129
required: false
125130
default: false
126131
type: boolean
132+
export-docker-images:
133+
description: 'Export Docker images in snapshot (enabled by default on schedule, disabled on manual)'
134+
required: false
135+
default: false
136+
type: boolean
127137

128138
jobs:
129139
resolve-transport-parameters:
@@ -195,6 +205,7 @@ jobs:
195205
relay-ignore: ${{ steps.resolve.outputs.relay-ignore }}
196206
router-select: ${{ steps.resolve.outputs.router-select }}
197207
router-ignore: ${{ steps.resolve.outputs.router-ignore }}
208+
transport-ignore: ${{ steps.resolve.outputs.transport-ignore }}
198209
force-matrix-rebuild: ${{ steps.resolve.outputs.force-matrix-rebuild }}
199210
force-image-rebuild: ${{ steps.resolve.outputs.force-image-rebuild }}
200211
debug: ${{ steps.resolve.outputs.debug }}
@@ -217,6 +228,7 @@ jobs:
217228
echo "relay-ignore=${{ github.event.inputs.hole-punch-relay-ignore }}" >> $GITHUB_OUTPUT
218229
echo "router-select=${{ github.event.inputs.hole-punch-router-select }}" >> $GITHUB_OUTPUT
219230
echo "router-ignore=${{ github.event.inputs.hole-punch-router-ignore }}" >> $GITHUB_OUTPUT
231+
echo "transport-ignore=${{ github.event.inputs.hole-punch-transport-ignore }}" >> $GITHUB_OUTPUT
220232
echo "force-matrix-rebuild=${{ github.event.inputs.hole-punch-force-matrix-rebuild }}" >> $GITHUB_OUTPUT
221233
echo "force-image-rebuild=${{ github.event.inputs.hole-punch-force-image-rebuild }}" >> $GITHUB_OUTPUT
222234
echo "debug=${{ github.event.inputs.hole-punch-debug }}" >> $GITHUB_OUTPUT
@@ -233,6 +245,7 @@ jobs:
233245
echo "relay-ignore=" >> $GITHUB_OUTPUT
234246
echo "router-select=" >> $GITHUB_OUTPUT
235247
echo "router-ignore=" >> $GITHUB_OUTPUT
248+
echo "transport-ignore=ws|webrtc-direct" >> $GITHUB_OUTPUT
236249
echo "force-image-rebuild=false" >> $GITHUB_OUTPUT
237250
echo "debug=false" >> $GITHUB_OUTPUT
238251
@@ -331,6 +344,7 @@ jobs:
331344
test-ignore: '${{ needs.resolve-transport-parameters.outputs.test-ignore }}'
332345
cache-dir: /srv/cache
333346
snapshot: true
347+
export-docker-images: ${{ github.event_name != 'workflow_dispatch' || github.event.inputs.export-docker-images == 'true' }}
334348
force-matrix-rebuild: ${{ needs.resolve-transport-parameters.outputs.force-matrix-rebuild }}
335349
force-image-rebuild: ${{ needs.resolve-transport-parameters.outputs.force-image-rebuild }}
336350
debug: ${{ needs.resolve-transport-parameters.outputs.debug }}
@@ -353,8 +367,10 @@ jobs:
353367
relay-ignore: '${{ needs.resolve-hole-punch-parameters.outputs.relay-ignore }}'
354368
router-select: '${{ needs.resolve-hole-punch-parameters.outputs.router-select }}'
355369
router-ignore: '${{ needs.resolve-hole-punch-parameters.outputs.router-ignore }}'
370+
transport-ignore: '${{ needs.resolve-hole-punch-parameters.outputs.transport-ignore }}'
356371
cache-dir: /srv/cache
357372
snapshot: true
373+
export-docker-images: ${{ github.event_name != 'workflow_dispatch' || github.event.inputs.export-docker-images == 'true' }}
358374
force-matrix-rebuild: ${{ needs.resolve-hole-punch-parameters.outputs.force-matrix-rebuild }}
359375
force-image-rebuild: ${{ needs.resolve-hole-punch-parameters.outputs.force-image-rebuild }}
360376
debug: ${{ needs.resolve-hole-punch-parameters.outputs.debug }}
@@ -378,6 +394,7 @@ jobs:
378394
iterations: '${{ needs.resolve-perf-parameters.outputs.iterations }}'
379395
cache-dir: /srv/cache
380396
snapshot: true
397+
export-docker-images: ${{ github.event_name != 'workflow_dispatch' || github.event.inputs.export-docker-images == 'true' }}
381398
force-matrix-rebuild: ${{ needs.resolve-perf-parameters.outputs.force-matrix-rebuild }}
382399
force-image-rebuild: ${{ needs.resolve-perf-parameters.outputs.force-image-rebuild }}
383400
debug: ${{ needs.resolve-perf-parameters.outputs.debug }}
@@ -396,6 +413,7 @@ jobs:
396413

397414
- name: Download transport test results
398415
if: needs.run-transport-full.result != 'skipped'
416+
continue-on-error: true
399417
uses: actions/download-artifact@v4
400418
with:
401419
pattern: transport-test-results-*
@@ -404,6 +422,7 @@ jobs:
404422

405423
- name: Download hole-punch test results
406424
if: needs.run-hole-punch-full.result != 'skipped'
425+
continue-on-error: true
407426
uses: actions/download-artifact@v4
408427
with:
409428
pattern: hole-punch-test-results-*
@@ -412,6 +431,7 @@ jobs:
412431

413432
- name: Download perf test results
414433
if: needs.run-perf-full.result != 'skipped'
434+
continue-on-error: true
415435
uses: actions/download-artifact@v4
416436
with:
417437
pattern: perf-test-results-*
@@ -449,7 +469,6 @@ jobs:
449469
yq eval '.testResults[0]' "$PERF_YAML" 2>/dev/null || echo "No test results found"
450470
fi
451471
452-
453472
- name: Find result directories and prepare merge
454473
id: find-results
455474
shell: bash
@@ -535,31 +554,34 @@ jobs:
535554
echo "=== Generated YAML content preview ==="
536555
head -100 /tmp/merged-results/daily-full-interop.yml
537556
538-
- name: Install AWS CLI
557+
- name: Verify AWS CLI
539558
if: github.event_name != 'workflow_dispatch' || inputs.upload-results
540559
shell: bash
560+
run: aws --version
561+
562+
- name: Configure AWS credentials for Filebase
563+
if: github.event_name != 'workflow_dispatch' || inputs.upload-results
564+
env:
565+
AWS_ACCESS_KEY_ID: ${{ secrets.FILEBASE_ACCESS_KEY }}
566+
AWS_SECRET_ACCESS_KEY: ${{ secrets.FILEBASE_SECRET_KEY }}
567+
AWS_DEFAULT_REGION: us-east-1 # Filebase ignores region, but required
541568
run: |
542-
if ! command -v aws &> /dev/null; then
543-
echo "Installing AWS CLI..."
544-
curl -fsSL "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o /tmp/awscliv2.zip
545-
unzip -q /tmp/awscliv2.zip -d /tmp/aws-install
546-
/tmp/aws-install/aws/install --bin-dir /usr/local/bin --install-dir /usr/local/aws-cli --update
547-
rm -rf /tmp/awscliv2.zip /tmp/aws-install
548-
fi
549-
aws --version
569+
echo "AWS credentials exported as env vars"
570+
aws configure set aws_access_key_id $AWS_ACCESS_KEY_ID
571+
aws configure set aws_secret_access_key $AWS_SECRET_ACCESS_KEY
572+
aws configure set default.region $AWS_DEFAULT_REGION
573+
aws configure list
550574
551575
- name: Upload results to Filebase
552576
if: github.event_name != 'workflow_dispatch' || inputs.upload-results
553577
shell: bash
554578
env:
555-
AWS_ACCESS_KEY_ID: ${{ secrets.FILEBASE_ACCESS_KEY_ID }}
556-
AWS_SECRET_ACCESS_KEY: ${{ secrets.FILEBASE_SECRET_ACCESS_KEY }}
557-
AWS_DEFAULT_REGION: us-east-1
579+
AWS_EC2_METADATA_DISABLED: true
558580
run: |
559581
set -euo pipefail
560582
561583
RESULTS_FILE="/tmp/merged-results/daily-full-interop.yml"
562-
BUCKET="test-plans-results"
584+
BUCKET="results"
563585
ENDPOINT="https://s3.filebase.com"
564586
DATE_STAMP=$(date -u +"%Y-%m-%d")
565587
@@ -575,14 +597,16 @@ jobs:
575597
576598
# Upload as date-stamped archive
577599
echo "-> Uploading history/${DATE_STAMP}.yaml..."
578-
aws s3 cp "$RESULTS_FILE" "s3://${BUCKET}/history/${DATE_STAMP}.yaml" \
579-
--endpoint-url "$ENDPOINT" \
600+
aws --endpoint "$ENDPOINT" \
601+
s3 cp "$RESULTS_FILE" \
602+
"s3://${BUCKET}/history/${DATE_STAMP}.yaml" \
580603
--content-type "application/x-yaml"
581604
582605
# Upload as latest results (overwrite)
583606
echo "-> Uploading results.yaml (latest)..."
584-
aws s3 cp "$RESULTS_FILE" "s3://${BUCKET}/results.yaml" \
585-
--endpoint-url "$ENDPOINT" \
607+
aws --endpoint "$ENDPOINT" \
608+
s3 cp "$RESULTS_FILE" \
609+
"s3://${BUCKET}/results.yaml" \
586610
--content-type "application/x-yaml"
587611
588612
echo "Upload complete."

0 commit comments

Comments
 (0)