diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 6cdd0bd4a..00f51054e 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -6,9 +6,10 @@ jobs: linter-check: runs-on: ubuntu-latest steps: - - uses: actions/setup-go@v2 + - uses: actions/setup-go@v3 with: - go-version: '1.16.x' + go-version: ">=1.18.0" + check-latest: true - uses: actions/checkout@v2 - name: Run linter - run: go run build/ci.go lint \ No newline at end of file + run: go run build/ci.go lint diff --git a/.github/workflows/on-pr.yml b/.github/workflows/on-pr.yml index af20fb410..2b05dcda5 100644 --- a/.github/workflows/on-pr.yml +++ b/.github/workflows/on-pr.yml @@ -3,64 +3,5 @@ name: Build and test on: [pull_request] jobs: - build: - name: Run docker build - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Run docker build - run: docker build -t vulcanize/go-ethereum . - - geth-unit-test: - name: Run geth unit test - strategy: - matrix: - go-version: [ 1.16.x] - platform: [ubuntu-latest] - runs-on: ${{ matrix.platform }} - env: - GO111MODULE: on - GOPATH: /tmp/go - steps: - - name: Create GOPATH - run: mkdir -p /tmp/go - - - name: Install Go - uses: actions/setup-go@v2 - with: - go-version: ${{ matrix.go-version }} - - - name: Checkout code - uses: actions/checkout@v2 - - - name: Run unit tests - run: | - make test - - statediff-unit-test: - name: Run state diff unit test - env: - GOPATH: /tmp/go - strategy: - matrix: - go-version: [ 1.16.x] - platform: [ubuntu-latest] - runs-on: ${{ matrix.platform }} - steps: - - name: Create GOPATH - run: mkdir -p /tmp/go - - - name: Install Go - uses: actions/setup-go@v2 - with: - go-version: ${{ matrix.go-version }} - - - name: Checkout code - uses: actions/checkout@v2 - - - name: Start database - run: docker-compose -f docker-compose.yml up -d ipld-eth-db - - - name: Run unit tests - run: - make statedifftest \ No newline at end of file + run-tests: + uses: ./.github/workflows/tests.yml diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index 5b8453e8f..610f8afbf 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -3,8 +3,11 @@ on: release: types: [published] jobs: + run-tests: + uses: ./.github/workflows/tests.yml build: name: Run docker build and publish + needs: run-tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 000000000..26aa10770 --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,128 @@ +name: Tests for Geth that are used in multiple jobs. + +on: + workflow_call: + +env: + stack-orchestrator-ref: ${{ github.event.inputs.stack-orchestrator-ref || 'main'}} + ipld-eth-db-ref: ${{ github.event.inputs.ipld-ethcl-db-ref || 'main' }} + GOPATH: /tmp/go + +jobs: + build: + name: Run docker build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Run docker build + run: docker build -t vulcanize/go-ethereum . + + geth-unit-test: + name: Run geth unit test + runs-on: ubuntu-latest + env: + GO111MODULE: on + steps: + - name: Create GOPATH + run: mkdir -p /tmp/go + + - uses: actions/setup-go@v3 + with: + go-version: ">=1.18.0" + check-latest: true + + - name: Checkout code + uses: actions/checkout@v2 + + - name: Run unit tests + run: | + make test + + statediff-unit-test: + name: Run state diff unit test + runs-on: ubuntu-latest + steps: + - name: Create GOPATH + run: mkdir -p /tmp/go + + - uses: actions/setup-go@v3 + with: + go-version: ">=1.18.0" + check-latest: true + + - name: Checkout code + uses: actions/checkout@v2 + + - name: Start database + run: docker-compose -f docker-compose.yml up -d ipld-eth-db + + - name: Run unit tests + run: make statedifftest + + private-network-test: + name: Start Geth in a private network. + runs-on: ubuntu-latest + steps: + - name: Create GOPATH + run: mkdir -p /tmp/go + + - uses: actions/setup-go@v3 + with: + go-version: ">=1.18.0" + check-latest: true + + - name: Checkout code + uses: actions/checkout@v3 + with: + path: "./go-ethereum" + + - uses: actions/checkout@v3 + with: + ref: ${{ env.stack-orchestrator-ref }} + path: "./stack-orchestrator/" + repository: vulcanize/stack-orchestrator + fetch-depth: 0 + + - uses: actions/checkout@v3 + with: + ref: ${{ env.ipld-eth-db-ref }} + repository: vulcanize/ipld-eth-db + path: "./ipld-eth-db/" + fetch-depth: 0 + + - name: Create config file + run: | + echo vulcanize_ipld_eth_db=$GITHUB_WORKSPACE/ipld-eth-db/ > $GITHUB_WORKSPACE/config.sh + echo vulcanize_go_ethereum=$GITHUB_WORKSPACE/go-ethereum/ >> $GITHUB_WORKSPACE/config.sh + echo db_write=true >> $GITHUB_WORKSPACE/config.sh + cat $GITHUB_WORKSPACE/config.sh + + - name: Compile Geth + run: | + cd $GITHUB_WORKSPACE/stack-orchestrator/helper-scripts + ./compile-geth.sh -e docker -p $GITHUB_WORKSPACE/config.sh + cd - + + - name: Run docker compose + run: | + docker-compose \ + -f "$GITHUB_WORKSPACE/stack-orchestrator/docker/local/docker-compose-db.yml" \ + -f "$GITHUB_WORKSPACE/stack-orchestrator/docker/local/docker-compose-go-ethereum.yml" \ + --env-file $GITHUB_WORKSPACE/config.sh \ + up -d --build + + - name: Make sure the /root/transaction_info/STATEFUL_TEST_DEPLOYED_ADDRESS exists within a certain time frame. + shell: bash + run: | + COUNT=0 + ATTEMPTS=10 + until $(docker compose -f "$GITHUB_WORKSPACE/stack-orchestrator/docker/local/docker-compose-go-ethereum.yml" cp go-ethereum:/root/transaction_info/STATEFUL_TEST_DEPLOYED_ADDRESS ./STATEFUL_TEST_DEPLOYED_ADDRESS) || [[ $COUNT -eq $ATTEMPTS ]]; do echo -e "$(( COUNT++ ))... \c"; sleep 10; done + [[ $COUNT -eq $ATTEMPTS ]] && echo "Could not find the successful contract deployment" && (exit 1) + cat ./STATEFUL_TEST_DEPLOYED_ADDRESS + sleep 15; + + - name: Create a new transaction. + shell: bash + run: | + docker compose -f "$GITHUB_WORKSPACE/stack-orchestrator/docker/local/docker-compose-go-ethereum.yml" exec go-ethereum /bin/bash /root/transaction_info/NEW_TRANSACTION + echo $? diff --git a/statediff/known_gaps.go b/statediff/known_gaps.go index 682903ed4..df6860c83 100644 --- a/statediff/known_gaps.go +++ b/statediff/known_gaps.go @@ -100,7 +100,7 @@ func minMax(array []*big.Int) (*big.Int, *big.Int) { // 3. Write to prometheus directly. // 4. Logs and error. func (kg *KnownGapsState) pushKnownGaps(startingBlockNumber *big.Int, endingBlockNumber *big.Int, checkedOut bool, processingKey int64) error { - if startingBlockNumber.Cmp(endingBlockNumber) != -1 { + if startingBlockNumber.Cmp(endingBlockNumber) == 1 { return fmt.Errorf("Starting Block %d, is greater than ending block %d", startingBlockNumber, endingBlockNumber) } knownGap := models.KnownGapsModel{