From dd25217d9d13a343a394d74d8386966c4b3dbe3c Mon Sep 17 00:00:00 2001 From: Rustie Lin Date: Wed, 9 Oct 2024 08:12:50 -0700 Subject: [PATCH] [forge] add indexer_test to unstable; clean up unused forge workflows (#14896) * [forge] remove pfn and state sync workflows * [forge] clean unstable; add indexer --- .github/workflows/forge-pfn.yaml | 170 ------------------------ .github/workflows/forge-state-sync.yaml | 142 -------------------- .github/workflows/forge-unstable.yaml | 124 ++++++----------- 3 files changed, 42 insertions(+), 394 deletions(-) delete mode 100644 .github/workflows/forge-pfn.yaml delete mode 100644 .github/workflows/forge-state-sync.yaml diff --git a/.github/workflows/forge-pfn.yaml b/.github/workflows/forge-pfn.yaml deleted file mode 100644 index 660ed535217b7..0000000000000 --- a/.github/workflows/forge-pfn.yaml +++ /dev/null @@ -1,170 +0,0 @@ -# Continuously run PFN forge tests against the latest main branch -name: Continuous Forge Tests - Public Fullnodes - -permissions: - issues: write - pull-requests: write - contents: read - id-token: write - actions: write # Required for workflow cancellation via check-aptos-core - -on: - # Allow triggering manually - workflow_dispatch: - inputs: - IMAGE_TAG: - required: false - type: string - description: The docker image tag to test. This may be a git SHA1, or a tag like "_". If not specified, Forge will find the latest build based on the git history (starting from GIT_SHA input) - GIT_SHA: - required: false - type: string - description: The git SHA1 to checkout. This affects the Forge test runner that is used. If not specified, the latest main will be used - pull_request: - paths: - - ".github/workflows/forge-pfn.yaml" - -env: - AWS_ACCOUNT_NUM: ${{ secrets.ENV_ECR_AWS_ACCOUNT_NUM }} - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - IMAGE_TAG: ${{ inputs.IMAGE_TAG }} # This is only used for workflow_dispatch, otherwise defaults to empty - AWS_REGION: us-west-2 - -jobs: - # This job determines the image tag and branch to test, and passes them to the other jobs. - # NOTE: this may be better as a separate workflow as the logic is quite complex but generalizable. - determine-test-metadata: - runs-on: ubuntu-latest - outputs: - IMAGE_TAG: ${{ steps.get-docker-image-tag.outputs.IMAGE_TAG }} - BRANCH: ${{ steps.determine-test-branch.outputs.BRANCH }} - steps: - - uses: actions/checkout@v4 - - - name: Determine branch based on cadence - id: determine-test-branch - run: | - if [[ "${{ github.event_name }}" == "schedule" ]]; then - echo "Unknown schedule: ${{ github.event.schedule }}" - exit 1 - elif [[ "${{ github.event_name }}" == "push" ]]; then - echo "Branch: ${{ github.ref_name }}" - echo "BRANCH=${{ github.ref_name }}" >> $GITHUB_OUTPUT - else - echo "Using GIT_SHA" - # on workflow_dispatch, this will simply use the inputs.GIT_SHA given (or the default) - # on pull_request, this will default to null and the following "checkout" step will use the PR's base branch - echo "BRANCH=${{ inputs.GIT_SHA }}" >> $GITHUB_OUTPUT - fi - - - uses: aptos-labs/aptos-core/.github/actions/check-aptos-core@main - with: - cancel-workflow: ${{ github.event_name == 'schedule' }} # Cancel the workflow if it is scheduled on a fork - - # actions/get-latest-docker-image-tag requires docker utilities and having authenticated to internal docker image registries - - uses: aptos-labs/aptos-core/.github/actions/docker-setup@main - id: docker-setup - with: - GCP_WORKLOAD_IDENTITY_PROVIDER: ${{ secrets.GCP_WORKLOAD_IDENTITY_PROVIDER }} - GCP_SERVICE_ACCOUNT_EMAIL: ${{ secrets.GCP_SERVICE_ACCOUNT_EMAIL }} - EXPORT_GCP_PROJECT_VARIABLES: "false" - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - AWS_DOCKER_ARTIFACT_REPO: ${{ secrets.AWS_DOCKER_ARTIFACT_REPO }} - GIT_CREDENTIALS: ${{ secrets.GIT_CREDENTIALS }} - - - uses: aptos-labs/aptos-core/.github/actions/get-latest-docker-image-tag@main - id: get-docker-image-tag - with: - branch: ${{ steps.determine-test-branch.outputs.BRANCH }} - variants: "failpoints performance" - - - name: Write summary - run: | - IMAGE_TAG=${{ steps.get-docker-image-tag.outputs.IMAGE_TAG }} - BRANCH=${{ steps.determine-test-branch.outputs.BRANCH }} - if [ -n "${BRANCH}" ]; then - echo "BRANCH: [${BRANCH}](https://github.com/${{ github.repository }}/tree/${BRANCH})" >> $GITHUB_STEP_SUMMARY - fi - echo "IMAGE_TAG: [${IMAGE_TAG}](https://github.com/${{ github.repository }}/commit/${IMAGE_TAG})" >> $GITHUB_STEP_SUMMARY - - ### Public fullnode tests - - # Measures PFN latencies with a constant TPS - run-forge-pfn-const-tps: - if: ${{ github.event_name != 'pull_request' }} - needs: determine-test-metadata - uses: aptos-labs/aptos-core/.github/workflows/workflow-run-forge.yaml@main - secrets: inherit - with: - IMAGE_TAG: ${{ needs.determine-test-metadata.outputs.IMAGE_TAG }} - FORGE_NAMESPACE: forge-pfn-const-tps-${{ needs.determine-test-metadata.outputs.IMAGE_TAG }} - FORGE_RUNNER_DURATION_SECS: 1800 # Run for 30 minutes - FORGE_TEST_SUITE: pfn_const_tps - POST_TO_SLACK: true - - # Measures PFN latencies with a constant TPS (with network chaos) - run-forge-pfn-const-tps-network-chaos: - if: ${{ github.event_name != 'pull_request' && always() }} - needs: [determine-test-metadata, run-forge-pfn-const-tps] # Only run after the previous job completes - uses: aptos-labs/aptos-core/.github/workflows/workflow-run-forge.yaml@main - secrets: inherit - with: - IMAGE_TAG: ${{ needs.determine-test-metadata.outputs.IMAGE_TAG }} - FORGE_NAMESPACE: forge-pfn-const-tps-with-network-chaos-${{ needs.determine-test-metadata.outputs.IMAGE_TAG }} - FORGE_RUNNER_DURATION_SECS: 1800 # Run for 30 minutes - FORGE_TEST_SUITE: pfn_const_tps_with_network_chaos - POST_TO_SLACK: true - - # Measures PFN latencies with a constant TPS (with a realistic environment) - run-forge-pfn-const-tps-realistic-env: - if: ${{ github.event_name != 'pull_request' && always() }} - needs: [determine-test-metadata, run-forge-pfn-const-tps-network-chaos] # Only run after the previous job completes - uses: aptos-labs/aptos-core/.github/workflows/workflow-run-forge.yaml@main - secrets: inherit - with: - IMAGE_TAG: ${{ needs.determine-test-metadata.outputs.IMAGE_TAG }} - FORGE_NAMESPACE: forge-pfn-const-tps-with-realistic-env-${{ needs.determine-test-metadata.outputs.IMAGE_TAG }} - FORGE_RUNNER_DURATION_SECS: 1800 # Run for 30 minutes - FORGE_TEST_SUITE: pfn_const_tps_with_realistic_env - POST_TO_SLACK: true - - # Measures max PFN throughput and latencies under load - run-forge-pfn-performance: - if: ${{ github.event_name != 'pull_request' && always() }} - needs: [determine-test-metadata, run-forge-pfn-const-tps-realistic-env] # Only run after the previous job completes - uses: aptos-labs/aptos-core/.github/workflows/workflow-run-forge.yaml@main - secrets: inherit - with: - IMAGE_TAG: ${{ needs.determine-test-metadata.outputs.IMAGE_TAG }} - FORGE_NAMESPACE: forge-pfn-performance-${{ needs.determine-test-metadata.outputs.IMAGE_TAG }} - FORGE_RUNNER_DURATION_SECS: 1800 # Run for 30 minutes - FORGE_TEST_SUITE: pfn_performance - POST_TO_SLACK: true - - # Measures max PFN throughput and latencies under load (with network chaos) - run-forge-pfn-performance-network-chaos: - if: ${{ github.event_name != 'pull_request' && always() }} - needs: [determine-test-metadata, run-forge-pfn-performance] # Only run after the previous job completes - uses: aptos-labs/aptos-core/.github/workflows/workflow-run-forge.yaml@main - secrets: inherit - with: - IMAGE_TAG: ${{ needs.determine-test-metadata.outputs.IMAGE_TAG }} - FORGE_NAMESPACE: forge-pfn-performance-with-network-chaos-${{ needs.determine-test-metadata.outputs.IMAGE_TAG }} - FORGE_RUNNER_DURATION_SECS: 1800 # Run for 30 minutes - FORGE_TEST_SUITE: pfn_performance_with_network_chaos - POST_TO_SLACK: true - - # Measures max PFN throughput and latencies under load (with a realistic environment) - run-forge-pfn-performance-realistic-env: - if: ${{ github.event_name != 'pull_request' && always() }} - needs: [determine-test-metadata, run-forge-pfn-performance-network-chaos] # Only run after the previous job completes - uses: aptos-labs/aptos-core/.github/workflows/workflow-run-forge.yaml@main - secrets: inherit - with: - IMAGE_TAG: ${{ needs.determine-test-metadata.outputs.IMAGE_TAG }} - FORGE_NAMESPACE: forge-pfn-performance-with-realistic-env-${{ needs.determine-test-metadata.outputs.IMAGE_TAG }} - FORGE_RUNNER_DURATION_SECS: 1800 # Run for 30 minutes - FORGE_TEST_SUITE: pfn_performance_with_realistic_env - POST_TO_SLACK: true diff --git a/.github/workflows/forge-state-sync.yaml b/.github/workflows/forge-state-sync.yaml deleted file mode 100644 index c9b6e2afc72b5..0000000000000 --- a/.github/workflows/forge-state-sync.yaml +++ /dev/null @@ -1,142 +0,0 @@ -# Continuously run state sync forge tests against the latest main branch -name: Continuous Forge Tests - State Sync - -permissions: - issues: write - pull-requests: write - contents: read - id-token: write - actions: write # Required for workflow cancellation via check-aptos-core - -on: - # Allow triggering manually - workflow_dispatch: - inputs: - IMAGE_TAG: - required: false - type: string - description: The docker image tag to test. This may be a git SHA1, or a tag like "_". If not specified, Forge will find the latest build based on the git history (starting from GIT_SHA input) - GIT_SHA: - required: false - type: string - description: The git SHA1 to checkout. This affects the Forge test runner that is used. If not specified, the latest main will be used - pull_request: - paths: - - ".github/workflows/forge-state-sync.yaml" - -env: - AWS_ACCOUNT_NUM: ${{ secrets.ENV_ECR_AWS_ACCOUNT_NUM }} - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - IMAGE_TAG: ${{ inputs.IMAGE_TAG }} # This is only used for workflow_dispatch, otherwise defaults to empty - AWS_REGION: us-west-2 - -jobs: - # This job determines the image tag and branch to test, and passes them to the other jobs. - # NOTE: this may be better as a separate workflow as the logic is quite complex but generalizable. - determine-test-metadata: - runs-on: ubuntu-latest - outputs: - IMAGE_TAG: ${{ steps.get-docker-image-tag.outputs.IMAGE_TAG }} - BRANCH: ${{ steps.determine-test-branch.outputs.BRANCH }} - steps: - - name: Determine branch based on cadence - id: determine-test-branch - run: | - if [[ "${{ github.event_name }}" == "schedule" ]]; then - echo "Unknown schedule: ${{ github.event.schedule }}" - exit 1 - elif [[ "${{ github.event_name }}" == "push" ]]; then - echo "Branch: ${{ github.ref_name }}" - echo "BRANCH=${{ github.ref_name }}" >> $GITHUB_OUTPUT - else - echo "Using GIT_SHA" - # on workflow_dispatch, this will simply use the inputs.GIT_SHA given (or the default) - # on pull_request, this will default to null and the following "checkout" step will use the PR's base branch - echo "BRANCH=${{ inputs.GIT_SHA }}" >> $GITHUB_OUTPUT - fi - - - uses: aptos-labs/aptos-core/.github/actions/check-aptos-core@main - with: - cancel-workflow: ${{ github.event_name == 'schedule' }} # Cancel the workflow if it is scheduled on a fork - - # actions/get-latest-docker-image-tag requires docker utilities and having authenticated to internal docker image registries - - uses: aptos-labs/aptos-core/.github/actions/docker-setup@main - id: docker-setup - with: - GCP_WORKLOAD_IDENTITY_PROVIDER: ${{ secrets.GCP_WORKLOAD_IDENTITY_PROVIDER }} - GCP_SERVICE_ACCOUNT_EMAIL: ${{ secrets.GCP_SERVICE_ACCOUNT_EMAIL }} - EXPORT_GCP_PROJECT_VARIABLES: "false" - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - AWS_DOCKER_ARTIFACT_REPO: ${{ secrets.AWS_DOCKER_ARTIFACT_REPO }} - GIT_CREDENTIALS: ${{ secrets.GIT_CREDENTIALS }} - - - uses: aptos-labs/aptos-core/.github/actions/get-latest-docker-image-tag@main - id: get-docker-image-tag - with: - branch: ${{ steps.determine-test-branch.outputs.BRANCH }} - variants: "failpoints performance" - - - name: Write summary - run: | - IMAGE_TAG=${{ steps.get-docker-image-tag.outputs.IMAGE_TAG }} - BRANCH=${{ steps.determine-test-branch.outputs.BRANCH }} - if [ -n "${BRANCH}" ]; then - echo "BRANCH: [${BRANCH}](https://github.com/${{ github.repository }}/tree/${BRANCH})" >> $GITHUB_STEP_SUMMARY - fi - echo "IMAGE_TAG: [${IMAGE_TAG}](https://github.com/${{ github.repository }}/commit/${IMAGE_TAG})" >> $GITHUB_STEP_SUMMARY - - ### State sync tests - - # Measures state sync performance for validators (output syncing) - run-forge-state-sync-perf-validator-test: - if: ${{ github.event_name != 'pull_request' }} - needs: determine-test-metadata - uses: aptos-labs/aptos-core/.github/workflows/workflow-run-forge.yaml@main - secrets: inherit - with: - IMAGE_TAG: ${{ needs.determine-test-metadata.outputs.IMAGE_TAG }} - FORGE_NAMESPACE: forge-state-sync-perf-validator-${{ needs.determine-test-metadata.outputs.IMAGE_TAG }} - FORGE_RUNNER_DURATION_SECS: 1800 # Run for 30 minutes - FORGE_TEST_SUITE: state_sync_perf_validators - POST_TO_SLACK: true - - # Measures state sync performance for validator fullnodes (execution syncing) - run-forge-state-sync-perf-fullnode-execute-test: - if: ${{ github.event_name != 'pull_request' && always() }} - needs: [determine-test-metadata, run-forge-state-sync-perf-validator-test] # Only run after the previous job completes - uses: aptos-labs/aptos-core/.github/workflows/workflow-run-forge.yaml@main - secrets: inherit - with: - IMAGE_TAG: ${{ needs.determine-test-metadata.outputs.IMAGE_TAG }} - FORGE_NAMESPACE: forge-state-sync-perf-fullnode-execute-${{ needs.determine-test-metadata.outputs.IMAGE_TAG }} - FORGE_RUNNER_DURATION_SECS: 1800 # Run for 30 minutes - FORGE_TEST_SUITE: state_sync_perf_fullnodes_execute_transactions - POST_TO_SLACK: true - - # Measures state sync performance for validator fullnodes (fast syncing) - run-forge-state-sync-perf-fullnode-fast-sync-test: - if: ${{ github.event_name != 'pull_request' && always() }} - needs: [determine-test-metadata, run-forge-state-sync-perf-fullnode-execute-test] # Only run after the previous job completes - uses: aptos-labs/aptos-core/.github/workflows/workflow-run-forge.yaml@main - secrets: inherit - with: - IMAGE_TAG: ${{ needs.determine-test-metadata.outputs.IMAGE_TAG }} - FORGE_NAMESPACE: forge-state-sync-perf-fullnode-fast-sync-${{ needs.determine-test-metadata.outputs.IMAGE_TAG }} - FORGE_RUNNER_DURATION_SECS: 1800 # Run for 30 minutes - FORGE_TEST_SUITE: state_sync_perf_fullnodes_fast_sync - POST_TO_SLACK: true - - # Measures state sync performance for validator fullnodes (output syncing) - run-forge-state-sync-perf-fullnode-apply-test: - if: ${{ github.event_name != 'pull_request' && always() }} - needs: [determine-test-metadata, run-forge-state-sync-perf-fullnode-fast-sync-test] # Only run after the previous job completes - uses: aptos-labs/aptos-core/.github/workflows/workflow-run-forge.yaml@main - secrets: inherit - with: - IMAGE_TAG: ${{ needs.determine-test-metadata.outputs.IMAGE_TAG }} - FORGE_NAMESPACE: forge-state-sync-perf-fullnode-apply-${{ needs.determine-test-metadata.outputs.IMAGE_TAG }} - FORGE_RUNNER_DURATION_SECS: 1800 # Run for 30 minutes - FORGE_TEST_SUITE: state_sync_perf_fullnodes_apply_outputs - POST_TO_SLACK: true diff --git a/.github/workflows/forge-unstable.yaml b/.github/workflows/forge-unstable.yaml index 5ff54030cf475..ab7db2a40a1a3 100644 --- a/.github/workflows/forge-unstable.yaml +++ b/.github/workflows/forge-unstable.yaml @@ -8,6 +8,10 @@ permissions: id-token: write actions: write #required for workflow cancellation via check-aptos-core +concurrency: + group: forge-unstable-${{ github.ref_name }} + cancel-in-progress: true + on: # Allow triggering manually workflow_dispatch: @@ -20,9 +24,14 @@ on: required: false type: string description: The git SHA1 to checkout. This affects the Forge test runner that is used. If not specified, the latest main will be used + # NOTE: to support testing different branches on different schedules, you need to specify the cron schedule in the 'determine-test-branch' step as well below + # Reference: https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule + schedule: + - cron: "30 */2 * * *" # Run this on an aggressive cadence to get signal on the tests. They should be fully evaluated (moved to forge stable or removed entirely) after baking pull_request: paths: - - ".github/workflows/forge-unstable.yaml" + - ".github/workflows/forge-stable.yaml" + - "testsuite/find_latest_image.py" env: AWS_ACCOUNT_NUM: ${{ secrets.ENV_ECR_AWS_ACCOUNT_NUM }} @@ -38,16 +47,22 @@ jobs: runs-on: ubuntu-latest outputs: IMAGE_TAG: ${{ steps.get-docker-image-tag.outputs.IMAGE_TAG }} + IMAGE_TAG_FOR_COMPAT_TEST: ${{ steps.get-last-released-image-tag-for-compat-test.outputs.IMAGE_TAG }} BRANCH: ${{ steps.determine-test-branch.outputs.BRANCH }} + BRANCH_HASH: ${{ steps.hash-branch.outputs.BRANCH_HASH }} steps: - uses: actions/checkout@v4 - name: Determine branch based on cadence id: determine-test-branch + # NOTE: the schedule cron MUST match the one in the 'on.schedule.cron' section above run: | if [[ "${{ github.event_name }}" == "schedule" ]]; then - echo "Unknown schedule: ${{ github.event.schedule }}" - exit 1 + echo "Branch: main" + echo "BRANCH=main" >> $GITHUB_OUTPUT + elif [[ "${{ github.event_name }}" == "push" ]]; then + echo "Branch: ${{ github.ref_name }}" + echo "BRANCH=${{ github.ref_name }}" >> $GITHUB_OUTPUT else echo "Using GIT_SHA" # on workflow_dispatch, this will simply use the inputs.GIT_SHA given (or the default) @@ -55,6 +70,20 @@ jobs: echo "BRANCH=${{ inputs.GIT_SHA }}" >> $GITHUB_OUTPUT fi + # Use the branch hash instead of the full branch name to stay under kubernetes namespace length limit + - name: Hash the branch + id: hash-branch + run: | + # If BRANCH is empty, default to "main" + if [ -z "${{ steps.determine-test-branch.outputs.BRANCH }}" ]; then + BRANCH="main" + else + BRANCH="${{ steps.determine-test-branch.outputs.BRANCH }}" + fi + + # Hashing the branch name + echo "BRANCH_HASH=$(echo -n "$BRANCH" | sha256sum | cut -c1-10)" >> $GITHUB_OUTPUT + - uses: aptos-labs/aptos-core/.github/actions/check-aptos-core@main with: cancel-workflow: ${{ github.event_name == 'schedule' }} # Cancel the workflow if it is scheduled on a fork @@ -86,88 +115,19 @@ jobs: fi echo "IMAGE_TAG: [${IMAGE_TAG}](https://github.com/${{ github.repository }}/commit/${IMAGE_TAG})" >> $GITHUB_STEP_SUMMARY - forge-continuous: +# Test definitions start below +# To add a new Forge test, add a new job definition below. Copy all fields and change only the: +# * job name +# * "needs" dependency. You need "determine-test-metadata", and the previous job (jobs are run sequentially) +# * with.FORGE_TEST_SUITE, change this to your test s uite +# * with.FORGE_*, any features or customizations you need + forge-indexer: if: ${{ github.event_name != 'pull_request' }} needs: determine-test-metadata uses: aptos-labs/aptos-core/.github/workflows/workflow-run-forge.yaml@main secrets: inherit with: IMAGE_TAG: ${{ needs.determine-test-metadata.outputs.IMAGE_TAG }} - # GCP cluster - FORGE_CLUSTER_NAME: aptos-forge-1 - COMMENT_HEADER: forge-continuous - # This test suite is configured using the forge.py config test command - FORGE_TEST_SUITE: continuous - - run-forge-state-sync-slow-processing-catching-up-test: - if: ${{ github.event_name != 'pull_request' && always() }} - needs: [ determine-test-metadata, forge-continuous ] # Only run after the previous job completes - uses: aptos-labs/aptos-core/.github/workflows/workflow-run-forge.yaml@main - secrets: inherit - with: - IMAGE_TAG: ${{ needs.determine-test-metadata.outputs.IMAGE_TAG }} - # GCP cluster - FORGE_CLUSTER_NAME: aptos-forge-1 - FORGE_NAMESPACE: forge-state-sync-slow-processing-catching-up-test-${{ needs.determine-test-metadata.outputs.IMAGE_TAG }} - FORGE_RUNNER_DURATION_SECS: 900 # Run for 15 minutes - FORGE_TEST_SUITE: state_sync_slow_processing_catching_up - POST_TO_SLACK: true - FORGE_ENABLE_FAILPOINTS: true - - run-forge-twin-validator-test: - if: ${{ github.event_name != 'pull_request' && always() }} - needs: [ determine-test-metadata, run-forge-state-sync-slow-processing-catching-up-test ] # Only run after the previous job completes - uses: aptos-labs/aptos-core/.github/workflows/workflow-run-forge.yaml@main - secrets: inherit - with: - IMAGE_TAG: ${{ needs.determine-test-metadata.outputs.IMAGE_TAG }} - # GCP cluster - FORGE_CLUSTER_NAME: aptos-forge-1 - FORGE_NAMESPACE: forge-twin-validator-${{ needs.determine-test-metadata.outputs.IMAGE_TAG }} - FORGE_RUNNER_DURATION_SECS: 900 # Run for 15 minutes - FORGE_TEST_SUITE: twin_validator_test - POST_TO_SLACK: true - - run-forge-state-sync-failures-catching-up-test: - if: ${{ github.event_name != 'pull_request' && always() }} - needs: [ determine-test-metadata, run-forge-twin-validator-test ] # Only run after the previous job completes - uses: aptos-labs/aptos-core/.github/workflows/workflow-run-forge.yaml@main - secrets: inherit - with: - IMAGE_TAG: ${{ needs.determine-test-metadata.outputs.IMAGE_TAG }} - FORGE_NAMESPACE: forge-state-sync-failures-catching-up-test-${{ needs.determine-test-metadata.outputs.IMAGE_TAG }} - # GCP cluster - FORGE_CLUSTER_NAME: aptos-forge-1 - FORGE_RUNNER_DURATION_SECS: 900 # Run for 15 minutes - FORGE_TEST_SUITE: state_sync_failures_catching_up - FORGE_ENABLE_FAILPOINTS: true - POST_TO_SLACK: ${{ needs.determine-test-metadata.outputs.BRANCH == 'main' }} # only post to slack on main branch - - run-forge-validator-reboot-stress-test: - if: ${{ github.event_name != 'pull_request' && always() }} - needs: [ determine-test-metadata, run-forge-state-sync-failures-catching-up-test ] # Only run after the previous job completes - uses: aptos-labs/aptos-core/.github/workflows/workflow-run-forge.yaml@main - secrets: inherit - with: - IMAGE_TAG: ${{ needs.determine-test-metadata.outputs.IMAGE_TAG }} - # GCP cluster - FORGE_CLUSTER_NAME: aptos-forge-1 - FORGE_NAMESPACE: forge-validator-reboot-stress-${{ needs.determine-test-metadata.outputs.IMAGE_TAG }} - FORGE_RUNNER_DURATION_SECS: 2400 # Run for 40 minutes - FORGE_TEST_SUITE: validator_reboot_stress_test - POST_TO_SLACK: true - - run-forge-haproxy: - if: ${{ github.event_name != 'pull_request' && always() }} - needs: [ determine-test-metadata, run-forge-validator-reboot-stress-test ] # Only run after the previous job completes - uses: aptos-labs/aptos-core/.github/workflows/workflow-run-forge.yaml@main - secrets: inherit - with: - IMAGE_TAG: ${{ needs.determine-test-metadata.outputs.IMAGE_TAG }} - # GCP cluster - FORGE_CLUSTER_NAME: aptos-forge-1 - FORGE_NAMESPACE: forge-haproxy-${{ needs.determine-test-metadata.outputs.BRANCH_HASH }} - FORGE_RUNNER_DURATION_SECS: 600 # Run for 10 minutes - FORGE_ENABLE_HAPROXY: true - FORGE_TEST_SUITE: realistic_env_max_load - POST_TO_SLACK: true + COMMENT_HEADER: forge-indexer + FORGE_TEST_SUITE: indexer_test + FORGE_ENABLE_INDEXER: true