On Demand OCR Soak Test #597
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: On Demand OCR Soak Test | |
on: | |
workflow_dispatch: | |
inputs: | |
testToRun: | |
description: Select a test to run | |
required: true | |
default: TestOCRSoak | |
type: choice | |
options: | |
- TestOCRv1Soak | |
- TestOCRv2Soak | |
- TestForwarderOCRv1Soak | |
- TestForwarderOCRv2Soak | |
- TestOCRSoak_GethReorgBelowFinality_FinalityTagDisabled | |
- TestOCRSoak_GethReorgBelowFinality_FinalityTagEnabled | |
- TestOCRSoak_GasSpike | |
- TestOCRSoak_ChangeBlockGasLimit | |
- TestOCRSoak_RPCDownForAllCLNodes | |
- TestOCRSoak_RPCDownForHalfCLNodes | |
base64Config: | |
description: base64-ed config | |
required: true | |
type: string | |
slackMemberID: | |
description: Slack Member ID (Not your @) | |
required: true | |
default: U01A2B2C3D4 | |
type: string | |
test_secrets_override_key: | |
description: 'Key to run tests with custom test secrets' | |
required: false | |
type: string | |
jobs: | |
ocr_soak_test: | |
name: OCR Soak Test | |
environment: integration | |
runs-on: ubuntu-latest | |
permissions: | |
checks: write | |
pull-requests: write | |
id-token: write | |
contents: read | |
env: | |
CHAINLINK_ENV_USER: ${{ github.actor }} | |
SLACK_API_KEY: ${{ secrets.QA_SLACK_API_KEY }} | |
SLACK_CHANNEL: ${{ secrets.QA_SLACK_CHANNEL }} | |
TEST_LOG_LEVEL: debug | |
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-tests | |
steps: | |
- name: Collect Metrics | |
id: collect-gha-metrics | |
uses: smartcontractkit/push-gha-metrics-action@d9da21a2747016b3e13de58c7d4115a3d5c97935 # v3.0.1 | |
with: | |
id: on-demand-ocr-soak-test | |
org-id: ${{ secrets.GRAFANA_INTERNAL_TENANT_ID }} | |
basic-auth: ${{ secrets.GRAFANA_INTERNAL_BASIC_AUTH }} | |
hostname: ${{ secrets.GRAFANA_INTERNAL_HOST }} | |
this-job-name: ${{ inputs.network }} OCR Soak Test | |
continue-on-error: true | |
- name: Checkout the repo | |
uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 | |
with: | |
ref: ${{ env.REF_NAME }} | |
- name: Get Slack config and mask base64 config | |
run: | | |
SLACK_USER=$(jq -r '.inputs.slackMemberID' $GITHUB_EVENT_PATH) | |
echo ::add-mask::$SLACK_USER | |
echo SLACK_USER=$SLACK_USER >> $GITHUB_ENV | |
BASE64_CONFIG_OVERRIDE=$(jq -r '.inputs.base64Config' $GITHUB_EVENT_PATH) | |
echo ::add-mask::$BASE64_CONFIG_OVERRIDE | |
echo "BASE64_CONFIG_OVERRIDE=$BASE64_CONFIG_OVERRIDE" >> $GITHUB_ENV | |
- name: Parse base64 config | |
uses: ./.github/actions/setup-parse-base64-config | |
with: | |
base64Config: ${{ env.BASE64_CONFIG_OVERRIDE }} | |
- name: Setup Push Tag | |
shell: bash | |
run: | | |
echo "### chainlink image used for this test run :link:" >>$GITHUB_STEP_SUMMARY | |
echo "\`${{ env.CHAINLINK_IMAGE }}\`" >>$GITHUB_STEP_SUMMARY | |
echo "### chainlink-tests image tag for this test run :ship:" >>$GITHUB_STEP_SUMMARY | |
echo "\`${GITHUB_SHA}\`" >>$GITHUB_STEP_SUMMARY | |
echo "### Networks on which test was run" >>$GITHUB_STEP_SUMMARY | |
echo "\`${{ env.NETWORKS }}\`" >>$GITHUB_STEP_SUMMARY | |
- name: Build Image | |
uses: ./.github/actions/build-test-image | |
with: | |
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 }} | |
- name: Run Tests | |
uses: smartcontractkit/chainlink-github-actions/chainlink-testing-framework/run-tests@2967f2287bd3f3ddbac7b476e9568993df01796e # v2.3.27 | |
env: | |
DETACH_RUNNER: true | |
TEST_SUITE: soak | |
TEST_ARGS: -test.timeout 900h -test.memprofile memprofile.out -test.cpuprofile profile.out | |
ENV_JOB_IMAGE: ${{ secrets.QA_AWS_ACCOUNT_NUMBER }}.dkr.ecr.${{ secrets.QA_AWS_REGION }}.amazonaws.com/chainlink-tests:${{ github.sha }} | |
# We can comment these out when we have a stable soak test and aren't worried about resource consumption | |
TEST_UPLOAD_CPU_PROFILE: true | |
TEST_UPLOAD_MEM_PROFILE: true | |
with: | |
test_command_to_run: cd ./integration-tests && go test -v -count=1 -run ^${{ github.event.inputs.testToRun }}$ ./soak | |
test_download_vendor_packages_command: make gomod | |
test_secrets_override_base64: ${{ secrets[inputs.test_secrets_override_key] }} | |
cl_repo: ${{ env.CHAINLINK_IMAGE }} | |
cl_image_tag: ${{ env.CHAINLINK_VERSION }} | |
token: ${{ secrets.GITHUB_TOKEN }} | |
should_cleanup: false | |
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 }} |