diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 637aaf012e..c437de2bde 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -45,18 +45,50 @@ jobs: - run: ./scripts/coverage.sh shell: bash - build_image: - name: Build Docker Image - runs-on: ubuntu-20.04 + e2e_precompile: + name: e2e precompile tests + runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - run: echo ${{ secrets.docker_pass }} | docker login --username ${{ secrets.docker_username }} --password-stdin + - name: Git checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Set up Go + uses: actions/setup-go@v3 + with: + go-version: '~1.20.12' + check-latest: true + - name: Use Node.js + uses: actions/setup-node@v3 + with: + node-version: "18.15" + - name: NPM Clean Install + run: npm ci + working-directory: ./contracts + - name: Hardhat Clean + run: npx hardhat clean + working-directory: ./contracts + - name: Hardhat Compile + run: npx hardhat compile + working-directory: ./contracts + - name: Install AvalancheGo Release shell: bash - - run: CURRENT_BRANCH=${{ github.head_ref || github.ref_name }} PUSH_DOCKER_IMAGE=true ./scripts/build_image.sh + run: BASEDIR=/tmp/e2e-test AVALANCHEGO_BUILD_PATH=/tmp/e2e-test/avalanchego ./scripts/install_avalanchego_release.sh + - name: Build Subnet-EVM Plugin Binary shell: bash - - e2e_test: - name: e2e tests + run: ./scripts/build.sh /tmp/e2e-test/avalanchego/plugins/srEXiWaHuhNyGwPUi444Tu47ZEDwxTWrbQiuD7FmgSAQ6X7Dy + - name: Run E2E Precompile Tests + shell: bash + run: AVALANCHEGO_BUILD_PATH=/tmp/e2e-test/avalanchego DATA_DIR=/tmp/e2e-test/precompile-data ./scripts/run_ginkgo_precompile.sh + - name: Upload Artifact + if: always() + uses: actions/upload-artifact@v3 + with: + name: subnet-evm-e2e-logs-precompile + path: /tmp/network-runner-root-data*/ + retention-days: 5 + e2e_warp: + name: e2e warp tests runs-on: ubuntu-latest steps: - name: Git checkout @@ -87,16 +119,52 @@ jobs: - name: Build Subnet-EVM Plugin Binary shell: bash run: ./scripts/build.sh /tmp/e2e-test/avalanchego/plugins/srEXiWaHuhNyGwPUi444Tu47ZEDwxTWrbQiuD7FmgSAQ6X7Dy - - name: Run E2E Tests - shell: bash - run: AVALANCHEGO_BUILD_PATH=/tmp/e2e-test/avalanchego DATA_DIR=/tmp/e2e-test/data ./scripts/run_ginkgo.sh - name: Run Warp E2E Tests shell: bash - run: AVALANCHEGO_BUILD_PATH=/tmp/e2e-test/avalanchego DATA_DIR=/tmp/e2e-test/data ./scripts/run_ginkgo_warp.sh + run: AVALANCHEGO_BUILD_PATH=/tmp/e2e-test/avalanchego DATA_DIR=/tmp/e2e-test/warp-data ./scripts/run_ginkgo_warp.sh + - name: Upload Artifact + if: always() + uses: actions/upload-artifact@v3 + with: + name: subnet-evm-e2e-logs-warp + path: /tmp/network-runner-root-data*/ + retention-days: 5 + e2e_load: + name: e2e load tests + runs-on: ubuntu-latest + steps: + - name: Git checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Set up Go + uses: actions/setup-go@v3 + with: + go-version: '~1.20.12' + check-latest: true + - name: Install AvalancheGo Release + shell: bash + run: BASEDIR=/tmp/e2e-test AVALANCHEGO_BUILD_PATH=/tmp/e2e-test/avalanchego ./scripts/install_avalanchego_release.sh + - name: Build Subnet-EVM Plugin Binary + shell: bash + run: ./scripts/build.sh /tmp/e2e-test/avalanchego/plugins/srEXiWaHuhNyGwPUi444Tu47ZEDwxTWrbQiuD7FmgSAQ6X7Dy + - name: Run E2E Load Tests + shell: bash + run: AVALANCHEGO_BUILD_PATH=/tmp/e2e-test/avalanchego DATA_DIR=/tmp/e2e-test/load-data ./scripts/run_ginkgo_load.sh - name: Upload Artifact if: always() uses: actions/upload-artifact@v3 with: - name: subnet-evm-e2e-logs + name: subnet-evm-e2e-logs-load path: /tmp/network-runner-root-data*/ retention-days: 5 + + build_image: + name: Build Docker Image + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v3 + - run: echo ${{ secrets.docker_pass }} | docker login --username ${{ secrets.docker_username }} --password-stdin + shell: bash + - run: CURRENT_BRANCH=${{ github.head_ref || github.ref_name }} PUSH_DOCKER_IMAGE=true ./scripts/build_image.sh + shell: bash diff --git a/scripts/run_ginkgo_load.sh b/scripts/run_ginkgo_load.sh new file mode 100755 index 0000000000..16f36cf398 --- /dev/null +++ b/scripts/run_ginkgo_load.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash +set -e + +# This script assumes that an AvalancheGo and Subnet-EVM binaries are available in the standard location +# within the $GOPATH +# The AvalancheGo and PluginDir paths can be specified via the environment variables used in ./scripts/run.sh. + +# Load the versions +SUBNET_EVM_PATH=$( + cd "$(dirname "${BASH_SOURCE[0]}")" + cd .. && pwd +) + +source "$SUBNET_EVM_PATH"/scripts/constants.sh + +source "$SUBNET_EVM_PATH"/scripts/versions.sh + +# Build ginkgo +# to install the ginkgo binary (required for test build and run) +go install -v github.com/onsi/ginkgo/v2/ginkgo@${GINKGO_VERSION} + +TEST_SOURCE_ROOT=$(pwd) + +ACK_GINKGO_RC=true ginkgo build ./tests/load + +./tests/load/load.test \ + --ginkgo.vv \ + --ginkgo.label-filter=${GINKGO_LABEL_FILTER:-""} diff --git a/scripts/run_ginkgo.sh b/scripts/run_ginkgo_precompile.sh similarity index 86% rename from scripts/run_ginkgo.sh rename to scripts/run_ginkgo_precompile.sh index 790b3bb9ca..7588b9528d 100755 --- a/scripts/run_ginkgo.sh +++ b/scripts/run_ginkgo_precompile.sh @@ -21,15 +21,9 @@ go install -v github.com/onsi/ginkgo/v2/ginkgo@${GINKGO_VERSION} TEST_SOURCE_ROOT=$(pwd) -ACK_GINKGO_RC=true ginkgo build ./tests/load - # By default, it runs all e2e test cases! # Use "--ginkgo.skip" to skip tests. # Use "--ginkgo.focus" to select tests. TEST_SOURCE_ROOT="$TEST_SOURCE_ROOT" ginkgo run -procs=5 tests/precompile \ --ginkgo.vv \ --ginkgo.label-filter=${GINKGO_LABEL_FILTER:-""} - -./tests/load/load.test \ - --ginkgo.vv \ - --ginkgo.label-filter=${GINKGO_LABEL_FILTER:-""}