core, rpcdaemon: unify ExecutionProcessor and EVMExecutor #1807
Workflow file for this run
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: QA - RPC Integration Tests | |
on: | |
pull_request: | |
branches: | |
- master | |
types: | |
- opened | |
- ready_for_review | |
- synchronize | |
jobs: | |
integration-test-suite: | |
runs-on: self-hosted | |
env: | |
ERIGON_DATA_DIR: /opt/erigon-versions/reference-version/datadir | |
RPC_PAST_TEST_DIR: /opt/rpc-past-tests | |
ERIGON_QA_PATH: /opt/erigon-qa | |
steps: | |
- name: Checkout Silkworm Repository | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
fetch-depth: "0" | |
- name: Checkout RPC Tests Repository & Install Requirements | |
run: | | |
rm -rf ${{runner.workspace}}/rpc-tests | |
git -c advice.detachedHead=false clone --depth 1 --branch v0.50.0 https://github.com/erigontech/rpc-tests ${{runner.workspace}}/rpc-tests | |
cd ${{runner.workspace}}/rpc-tests | |
pip3 install -r requirements.txt | |
- name: Clean Build Directory | |
run: rm -rf ${{runner.workspace}}/silkworm/build | |
- name: Create Build Environment | |
run: cmake -E make_directory ${{runner.workspace}}/silkworm/build | |
- name: Configure CMake | |
working-directory: ${{runner.workspace}}/silkworm/build | |
run: | | |
cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=Release | |
- name: Build Silkworm RpcDaemon | |
working-directory: ${{runner.workspace}}/silkworm/build | |
run: cmake --build . --config Release --target rpcdaemon -j 8 | |
- name: Pause the Erigon instance dedicated to db maintenance | |
run: | | |
python3 $ERIGON_QA_PATH/test_system/db-producer/pause_production.py || true | |
- name: Start Silkworm RpcDaemon | |
working-directory: ${{runner.workspace}}/silkworm/build/cmd | |
run: | | |
echo "Silkworm RpcDaemon starting..." | |
./rpcdaemon --datadir $ERIGON_DATA_DIR --api admin,debug,eth,parity,erigon,trace,web3,txpool,ots,net --log.verbosity 1 --erigon_compatibility --jwt ./jwt.hex --skip_protocol_check --ws & | |
RPC_DAEMON_PID=$! | |
echo "RPC_DAEMON_PID=$RPC_DAEMON_PID" >> $GITHUB_ENV | |
echo "Silkworm RpcDaemon started" | |
- name: Run RPC Integration Tests | |
id: test_step | |
run: | | |
set +e # Disable exit on error | |
cd ${{runner.workspace}}/rpc-tests/integration | |
rm -rf ./mainnet/results/ | |
# Run RPC integration test runner via http | |
python3 ./run_tests.py --continue --blockchain mainnet --jwt ${{runner.workspace}}/silkworm/build/cmd/jwt.hex --display-only-fail --port 8545 -x admin_,eth_mining,eth_getWork,eth_coinbase,eth_createAccessList/test_16.json,engine_,net_,web3_,txpool_,eth_submitWork,eth_submitHashrate,eth_protocolVersion,erigon_nodeInfo,trace_rawTransaction/test_02.json --transport_type http,websocket | |
# Capture test runner script exit status | |
test_exit_status=$? | |
# Check test runner exit status | |
if [ $test_exit_status -eq 0 ]; then | |
echo "tests completed successfully" | |
echo | |
echo "TEST_RESULT=success" >> "$GITHUB_OUTPUT" | |
else | |
echo "error detected during tests" | |
echo "TEST_RESULT=failure" >> "$GITHUB_OUTPUT" | |
# Save failed results to a directory with timestamp and commit hash | |
cp -r ${{runner.workspace}}/rpc-tests/integration/mainnet/results/ $RPC_PAST_TEST_DIR/mainnet_$(date +%Y%m%d_%H%M%S)_integration_$(git -C ${{runner.workspace}}/silkworm rev-parse --short HEAD)_http/ | |
fi | |
- name: Stop Silkworm RpcDaemon | |
working-directory: ${{runner.workspace}}/silkworm/build/cmd | |
run: | | |
# Clean up rpcdaemon process if it's still running | |
if kill -0 $RPC_DAEMON_PID 2> /dev/null; then | |
echo "Silkworm RpcDaemon stopping..." | |
kill $RPC_DAEMON_PID | |
echo "Silkworm RpcDaemon stopped" | |
else | |
echo "Silkworm RpcDaemon has already terminated" | |
fi | |
- name: Resume the Erigon instance dedicated to db maintenance | |
run: | | |
python3 $ERIGON_QA_PATH/test_system/db-producer/resume_production.py || true | |
- name: Upload test results | |
if: steps.test_step.outputs.TEST_RESULT != 'success' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: test-results | |
path: ${{runner.workspace}}/rpc-tests/integration/mainnet/results/ | |
- name: Action for Success | |
if: steps.test_step.outputs.TEST_RESULT == 'success' | |
run: echo "::notice::Tests completed successfully" | |
- name: Action for Failure | |
if: steps.test_step.outputs.TEST_RESULT != 'success' | |
run: | | |
echo "::error::Error detected during tests" | |
exit 1 | |