Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(ci): adjusts mining-tests
Browse files Browse the repository at this point in the history
jurajpiar committed May 6, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
1 parent acc1c99 commit f71f7e7
Showing 4 changed files with 168 additions and 55 deletions.
207 changes: 152 additions & 55 deletions .github/workflows/build_and_test.yml
Original file line number Diff line number Diff line change
@@ -155,63 +155,160 @@ jobs:
if: always()

mining-tests:
# needs: build
runs-on: ubuntu-latest
defaults:
run:
working-directory: .

# services:
# bitcoind01:
# image: kylemanna/bitcoind:latest
# env:
# DISABLEWALLET: "0"
# ports:
# - 31591:31591
# # options: >-
# # --entrypoint "/usr/local/bin/bitcoind
#
# bitcoind02:
# image: kylemanna/bitcoind:latest
# env:
# DISABLEWALLET: "0"
# ports:
# - 31592:31592
# # options: >-
# # --entrypoint "/usr/local/bin/bitcoind

steps:
- name: Checkout code
# - name: Setup System Tools
# run: |
# sudo apt-get update -y
## sudo apt-get install -y curl
# - name: Install Node 12
# run: |
# sudo apt-get install -y fnm

- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: '12'
- name: Check Node.js version
run: node --version

- name: Checkout Mining Integration Tests Repository
uses: actions/checkout@v2
with:
repository: rsksmart/mining-integration-tests
# ref: ${{ secrets.MINING_INTEGRATION_TESTS_REF }}
# token: ${{ secrets.GITHUB_TOKEN }}
path: mining-integration-tests

# - 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@v2
with:
path: |
node_modules
key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: Install Mining Integration Tests dependencies
working-directory: mining-integration-tests
run: |
npm install
#
# - name: Start Bitcoin nodes
# run: |
# docker run -itd bitcoind01 /usr/local/bin/bitcoind -printtoconsole -regtest -debug -server -listen -port=31591 -connect=localhost:31592 -rpcbind=0.0.0.0:32591 -rpcallowip=0.0.0.0/0 -rpcuser=admin -rpcpassword=admin
# docker run -itd bitcoind02 /usr/local/bin/bitcoind -printtoconsole -regtest -debug -server -listen -port=31592 -connect=localhost:31591 -rpcbind=0.0.0.0:32591 -rpcallowip=0.0.0.0/0 -rpcuser=admin -rpcpassword=admin
# - name: Start Bitcoin nodes
# run: |
# docker run -d --name bitcoind01 -p 31591:31591 --entrypoint "/usr/local/bin/bitcoind" kylemanna/bitcoind:latest -printtoconsole -regtest -debug -server -listen -port=31591 -connect=localhost:31592 -rpcbind=0.0.0.0:32591 -rpcallowip=0.0.0.0/0 -rpcuser=admin -rpcpassword=admin
# docker run -d --name bitcoind02 -p 31592:31592 --entrypoint "/usr/local/bin/bitcoind" kylemanna/bitcoind:latest -printtoconsole -regtest -debug -server -listen -port=31592 -connect=localhost:31591 -rpcbind=0.0.0.0:32592 -rpcallowip=0.0.0.0/0 -rpcuser=admin -rpcpassword=admin
#
#
# - name: Test bitcoin nodes
# run: |
# echo Test bitcoin node 1
# curl -s -u admin:admin --data-binary '{"jsonrpc":"1.0","id":"curltext","method":"getblockchaininfo","params":[]}' -H 'content-type:text/plain;' http://localhost:32591
# echo Test bitcoin node 2
# curl -s -u admin:admin --data-binary '{"jsonrpc":"1.0","id":"curltext","method":"getblockchaininfo","params":[]}' -H 'content-type:text/plain;' http://localhost:32592
#
# - name: Generate BTC blocks
# working-directory: mining-integration-tests
# run: |
# node generateBtcBlocks.js

- name: Run Mining Integration Tests
run: |
pwd
ls -al
chmod +x ci/mining-test/run.sh
sh ci/mining-test/run.sh
- name: Checkout RSKj
uses: actions/checkout@v2

