Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
6e06d2a
feat(load): Add load metrics
rodrigombsoares Jul 6, 2026
c9cfe03
fix(lint)
rodrigombsoares Jul 7, 2026
6fc5b60
Merge branch 'main' into pr1-load-metrics
rodrigombsoares Jul 7, 2026
0ea19d2
fix(e2e): Fix tests holding minting
rodrigombsoares Jul 7, 2026
aca755c
Merge branch 'main' into pr1-load-metrics
rodrigombsoares Jul 7, 2026
19f7888
feat(e2e): Token Lane Refactor
rodrigombsoares Jul 7, 2026
a0b7f76
fix(tests): tests token + lint fix
rodrigombsoares Jul 7, 2026
6f70df2
try fixing tokens holdings issue
rodrigombsoares Jul 8, 2026
29e7537
raise canton transfer amount
rodrigombsoares Jul 8, 2026
1b3d61d
fix setupSend first hold picking
rodrigombsoares Jul 8, 2026
4e05025
fix lint + unit tests
rodrigombsoares Jul 8, 2026
648755f
Merge branch 'main' into pr2-token-lane
rodrigombsoares Jul 8, 2026
271d353
fix load tests CI
rodrigombsoares Jul 8, 2026
af323c1
feat(tests): env agnostic boostrapper for e2e/load
rodrigombsoares Jul 8, 2026
d760ee4
fix(load): remove unecessary variable override for devenv
rodrigombsoares Jul 8, 2026
0a95f44
fix(load): add buffer to messages estimation
rodrigombsoares Jul 8, 2026
b47f527
feat(load): Connect load tests to prod-testnet
rodrigombsoares Jul 8, 2026
c1774c8
fix(load): prod-testnet needs v1_0_0 bindings
rodrigombsoares Jul 8, 2026
8dbabfc
fix(load): fix prod-testnet receiver
rodrigombsoares Jul 8, 2026
220fa1a
fix lint issues
rodrigombsoares Jul 8, 2026
709048a
feat(load): enable load connectivity to proxy - tailscale
rodrigombsoares Jul 8, 2026
9c58046
fix(router): use v1_0_0 instead of ledger for router too
rodrigombsoares Jul 8, 2026
12de4ae
fix router
rodrigombsoares Jul 8, 2026
d2998a9
feat(load): pre-approve EVM tokens before load tests, not before ever…
rodrigombsoares Jul 9, 2026
180e85d
refactor(load): move bindings affected code to a single layer
rodrigombsoares Jul 9, 2026
59687a5
fix(load): remove unecessary action params | use better defaults
rodrigombsoares Jul 9, 2026
968e3e2
fix action
rodrigombsoares Jul 9, 2026
3ff18b0
Merge branch 'main' into pr4-prod-testnet
rodrigombsoares Jul 15, 2026
1a5bdb4
Potential fix for pull request finding 'CodeQL / Code injection'
rodrigombsoares Jul 15, 2026
8a75e95
Merge branch 'main' into pr4-prod-testnet
rodrigombsoares Jul 16, 2026
11f349c
fix merge issue
rodrigombsoares Jul 16, 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
62 changes: 56 additions & 6 deletions .github/actions/ccip-load-test/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ inputs:
message_rate:
description: "CANTON_LOAD_MESSAGE_RATE"
required: false
default: "1/45s"
default: "1/10s"
load_duration:
description: "CANTON_LOAD_DURATION"
required: false
Expand All @@ -33,10 +33,6 @@ inputs:
description: "Checkout path for chainlink-canton (`.` for PR root, `chainlink-canton` for nested devenv checkout)"
required: false
default: .
canton_ref:
description: "chainlink-canton git ref for devenv setup (empty = workflow SHA)"
required: false
default: ""
skip_exec_confirm:
description: "CANTON_LOAD_SKIP_EXEC_CONFIRM"
required: false
Expand All @@ -49,10 +45,26 @@ inputs:
description: "CANTON_PARTY_ID"
required: false
default: "u_d53a15c42af6::1220c250c23c55120f7c758bccc5cbc739629015ab921594e1c29656981f985bffa7"
user_id:
description: "CANTON_USER_ID"
required: false
default: "0oau1l03xrG9NQw9z5d7"
grpc_url:
description: "CANTON_GRPC_URL"
required: false
default: "testnet.cv1.bcy-v.metalhosts.com:443"
router_instance_id:
description: "CANTON_ROUTER_INSTANCE_ID (prod-testnet)"
required: false
default: "gha-load-router"
sender_instance_id:
description: "CANTON_SENDER_INSTANCE_ID (prod-testnet)"
required: false
default: "gha-load-sender"
receiver_instance_id:
description: "CANTON_RECEIVER_INSTANCE_ID (prod-testnet)"
required: false
default: "gha-load-receiver"
CANTON_OKTA_AUTHORIZER_TESTNET:
description: "GitHub secret CANTON_OKTA_AUTHORIZER_TESTNET"
required: false
Expand All @@ -65,6 +77,12 @@ inputs:
CCIP_PROD_TESTNET_PRIVATE_KEY:
description: "GitHub secret CCIP_PROD_TESTNET_PRIVATE_KEY"
required: false
TS_OAUTH_CLIENT_ID_CANTON:
description: "GitHub secret TS_OAUTH_CLIENT_ID_CANTON (prod-testnet Tailscale)"
required: false
TS_AUDIENCE_CANTON:
description: "GitHub secret TS_AUDIENCE_CANTON (prod-testnet Tailscale)"
required: false
ccv-iam-role:
description: "AWS IAM role for CCV ECR authentication (devenv only)"
required: false
Expand All @@ -78,6 +96,23 @@ inputs:
runs:
using: composite
steps:
- name: Setup CCIP devenv
if: inputs.ccip_env == 'devenv'
uses: ./.github/actions/setup-ccip-devenv
with:
canton-path: ${{ inputs.canton_path }}
ccv-iam-role: ${{ inputs.ccv-iam-role }}
jd-registry: ${{ inputs.jd-registry }}
jd-image: ${{ inputs.jd-image }}

