Skip to content

using mining tests fork #178

using mining tests fork

using mining tests fork #178

name: Build and Test
on:
push:
branches:
- '**'
pull_request:
types: [opened, reopened, ready_for_review]
branches:
- '**'
jobs:
# build:
# runs-on: ubuntu-latest
# container:
# image: openjdk:8-jdk
# env:
# _JAVA_OPTIONS: "-Xmx3G -Xms2G"
# defaults:
# run:
# working-directory: .
# steps:
# - uses: actions/checkout@v2
# - name: Setup System Tools
# run: |
# apt update -y
# apt install -y gnupg2 curl
# - name: Install Node.js
# run: |
# curl -fsSL https://deb.nodesource.com/setup_16.x | bash -
# apt-get install -y nodejs
# - name: Check Node.js version
# run: node --version
# - name: Verify files
# run: |
# curl -sSL https://secchannel.rsk.co/SUPPORT.asc | gpg2 --import -
# gpg2 --verify SHA256SUMS.asc && sha256sum --check SHA256SUMS.asc
#
# - uses: actions/cache@v4
# name: Cache Gradle
# with:
# path: |
# .gradle/caches
# gradle/wrapper
# key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
# restore-keys: |
# ${{ runner.os }}-gradle-
#
# - uses: actions/cache@v4
# name: Cache build
# with:
# path: |
# build
# key: ${{ runner.os }}-build-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
# restore-keys: |
# ${{ runner.os }}-build-
#
# - name: Build
# run: |
# ./configure.sh
# ./gradlew --no-daemon dependencies
# ./gradlew --no-daemon --stacktrace build -x test
# ls -la ./gradle/wrapper/gradle-wrapper.jar
#
# sonarqube:
# needs: build
# runs-on: ubuntu-latest
# container:
# image: eclipse-temurin:17-jdk
# defaults:
# run:
# working-directory: .
# steps:
# - uses: actions/checkout@v2
# - name: Run SonarQube analysis
# run: |
# echo "Installing git"
# apt-get update && apt-get install -yqq git
# extra_flags=""
# echo "Get GH event type"
# event_name="${{ github.event_name }}"
# if [ "$event_name" = "pull_request" ]; then
# echo "Setting up PR analysis"
# echo "switch to master"
# git branch -f master origin/master
# pr_number=${{ github.event.pull_request.number }}
# echo "PR number: $pr_number"
# extra_flags="-Dsonar.pullrequest.base=master -Dsonar.pullrequest.branch=${{ github.head_ref }} -Dsonar.pullrequest.key=$pr_number"
# echo "PR analysis flags: $extra_flags"
# else
# echo "Setting up branch analysis"
# extra_flags="-Dsonar.branch.name=master"
# echo "Branch analysis flags: $extra_flags"
# fi
#
# sonar_url=${{ secrets.SONAR_URL }}
# sonar_token=${{ secrets.SONAR_TOKEN }}
# echo "Event name: $event_name"
# echo "Sonar URL: $sonar_url"
#
# echo "Running SonarQube analysis"
# ./configure.sh
# ./gradlew sonarqube --no-daemon -x build -x test $extra_flags \
# -Dsonar.organization=rsksmart -Dsonar.host.url="$sonar_url" -Dsonar.login="$sonar_token"
#
# tests:
# needs: build
# runs-on: ubuntu-latest
# container:
# image: openjdk:8-jdk
# defaults:
# run:
# working-directory: .
# steps:
# - uses: actions/checkout@v2
#
# - name: Setup System Tools
# run: |
# apt update -y
# apt install -y curl
# - name: Install Node.js
# run: |
# curl -fsSL https://deb.nodesource.com/setup_16.x | bash -
# apt-get install -y nodejs
# - name: Check Node.js version
# run: node --version
#
# - uses: actions/cache@v4
# name: Restore gradle cache
# with:
# path: |
# .gradle/caches
# gradle/wrapper
# key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
# restore-keys: |
# ${{ runner.os }}-gradle-
#
# - name: Get Gradle jar
# run: |
# ./configure.sh
#
# - name: Unit tests
# run: |
# chmod +x ./gradlew
# ./gradlew --no-daemon --stacktrace test
# - name: Integration tests
# run: |
# chmod +x ./gradlew
# ./gradlew --no-daemon --stacktrace test
#
# - name: Save test results
# run: |
# mkdir -p ~/junit/
# find rskj-core/build/test-results -type f -name "*.xml" -exec cp {} ~/junit/ \;
# if: always()
mining-tests:
# needs: build
runs-on: ubuntu-latest
container:
image: openjdk:8-jdk
defaults:
run:
working-directory: .
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup System Tools
run: |
apt-get update -y
apt-get install -y jq lsof
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: '21'
- name: Check Node.js version
run: node --version
- name: Checkout Mining Integration Tests Repository
uses: actions/checkout@v2
with:
repository: jurajpiar/mining-integration-tests
# ref: ${{ secrets.MINING_INTEGRATION_TESTS_REF }}
# token: ${{ secrets.GITHUB_TOKEN }}
path: mining-integration-tests
- name: Start bitcoin containers
uses: docker://docker
with:
args: |
docker compose --file mining-integration-tests/docker-compose.yml up -d
- name: Wait for Bitcoin nodes to initialize
run: sleep 30
- name: Check bitcoin nodes
uses: docker://docker
with:
args: |
docker ps -a
- name : Create common network
uses: docker://docker
with:
args: |
docker network create mining-integration-tests
- name: Connect bitcoind1 node to common network
uses: docker://docker
with:
args: |
docker network connect mining-integration-tests bitcoind1
- name: Check network
uses: docker://docker
with:
args: |
docker network ls
- name: Check bitcoind1 logs
uses: docker://docker
with:
args: |
docker logs bitcoind1
- name: Check bitcoind1 logs
uses: docker://docker
with:
args: |
docker logs bitcoind2
- name: Test bitcoin node 1 as localhost
if: always()
run: |
echo Test bitcoin node 1
curl -v -s -u admin:admin --data-binary '{"jsonrpc":"1.0","id":"curltext","method":"getblockchaininfo","params":[]}' -H 'content-type:text/plain;' http://localhost:32591
- name: Test bitcoin nodes as bitcoind1
if: always()
run: |
echo Test bitcoin node 1
curl -v -s -u admin:admin --data-binary '{"jsonrpc":"1.0","id":"curltext","method":"getblockchaininfo","params":[]}' -H 'content-type:text/plain;' http://bitcoind1:32591
- name: Test bitcoin node 2 as localhost
if: always()
run: |
echo Test bitcoin node 2
curl -v -s -u admin:admin --data-binary '{"jsonrpc":"1.0","id":"curltext","method":"getblockchaininfo","params":[]}' -H 'content-type:text/plain;' http://localhost:32592
- name: Test bitcoin nodes as bitcoind2
if: always()
run: |
echo Test bitcoin node 2
curl -v -s -u admin:admin --data-binary '{"jsonrpc":"1.0","id":"curltext","method":"getblockchaininfo","params":[]}' -H 'content-type:text/plain;' http://bitcoind2:32592
# - uses: actions/cache@v2
# with:
# path: |
# node_modules
# key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }}
# restore-keys: |
# ${{ runner.os }}-node-
- name: "Modify test suite config"
run: |
ls -al mining-integration-tests
cat mining-integration-tests/config.json
echo "bitcoind url before"
jq -r '.bitcoind.url' "mining-integration-tests/config.json"
jq --arg new_url "localhost" '.bitcoind.url = $new_url' "mining-integration-tests/config.json" > temp.json && mv temp.json "mining-integration-tests/config.json"
echo "bitcoind url after"
jq -r '.bitcoind.url' "mining-integration-tests/config.json"
- name: Install Mining Integration Tests dependencies
working-directory: mining-integration-tests
run: |
npm install
- name: Generate BTC blocks
working-directory: mining-integration-tests
run: |
node --unhandled-rejections=strict generateBtcBlocks.js
- name: Setup Java JDK
uses: actions/setup-java@v2
with:
java-version: '17'
distribution: 'temurin'
- name: Verify Java installation
run: java -version
# - uses: actions/cache@v4
# name: Restore gradle cache
# with:
# path: |
# .gradle/caches
# gradle/wrapper
# key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
# restore-keys: |
# ${{ runner.os }}-gradle-
#
- name: Get Gradle jar
run: |
./configure.sh
# - uses: actions/cache@v4
# name: Restore build
# with:
# path: |
# rsk-core/build
# key: ${{ runner.os }}-build-${{ hashFiles('build') }}
# restore-keys: |
# ${{ runner.os }}-build-
- name: Build
run: |
./configure.sh
./gradlew --no-daemon dependencies
./gradlew --no-daemon --stacktrace build -x test
ls -la ./gradle/wrapper/gradle-wrapper.jar
- name: Start RSKj
run: |
version=$(tr -d "'\"" < rskj-core/src/main/resources/version.properties \
| cut -d = -f 2- | paste -sd - -)
ls -la rskj-core/build/libs/rskj-core-"$version"-all.jar
java -Drsk.conf.file=./rsk-integration-test.conf -cp rskj-core/build/libs/rskj-core-"$version"-all.jar co.rsk.Start --regtest
# - name: Run Mining Integration Tests
# run: |
# chmod +x mining-test/run.sh
# ./mining-test/run.sh
- name: Run Mining Integration Tests
working-directory: mining-integration-tests
run: |
npm test
- name: Review test results
working-directory: mining-integration-tests
if: always()
run: |
cat ./Results/mocha/Test-Results.xml
- name: Stop and Remove Docker Containers
uses: docker://docker
if: always()
with:
args: |
docker stop bitcoind1 bitcoind2
docker rm bitcoind1 bitcoind2