- name: Setup
run: |
sudo apt-get update
sudo apt-get install -y curl jq
- name: Mining integration tests
run: |
function wait_for_completion() {
build_number=$1
poll_interval=60
i=0
max_count=20
while [ $i -lt $max_count ]; do
res=$(curl -Ssfu "${{ secrets.GITHUB_TOKEN }}" \
"https://circleci.com/api/v1.1/project/github/$MIT_ORGANIZATION/$MIT_PROJECT/$build_numbe" \
| jq -r '[.status, .conclusion] | @tsv')
IFS=" " set -- $res
status=${1:-}
conclusion=${2:-}
if [ "$status" = "queued" ]; then
echo "Build is enqueued. Waiting..."
else
echo "[$i/$max_count] Waiting for build $build_url ..."
i=$((i + 1))
fi
if [ "$status" = "completed" ]; then
echo "Build $build_number finished. Outcome: \"$conclusion\"."
test "$conclusion" = "success"
return $?
fi
sleep $poll_interval
done
return 1
}
json_payload='{
"ref": "'${{ github.ref }}'",
"inputs": {
"RSKJ_CIRCLE_BRANCH": "${{ github.ref }}",
"RSKJ_CIRCLE_USERNAME": "${{ github.actor }}",
"RSKJ_CIRCLE_REPONAME": "${{ github.repository }}",
"RSKJ_PR_NUMBER": "${{ github.event.pull_request.number }}",
"RSKJ_CIRCLE_SHA1": "${{ github.sha }}"
}
}'
res=$(curl -Ssf -u "${{ secrets.GITHUB_TOKEN }}:" \
-H "Content-type: application/json" -d "$json_payload" \
"https://circleci.com/api/v1.1/project/github/$MIT_ORGANIZATION/$MIT_PROJECT/tree/$MIT_BRANCH" \
| jq -r '[.url, .id] | @tsv')
IFS=" " set -- $res
build_url=$1
build_num=$2
echo "Running mining integration tests. Follow it on:\n\n $build_url\n\n"
sleep 10
wait_for_completion "$build_num"
- name: Setup Java JDK
uses: actions/setup-java@v2
with:
java-version: '17'
distribution: 'temurin'

- name: Verify Java installation
run: java -version

- name: Get RSKj version
run: |
version=$(tr -d "'\"" < rskj-core/src/main/resources/version.properties \
| cut -d = -f 2- | paste -sd - -)
- uses: actions/cache@v4
name: Restore build
with:
path: |
build
key: ${{ runner.os }}-build-${{ hashFiles('build') }}
restore-keys: |
${{ runner.os }}-build-
- name: Start RSKj
run: |
java -Drsk.conf.file=./rsk-integration-test.conf -cp rskj-core/build/libs/rskj-core-"$version"-all.jar co.rsk.Start --regtest
rskpid=$!
echo "RSKj PID: $rskpid"
until nc -z 127.0.0.1 4444
do
echo "Waiting for RskJ..."
sleep 1
done
- name: Run Mining Integration Tests
working-directory: mining-integration-tests
run: |
npm test
- name: Stop RSKj
if: always()
run: |
kill $rskpid
- name: Stop and Remove Docker Containers
if: always()
run: |
/usr/bin/docker stop bitcoind01 bitcoind02
/usr/bin/docker rm bitcoind01 bitcoind02
2 changes: 2 additions & 0 deletions ci/mining-test/bitcoind01.Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
FROM kylemanna/bitcoind:latest
CMD ["/usr/local/bin/bitcoind", "-printtoconsole", "-regtest", "-debug", "-server", "-listen", "-port=31591", "-connect=localhost:31592", "-rpcbind=0.0.0.0:32591", "-rpcallowip=0.0.0.0/0", "-rpcuser=admin", "-rpcpassword=admin" ]
2 changes: 2 additions & 0 deletions ci/mining-test/bitcoind02.Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
FROM kylemanna/bitcoind:latest
CMD ["/usr/local/bin/bitcoind", "-printtoconsole", "-regtest", "-debug", "-server", "-listen", "-port=31592", "-connect=localhost:31591", "-rpcbind=0.0.0.0:32592", "-rpcallowip=0.0.0.0/0", "-rpcuser=admin", "-rpcpassword=admin" ]
12 changes: 12 additions & 0 deletions ci/mining-test/run.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
sudo docker run -d --name bitcoind01 -p 31591:31591 --entrypoint "/usr/local/bin/bitcoind" kylemanna/bitcoind:latest -printtoconsole -regtest -debug -server -listen -port=31591 -connect=localhost:31592 -rpcbind=0.0.0.0:32591 -rpcallowip=0.0.0.0/0 -rpcuser=admin -rpcpassword=admin
sudo docker run -d --name bitcoind02 -p 31592:31592 --entrypoint "/usr/local/bin/bitcoind" kylemanna/bitcoind:latest -printtoconsole -regtest -debug -server -listen -port=31592 -connect=localhost:31591 -rpcbind=0.0.0.0:32592 -rpcallowip=0.0.0.0/0 -rpcuser=admin -rpcpassword=admin

sleep 10

echo Test bitcoin node 1
curl -s -u admin:admin --data-binary '{"jsonrpc":"1.0","id":"curltext","method":"getblockchaininfo","params":[]}' -H 'content-type:text/plain;' http://localhost:32591
echo Test bitcoin node 2
curl -s -u admin:admin --data-binary '{"jsonrpc":"1.0","id":"curltext","method":"getblockchaininfo","params":[]}' -H 'content-type:text/plain;' http://localhost:32592

(cd mining-integration-tests && node generateBtcBlocks.js || exit 1)

0 comments on commit f71f7e7

Please sign in to comment.