perf: improve mem reading in Memory #1713
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build and Test | |
on: | |
push: | |
branches: | |
- "master" | |
- "*-rc" | |
pull_request: | |
types: [opened, reopened, synchronize] | |
branches: | |
- "**" | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Java & Gradle | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '17' | |
distribution: 'temurin' | |
cache: 'gradle' | |
- 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 Wrapper | |
id: cache-gradle-wrapper | |
with: | |
path: | | |
gradle/wrapper/gradle-wrapper.jar | |
key: gradle-wrapper-v1 | |
- name: Get Gradle wrapper | |
if: steps.cache-gradle-wrapper.outputs.cache-hit != 'true' | |
run: | | |
./configure.sh | |
- name: Build | |
run: | | |
./gradlew --no-daemon --stacktrace build -x test | |
- name: Archive build artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: build-files | |
path: | | |
rskj-core/build | |
smell-test: | |
needs: unit-tests-java17 | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup Java & Gradle | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '17' | |
distribution: 'temurin' | |
cache: 'gradle' | |
- uses: actions/cache/restore@v4 | |
name: Restore Gradle Wrapper | |
with: | |
path: | | |
gradle/wrapper/gradle-wrapper.jar | |
key: gradle-wrapper-v1 | |
fail-on-cache-miss: true | |
- name: Download build artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: build-files | |
path: | | |
rskj-core/build | |
- name: Download test results | |
uses: actions/download-artifact@v4 | |
with: | |
name: test-results | |
path: | | |
rskj-core/build/test-results/ | |
- name: Download test reports | |
uses: actions/download-artifact@v4 | |
with: | |
name: test-reports | |
path: | | |
rskj-core/build/reports/ | |
- name: Run SonarQube analysis | |
env: | |
GH_EVENT: ${{ github.event_name }} | |
GH_PR_NUMBER: ${{ github.event.pull_request.number }} | |
GH_PR_BASE_REF: ${{ github.base_ref }} | |
GH_PR_HEAD_REF: ${{ github.head_ref }} | |
GH_REF: ${{ github.ref }} | |
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} | |
run: | | |
if [ "$GH_EVENT" = pull_request ]; then | |
./gradlew -Dorg.gradle.jvmargs=-Xmx5g sonarqube --no-daemon -x build -x test \ | |
-Dsonar.pullrequest.base="$GH_PR_BASE_REF" \ | |
-Dsonar.pullrequest.branch="$GH_PR_HEAD_REF" \ | |
-Dsonar.pullrequest.key="$GH_PR_NUMBER" \ | |
-Dsonar.organization=rsksmart \ | |
-Dsonar.projectKey=rskj \ | |
-Dsonar.host.url="https://sonarcloud.io" \ | |
-Dsonar.junit.reportPaths=rskj-core/build/test-results/ \ | |
-Dsonar.coverage.jacoco.xmlReportPaths=rskj-core/build/reports/jacoco/test/jacocoTestReport.xml \ | |
-Dsonar.token="$SONAR_TOKEN" | |
else | |
./gradlew -Dorg.gradle.jvmargs=-Xmx5g sonarqube --no-daemon -x build -x test \ | |
-Dsonar.branch.name="$GH_REF" \ | |
-Dsonar.organization=rsksmart \ | |
-Dsonar.projectKey=rskj \ | |
-Dsonar.host.url="https://sonarcloud.io" \ | |
-Dsonar.junit.reportPaths=rskj-core/build/test-results/ \ | |
-Dsonar.coverage.jacoco.xmlReportPaths=rskj-core/build/reports/jacoco/test/jacocoTestReport.xml \ | |
-Dsonar.token="$SONAR_TOKEN" | |
fi | |
mining-tests: | |
needs: build | |
runs-on: ubuntu-latest | |
services: | |
bitcoind1: | |
image: ghcr.io/rsksmart/rskj/mit_bitcoind1:latest | |
ports: | |
- 8331:8331 | |
- 31591:31591 | |
- 32591:32591 | |
options: --name bitcoind1 | |
bitcoind2: | |
image: ghcr.io/rsksmart/rskj/mit_bitcoind2:latest | |
ports: | |
- 8332:8332 | |
- 31592:31592 | |
- 32592:32592 | |
options: --name bitcoind2 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '12.x' | |
- name: Check Node.js version | |
run: node --version | |
- name: Checkout Mining Integration Tests Repository | |
uses: actions/checkout@v4 | |
with: | |
repository: rsksmart/mining-integration-tests | |
ref: ${{ secrets.MINING_INTEGRATION_TESTS_REF }} | |
token: ${{ secrets.GITHUB_TOKEN }} | |
path: mining-integration-tests | |
- name: Install Mining Integration Tests dependencies | |
working-directory: mining-integration-tests | |
run: | | |
npm ci | |
- name: Change mining-integration-tests bitcoind url in config.json to localhost | |
working-directory: mining-integration-tests | |
run: | | |
jq 'if .bitcoind.url? then .bitcoind.url = "localhost" else error(".bitcoind.url not found") end' config.json > config.json.tmp && mv config.json.tmp config.json | |
- name: Generate BTC blocks | |
working-directory: mining-integration-tests | |
run: | | |
node --unhandled-rejections=strict generateBtcBlocks.js | |
- name: Setup Java & Gradle | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '17' | |
distribution: 'temurin' | |
cache: 'gradle' | |
- uses: actions/cache/restore@v4 | |
name: Restore Gradle Wrapper | |
with: | |
path: | | |
gradle/wrapper/gradle-wrapper.jar | |
key: gradle-wrapper-v1 | |
fail-on-cache-miss: true | |
- name: Download build artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: build-files | |
path: | | |
rskj-core/build | |
- name: Start RSKj and Run Tests | |
working-directory: mining-integration-tests | |
run: | | |
version=$(tr -d "'\"" < ../rskj-core/src/main/resources/version.properties \ | |
| cut -d = -f 2- | paste -sd - -) | |
echo "Using RskJ version $version at ../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 & rskpid=$! | |
tries=0 | |
MAX_TRIES=10 | |
while [ $tries -lt $MAX_TRIES ]; do | |
nc -z 127.0.0.1 4444 && break | |
echo "Waiting for RskJ..." | |
tries=$((tries+1)) | |
sleep 1 | |
done | |
if [ $tries -eq $MAX_TRIES ]; then | |
echo "RskJ unreachable after $MAX_TRIES attempts. Aborting." >&2 | |
exit 1 | |
fi | |
npm test | |
kill $rskpid | |
unit-tests-java17: | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Java & Gradle | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '17' | |
distribution: 'temurin' | |
cache: 'gradle' | |
- uses: actions/cache/restore@v4 | |
name: Restore Gradle Wrapper | |
with: | |
path: | | |
gradle/wrapper/gradle-wrapper.jar | |
key: gradle-wrapper-v1 | |
fail-on-cache-miss: true | |
- name: Run tests | |
run: | | |
./gradlew --no-daemon --stacktrace test | |
- name: Persist test results for sonar | |
uses: actions/upload-artifact@v4 | |
with: | |
name: test-results | |
path: | | |
rskj-core/build/test-results/ | |
- name: Persist test reports for sonar | |
uses: actions/upload-artifact@v4 | |
with: | |
name: test-reports | |
path: | | |
rskj-core/build/reports/ | |
unit-tests-java21: | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Java & Gradle | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '21' | |
distribution: 'temurin' | |
cache: 'gradle' | |
- uses: actions/cache/restore@v4 | |
name: Restore Gradle Wrapper | |
with: | |
path: | | |
gradle/wrapper/gradle-wrapper.jar | |
key: gradle-wrapper-v1 | |
fail-on-cache-miss: true | |
- name: Run tests | |
run: | | |
./gradlew --no-daemon --stacktrace test | |
integration-tests: | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Java & Gradle | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '17' | |
distribution: 'temurin' | |
cache: 'gradle' | |
- uses: actions/cache/restore@v4 | |
name: Restore Gradle Wrapper | |
with: | |
path: | | |
gradle/wrapper/gradle-wrapper.jar | |
key: gradle-wrapper-v1 | |
fail-on-cache-miss: true | |
- name: Run tests | |
run: | | |
./gradlew --no-daemon --stacktrace integrationTest |