- name: Connect to Tailscale (prod-testnet)
if: inputs.ccip_env == 'prod-testnet'
uses: tailscale/github-action@53acf823325fe9ca47f4cdaa951f90b4b0de5bb9 # v4.1.1
with:
oauth-client-id: ${{ inputs.TS_OAUTH_CLIENT_ID_CANTON }}
audience: ${{ inputs.TS_AUDIENCE_CANTON }}
tags: tag:bcy-validators-gha

- name: Install Go (prod-testnet)
if: inputs.ccip_env == 'prod-testnet'
uses: actions/setup-go@v6
Expand All @@ -99,6 +134,7 @@ runs:
env:
CANTON_LOAD_MESSAGE_RATE: ${{ inputs.message_rate }}
CANTON_LOAD_DURATION: ${{ inputs.load_duration }}
CANTON_LOAD_SKIP_EXEC_CONFIRM: ${{ inputs.skip_exec_confirm }}
run: |
case "${{ inputs.direction }}" in
canton2evm) TEST_RUN='^TestCanton2EVM_Load$' ;;
Expand All @@ -121,12 +157,17 @@ runs:
CANTON_CLIENT_ID: ${{ inputs.CANTON_OKTA_CLIENT_ID_TESTNET }}
CANTON_CLIENT_SECRET: ${{ inputs.CANTON_OKTA_CLIENT_SECRET_TESTNET }}
CANTON_PARTY_ID: ${{ inputs.party_id }}
CANTON_USER_ID: ${{ inputs.user_id }}
CANTON_GRPC_URL: ${{ inputs.grpc_url }}
CANTON_ROUTER_INSTANCE_ID: ${{ inputs.router_instance_id }}
CANTON_SENDER_INSTANCE_ID: ${{ inputs.sender_instance_id }}
CANTON_RECEIVER_INSTANCE_ID: ${{ inputs.receiver_instance_id }}
CANTON_LOAD_MESSAGE_RATE: ${{ inputs.message_rate }}
CANTON_LOAD_DURATION: ${{ inputs.load_duration }}
CANTON_CONFIRM_EXEC_TIMEOUT: ${{ inputs.confirm_exec_timeout }}
CANTON_LOAD_SKIP_EXEC_CONFIRM: ${{ inputs.skip_exec_confirm }}
PRIVATE_KEY: ${{ inputs.CCIP_PROD_TESTNET_PRIVATE_KEY }}
TEST_TIMEOUT: ${{ inputs.test_timeout }}
run: |
case "${{ inputs.direction }}" in
canton2evm) TEST_RUN='^TestCanton2EVM_Load$' ;;
Expand All @@ -135,4 +176,13 @@ runs:
evm2canton-token) TEST_RUN='^TestEVM2Canton_TokenLoad$' ;;
*) echo "unknown direction: ${{ inputs.direction }}" >&2; exit 1 ;;
esac
go test -timeout "${{ inputs.test_timeout }}" -v -count 1 -run "$TEST_RUN"
go test -tags=prodledger -timeout "$TEST_TIMEOUT" -v -count 1 -ccip-env=prod-testnet -run "$TEST_RUN"

