CCIP Load Test #164
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CCIP Load Test | |
on: | |
push: | |
branches: | |
- ccip-develop | |
workflow_dispatch: | |
inputs: | |
base64_test_input : # base64 encoded toml for test input | |
description: 'Base64 encoded json object' | |
required: false | |
# Only run 1 of this workflow at a time per PR | |
concurrency: | |
group: load-ccip-tests-chainlink-${{ github.ref }} | |
cancel-in-progress: true | |
env: | |
INPUT_CHAINLINK_TEST_VERSION: ${{ inputs.chainlinkTestVersion || github.sha}} | |
INPUT_CHAINLINK_IMAGE: ${{ inputs.chainlinkImage }} | |
INPUT_CHAINLINK_VERSION: ${{ inputs.chainlinkVersion || github.sha}} | |
ENV_JOB_IMAGE: ${{ secrets.QA_AWS_ACCOUNT_NUMBER }}.dkr.ecr.${{ secrets.QA_AWS_REGION }}.amazonaws.com/chainlink-ccip-tests:${{ inputs.chainlinkTestVersion || github.sha }} | |
INTERNAL_DOCKER_REPO: ${{ secrets.QA_AWS_ACCOUNT_NUMBER }}.dkr.ecr.${{ secrets.QA_AWS_REGION }}.amazonaws.com | |
jobs: | |
build-chainlink: | |
environment: integration | |
if: ${{ inputs.chainlinkImage == '' || inputs.chainlinkVersion == '' }} | |
permissions: | |
id-token: write | |
contents: read | |
name: Build Chainlink Image | |
runs-on: ubuntu20.04-16cores-64GB | |
steps: | |
- name: Checkout the repo | |
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 | |
- name: Check if image exists | |
id: check-image | |
uses: smartcontractkit/chainlink-github-actions/docker/image-exists@ad22fbd6f4d108b82aaf49b527bcf40f32babea8 # v2.2.1 | |
with: | |
repository: chainlink | |
tag: ${{ env.INPUT_CHAINLINK_VERSION }} | |
AWS_REGION: ${{ secrets.QA_AWS_REGION }} | |
AWS_ROLE_TO_ASSUME: ${{ secrets.QA_AWS_ROLE_TO_ASSUME }} | |
- name: Build Image | |
if: steps.check-image.outputs.exists == 'false' | |
uses: smartcontractkit/chainlink-github-actions/chainlink-testing-framework/build-image@ad22fbd6f4d108b82aaf49b527bcf40f32babea8 # v2.2.1 | |
env: | |
GH_TOKEN: ${{ github.token }} | |
with: | |
cl_repo: smartcontractkit/chainlink-ccip | |
cl_ref: ${{ env.INPUT_CHAINLINK_VERSION }} | |
push_tag: ${{ secrets.QA_AWS_ACCOUNT_NUMBER }}.dkr.ecr.${{ secrets.QA_AWS_REGION }}.amazonaws.com/chainlink:${{ env.INPUT_CHAINLINK_VERSION }} | |
QA_AWS_REGION: ${{ secrets.QA_AWS_REGION }} | |
QA_AWS_ROLE_TO_ASSUME: ${{ secrets.QA_AWS_ROLE_TO_ASSUME }} | |
- name: Collect Metrics | |
if: always() | |
id: collect-gha-metrics | |
uses: smartcontractkit/push-gha-metrics-action@8163dcea2f01a0a8fec84b284406ff7af1d2e1c0 | |
with: | |
basic-auth: ${{ secrets.GRAFANA_CLOUD_BASIC_AUTH }} | |
hostname: ${{ secrets.GRAFANA_CLOUD_HOST }} | |
this-job-name: Build Chainlink Image | |
continue-on-error: true | |
build-test-image: | |
environment: integration | |
permissions: | |
id-token: write | |
contents: read | |
name: Build Test Image | |
runs-on: ubuntu20.04-16cores-64GB | |
steps: | |
- name: Collect Metrics | |
id: collect-gha-metrics | |
uses: smartcontractkit/push-gha-metrics-action@8163dcea2f01a0a8fec84b284406ff7af1d2e1c0 | |
with: | |
basic-auth: ${{ secrets.GRAFANA_CLOUD_BASIC_AUTH }} | |
hostname: ${{ secrets.GRAFANA_CLOUD_HOST }} | |
this-job-name: Build Test Image | |
continue-on-error: true | |
- name: Checkout the repo | |
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 | |
- name: Build Test Image | |
uses: ./.github/actions/build-test-image | |
with: | |
tag: ${{ env.INPUT_CHAINLINK_TEST_VERSION }} | |
QA_AWS_ROLE_TO_ASSUME: ${{ secrets.QA_AWS_ROLE_TO_ASSUME }} | |
QA_AWS_REGION: ${{ secrets.QA_AWS_REGION }} | |
QA_AWS_ACCOUNT_NUMBER: ${{ secrets.QA_AWS_ACCOUNT_NUMBER }} | |
ccip_load_test: | |
name: CCIP Load Test | |
environment: integration | |
runs-on: ubuntu-latest | |
needs: [ build-chainlink, build-test-image ] | |
if: ${{ always() && !contains(needs.*.result, 'failure') }} | |
permissions: | |
issues: read | |
checks: write | |
pull-requests: write | |
id-token: write | |
contents: read | |
env: | |
CHAINLINK_COMMIT_SHA: ${{ inputs.chainlinkVersion }} | |
CHAINLINK_ENV_USER: ${{ github.actor }} | |
SLACK_USER: ${{ inputs.slackMemberID }} | |
SLACK_API_KEY: ${{ secrets.QA_SLACK_API_KEY }} | |
SLACK_CHANNEL: ${{ secrets.QA_SLACK_CHANNEL }} | |
SELECTED_NETWORKS: SIMULATED | |
EVM_KEYS: ${{ secrets.QA_EVM_KEYS }} # replace it with input parameter once debug log is updated to not print the key | |
TEST_LOG_LEVEL: info | |
REF_NAME: ${{ github.head_ref || github.ref_name }} | |
ENV_JOB_IMAGE_BASE: ${{ secrets.QA_AWS_ACCOUNT_NUMBER }}.dkr.ecr.${{ secrets.QA_AWS_REGION }}.amazonaws.com/chainlink-ccip-tests | |
GOERLI_URLS: ${{ secrets.QA_GOERLI_URLS }} | |
GOERLI_HTTP_URLS: ${{ secrets.QA_GOERLI_HTTP_URLS }} | |
OPTIMISM_GOERLI_URLS: ${{ secrets.QA_OPTIMISM_GOERLI_URLS }} | |
OPTIMISM_GOERLI_HTTP_URLS: ${{ secrets.QA_OPTIMISM_GOERLI_HTTP_URLS }} | |
SEPOLIA_URLS: ${{ secrets.QA_SEPOLIA_URLS }} | |
SEPOLIA_HTTP_URLS: ${{ secrets.QA_SEPOLIA_HTTP_URLS }} | |
AVALANCHE_FUJI_URLS: ${{ secrets.QA_AVALANCHE_FUJI_URLS }} | |
AVALANCHE_FUJI_HTTP_URLS: ${{ secrets.QA_AVALANCHE_FUJI_HTTP_URLS }} | |
steps: | |
- name: Collect Metrics | |
id: collect-gha-metrics | |
uses: smartcontractkit/push-gha-metrics-action@8163dcea2f01a0a8fec84b284406ff7af1d2e1c0 | |
with: | |
basic-auth: ${{ secrets.GRAFANA_CLOUD_BASIC_AUTH }} | |
hostname: ${{ secrets.GRAFANA_CLOUD_HOST }} | |
this-job-name: ${{ inputs.networks }} CCIP Load Test | |
continue-on-error: true | |
- name: Checkout the repo | |
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 | |
with: | |
ref: ${{ env.REF_NAME }} | |
- name: Sets env vars | |
shell: bash | |
run: | | |
if [[ "${{ github.event_name }}" != "workflow_dispatch" ]]; then | |
echo "BASE64_TEST_CONFIG_OVERRIDE= ${{ inputs.base64_test_input }}" >> $GITHUB_ENV | |
echo "TEST_BASE64_TEST_CONFIG_OVERRIDE= ${{ inputs.base64_test_input }}" >> $GITHUB_ENV | |
fi | |
if [[ "${{ env.INPUT_CHAINLINK_IMAGE }}" == "" || "${{ env.INPUT_CHAINLINK_VERSION }}" == "" ]]; then | |
echo "INPUT_CHAINLINK_IMAGE=${{ secrets.QA_AWS_ACCOUNT_NUMBER }}.dkr.ecr.${{ secrets.QA_AWS_REGION }}.amazonaws.com/chainlink" >> $GITHUB_ENV | |
echo "INPUT_CHAINLINK_VERSION=${{ github.sha }}" >> $GITHUB_ENV | |
fi | |
if [[ "${{ env.INPUT_CHAINLINK_TEST_VERSION }}" == "" ]]; then | |
echo "INPUT_CHAINLINK_TEST_VERSION=${{ github.sha }}" >> $GITHUB_ENV | |
fi | |
- name: step summary | |
shell: bash | |
run: | | |
echo "ENV_JOB_IMAGE=${{ env.ENV_JOB_IMAGE_BASE }}:${{ env.INPUT_CHAINLINK_TEST_VERSION }}" >> $GITHUB_ENV | |
echo "### chainlink image used for this test run :link:" >>$GITHUB_STEP_SUMMARY | |
echo "\`${{ env.INPUT_CHAINLINK_VERSION }}\`" >> $GITHUB_STEP_SUMMARY | |
echo "### chainlink-tests image tag for this test run :ship:" >>$GITHUB_STEP_SUMMARY | |
echo "\`${{ env.INPUT_CHAINLINK_TEST_VERSION }}\`" >> $GITHUB_STEP_SUMMARY | |
echo "### test input override :link:" >>$GITHUB_STEP_SUMMARY | |
echo "$(base64 -d <<< "${{ inputs.base64_test_input }}")" >>$GITHUB_STEP_SUMMARY | |
- name: Run Tests | |
uses: smartcontractkit/chainlink-github-actions/chainlink-testing-framework/run-tests@ad22fbd6f4d108b82aaf49b527bcf40f32babea8 # v2.2.1 | |
env: | |
TEST_SUITE: load | |
TEST_ARGS: -test.timeout 900h | |
DATABASE_URL: postgresql://postgres:node@localhost:5432/chainlink_test?sslmode=disable | |
TEST_LOKI_TENANT_ID: ${{ secrets.TEST_LOKI_TENANT_ID }} | |
TEST_LOKI_URL: ${{ secrets.TEST_LOKI_URL }} | |
RR_MEM: 8Gi | |
RR_CPU: 4 | |
with: | |
test_command_to_run: make test_need_operator_assets && cd ./integration-tests/ccip-tests && go test -v -timeout 900h -count=1 -json -run ^TestLoadCCIPStableRPS$ ./load 2>&1 | tee /tmp/gotest.log | gotestfmt | |
test_download_vendor_packages_command: cd ./integration-tests && go mod download | |
cl_repo: ${{ env.INPUT_CHAINLINK_IMAGE }} | |
cl_image_tag: ${{ env.INPUT_CHAINLINK_VERSION }} | |
token: ${{ secrets.GITHUB_TOKEN }} | |
go_mod_path: ./integration-tests/go.mod | |
QA_AWS_REGION: ${{ secrets.QA_AWS_REGION }} | |
QA_AWS_ROLE_TO_ASSUME: ${{ secrets.QA_AWS_ROLE_TO_ASSUME }} | |
QA_KUBECONFIG: ${{ secrets.QA_KUBECONFIG }} | |
artifacts_location: ./integration-tests/load/logs/payload_ccip.json |