diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 338266336d..b15be2dd92 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -54,52 +54,3 @@ jobs: shell: bash - run: CURRENT_BRANCH=${{ github.head_ref || github.ref_name }} PUSH_DOCKER_IMAGE=true ./scripts/build_image.sh shell: bash - - e2e_test: - name: e2e 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: 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: 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 Precompile Tests - shell: bash - run: AVALANCHEGO_BUILD_PATH=/tmp/e2e-test/avalanchego DATA_DIR=/tmp/e2e-test/data ./scripts/run_ginkgo_precompile.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 - - name: Run E2E Simulator Tests - shell: bash - run: AVALANCHEGO_BUILD_PATH=/tmp/e2e-test/avalanchego DATA_DIR=/tmp/e2e-test/data ./scripts/run_ginkgo_simulator.sh - - name: Upload Artifact - if: always() - uses: actions/upload-artifact@v3 - with: - name: subnet-evm-e2e-logs - path: /tmp/network-runner-root-data*/ - retention-days: 5 diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml new file mode 100644 index 0000000000..bd4ef31905 --- /dev/null +++ b/.github/workflows/e2e.yml @@ -0,0 +1,124 @@ +name: E2E Warp Tests + +on: + push: + branches: + - master + tags: + - 'v[0-9]+.[0-9]+.[0-9]+' + pull_request: + +jobs: + precompile: + name: e2e precompile 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: 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: 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 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 + warp: + name: e2e warp 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: 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: 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 Warp E2E Tests + shell: bash + 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 + 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-load + path: /tmp/network-runner-root-data*/ + retention-days: 5 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:-""}