diff --git a/.github/workflows/relay.yml b/.github/workflows/relay.yml index 67921b870..6f368a102 100644 --- a/.github/workflows/relay.yml +++ b/.github/workflows/relay.yml @@ -63,3 +63,90 @@ jobs: /tmp/gotest.log ./race_coverage.txt ./integration_coverage.txt + + get_projectserum_version: + name: Get ProjectSerum Version + runs-on: ubuntu-latest + outputs: + projectserum_version: ${{ steps.psversion.outputs.projectserum_version }} + steps: + - name: Checkout the repo + uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + - name: Get ProjectSerum Version + id: psversion + uses: ./.github/actions/projectserum_version + + build_wrapped_anchor_image: + name: build contract test image + runs-on: ubuntu-latest + needs: [get_projectserum_version] + defaults: + run: + working-directory: contracts + steps: + - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + - name: cache docker build image + id: cache-image + uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + with: + path: contracts/docker-build.tar + key: ${{ runner.os }}-docker-pnpm-build-${{ needs.get_projectserum_version.outputs.projectserum_version }}-${{ hashFiles('**/Cargo.lock') }} + - name: build & save image + if: steps.cache-image.outputs.cache-hit != 'true' + run: | + docker buildx build . -t chainlink-solana:build --build-arg ANCHOR_CLI=${{ needs.get_projectserum_version.outputs.projectserum_version }} + docker save chainlink-solana > docker-build.tar + + relay_run_interface_tests: + name: Relay Run Interface Tests + runs-on: ubuntu-latest-8cores-32GB + needs: [get_projectserum_version, build_wrapped_anchor_image] + steps: + - name: Checkout sources + uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + + - name: Cache cargo target dir + uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + with: + path: contracts/target + key: ${{ runner.os }}-v2-cargo-build-target-${{ hashFiles('**/Cargo.lock') }} + + - name: cache docker build image + id: cache-image + uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + with: + fail-on-cache-miss: true + path: contracts/docker-build.tar + key: ${{ runner.os }}-docker-pnpm-build-${{ needs.get_projectserum_version.outputs.projectserum_version }}-${{ hashFiles('**/Cargo.lock') }} + + - name: load cached image + run: | + docker load --input ./contracts/docker-build.tar + + - name: Setup go + uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 + with: + go-version-file: "./integration-tests/go.mod" + check-latest: true + cache-dependency-path: "./integration-tests/go.sum" + + - name: Install gotestloghelper + run: go install github.com/smartcontractkit/chainlink-testing-framework/tools/gotestloghelper@latest + + - name: Install Solana CLI + run: ./scripts/install-solana-ci.sh + + - name: Test Relay Interfaces + run: | + set -eoux pipefail + # compile artifacts + cd contracts && solana-keygen new -o id.json --no-bip39-passphrase + docker run -v "$(pwd)/../":/repo chainlink-solana:build bash -c "\ + set -eoux pipefail &&\ + RUSTUP_HOME=\"/root/.rustup\" &&\ + FORCE_COLOR=1 &&\ + cd /repo/contracts &&\ + anchor build" + + cd .. + make test_relay_integration \ No newline at end of file diff --git a/Makefile b/Makefile index 0f3fd8843..74ff0753c 100644 --- a/Makefile +++ b/Makefile @@ -92,6 +92,10 @@ test_smoke: cd ./integration-tests &&\ SELECTED_NETWORKS=SIMULATED go test -timeout 24h -count=1 -json $(args) -run TestSolanaOCRV2Smoke ./smoke 2>&1 | tee /tmp/gotest.log | gotestloghelper -json -tlogprefix -singlepackage -color +test_relay_integration: + cd ./integration-tests &&\ + go test -timeout 20m -count=1 -json $(args) ./relayinterface/... 2>&1 | tee /tmp/gotest.log | gotestloghelper -json -tlogprefix -singlepackage -color + .PHONY: gomods gomods: ## Install gomods go install github.com/jmank88/gomods@v0.1.3 diff --git a/integration-tests/components/chain_components_test.go b/integration-tests/relayinterface/chain_components_test.go similarity index 98% rename from integration-tests/components/chain_components_test.go rename to integration-tests/relayinterface/chain_components_test.go index 0892c1f4f..d3ccf13a5 100644 --- a/integration-tests/components/chain_components_test.go +++ b/integration-tests/relayinterface/chain_components_test.go @@ -1,7 +1,7 @@ /* -Package components contains the interface tests for chain components. +Package relayinterface contains the interface tests for chain components. */ -package components +package relayinterface import ( "context" @@ -330,7 +330,7 @@ func (h *helper) sendInstruction( ctx := tests.Context(t) - recent, err := h.rpcClient.GetRecentBlockhash(ctx, rpc.CommitmentFinalized) + recent, err := h.rpcClient.GetLatestBlockhash(ctx, rpc.CommitmentFinalized) require.NoError(t, err) tx, err := solana.NewTransaction(