- name: Upload devenv logs
if: always() && inputs.ccip_env == 'devenv'
uses: ./.github/actions/upload-ccip-devenv-logs
with:
canton-path: ${{ inputs.canton_path }}
test-package-dir: load
log-dump-suffix: ccip-load-tests
artifact-name: container-logs-ccip-load-tests
9 changes: 2 additions & 7 deletions .github/actions/setup-ccip-devenv/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,6 @@ inputs:
# that generates their configs. A mismatch across config-format changes (e.g. #1193
# bootstrap monitoring.Config) makes the verifier container exit on startup.
default: f20ea93af3005f17859ca1d7e6529e0121a0430c
canton-ref:
description: >-
chainlink-canton git ref. Leave empty to use the ref that triggered the workflow.
required: false
default: ''
ccv-iam-role:
description: AWS IAM role ARN for CCV ECR authentication
required: true
Expand All @@ -41,7 +36,7 @@ inputs:
free-disk-space:
description: Run the free-disk-space action before builds
required: false
default: 'true'
default: "true"

runs:
using: composite
Expand All @@ -58,7 +53,7 @@ runs:
with:
repository: smartcontractkit/chainlink-canton
path: ${{ inputs.canton-path }}
ref: ${{ inputs.canton-ref != '' && inputs.canton-ref || github.sha }}
ref: ${{ github.sha }}

- name: Check out chainlink-ccv
uses: actions/checkout@v6
Expand Down
134 changes: 0 additions & 134 deletions .github/workflows/ccip-load-command.yml

This file was deleted.

46 changes: 28 additions & 18 deletions .github/workflows/ccip-load-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@ on:
- canton2evm-token
- evm2canton-token
message_rate:
description: "CANTON_LOAD_MESSAGE_RATE (e.g. 1/1s, 1/45s)"
description: "CANTON_LOAD_MESSAGE_RATE (e.g. 1/45s)"
required: false
default: "1/1s"
default: "1/10s"
type: string
load_duration:
description: "CANTON_LOAD_DURATION (Go duration, e.g. 90s, 2m)"
description: "CANTON_LOAD_DURATION (e.g. 90s, 2m)"
required: false
default: "90s"
type: string
Expand All @@ -36,20 +36,15 @@ on:
required: false
default: "40m"
type: string
canton_ref:
description: "chainlink-canton git ref (empty = workflow ref; devenv only)"
required: false
default: ""
type: string
config_file:
description: "CCIP_CONFIG_FILE basename under ccip/devenv (prod-testnet only)"
required: false
default: env-prod-testnet.ci.toml
type: string
skip_exec_confirm:
description: "CANTON_LOAD_SKIP_EXEC_CONFIRM (prod-testnet only)"
description: "CANTON_LOAD_SKIP_EXEC_CONFIRM"
required: false
default: "true"
default: "false"
type: string
confirm_exec_timeout:
description: "CANTON_CONFIRM_EXEC_TIMEOUT (prod-testnet only)"
Expand Down Expand Up @@ -78,25 +73,27 @@ jobs:
run: |
if [ "${{ inputs.ccip_env }}" = "prod-testnet" ]; then
echo "canton_path=." >> "$GITHUB_OUTPUT"
if [ "${{ inputs.message_rate }}" = "1/1s" ]; then
echo "message_rate=1/45s" >> "$GITHUB_OUTPUT"
else
echo "message_rate=${{ inputs.message_rate }}" >> "$GITHUB_OUTPUT"
fi
echo "message_rate=${{ inputs.message_rate }}" >> "$GITHUB_OUTPUT"
if [ "${{ inputs.load_duration }}" = "90s" ]; then
echo "load_duration=2m" >> "$GITHUB_OUTPUT"
else
echo "load_duration=${{ inputs.load_duration }}" >> "$GITHUB_OUTPUT"
fi
if [ "${{ inputs.test_timeout }}" = "40m" ]; then
if [ "${{ inputs.direction }}" = "evm2canton" ]; then
if [ "${{ inputs.direction }}" = "evm2canton" ] || [ "${{ inputs.direction }}" = "evm2canton-token" ]; then
echo "test_timeout=45m" >> "$GITHUB_OUTPUT"
else
echo "test_timeout=30m" >> "$GITHUB_OUTPUT"
fi
else
echo "test_timeout=${{ inputs.test_timeout }}" >> "$GITHUB_OUTPUT"
fi
direction="${{ inputs.direction }}"
if [ "$direction" = "canton2evm" ]; then
echo "skip_exec_confirm=true" >> "$GITHUB_OUTPUT"
else
echo "skip_exec_confirm=false" >> "$GITHUB_OUTPUT"
fi
else
echo "canton_path=chainlink-canton" >> "$GITHUB_OUTPUT"
echo "message_rate=${{ inputs.message_rate }}" >> "$GITHUB_OUTPUT"
Expand All @@ -108,8 +105,21 @@ jobs:
if: inputs.ccip_env == 'devenv'
uses: ./.github/actions/setup-ccip-devenv
with:
canton-ref: ${{ inputs.canton_ref }}
canton-path: ${{ steps.prod_defaults.outputs.canton_path }}
ccip_env: ${{ inputs.ccip_env }}
direction: ${{ inputs.direction }}
message_rate: ${{ steps.prod_defaults.outputs.message_rate }}
load_duration: ${{ steps.prod_defaults.outputs.load_duration }}
test_timeout: ${{ steps.prod_defaults.outputs.test_timeout }}
config_file: ${{ inputs.config_file }}
canton_path: ${{ steps.prod_defaults.outputs.canton_path }}
skip_exec_confirm: ${{ inputs.ccip_env == 'prod-testnet' && steps.prod_defaults.outputs.skip_exec_confirm || inputs.skip_exec_confirm }}
confirm_exec_timeout: ${{ inputs.confirm_exec_timeout }}
CANTON_OKTA_AUTHORIZER_TESTNET: ${{ secrets.CANTON_OKTA_AUTHORIZER_TESTNET }}
CANTON_OKTA_CLIENT_ID_TESTNET: ${{ secrets.CANTON_OKTA_CLIENT_ID_TESTNET }}
CANTON_OKTA_CLIENT_SECRET_TESTNET: ${{ secrets.CANTON_OKTA_CLIENT_SECRET_TESTNET }}
CCIP_PROD_TESTNET_PRIVATE_KEY: ${{ secrets.CCIP_PROD_TESTNET_PRIVATE_KEY }}
TS_OAUTH_CLIENT_ID_CANTON: ${{ secrets.TS_OAUTH_CLIENT_ID_CANTON }}
TS_AUDIENCE_CANTON: ${{ secrets.TS_AUDIENCE_CANTON }}
ccv-iam-role: ${{ secrets.CCV_IAM_ROLE }}
jd-registry: ${{ secrets.JD_REGISTRY }}
jd-image: ${{ secrets.JD_IMAGE }}
Expand Down
1 change: 0 additions & 1 deletion .github/workflows/chatops.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,3 @@ jobs:
permission: write
commands: |
auto-fix
ccip-load
Loading
Loading