Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Senior QA Engineer Task

Download as pdf or txt
Download as pdf or txt
You are on page 1of 2

Nethermind Senior QA Engineer JsonRPC API Task

Your task is to create a test suite for the JSON-RPC API of the Nethermind Ethereum client. After completing the task, establish a private
GitHub repository and invite the following members:

kamil@nethermind.io
wojciech.zieba@nethermind.io
daniel@nethermind.io

To complete the task, follow these steps:

1. Establish a private GitHub repository for this task.


2. Invite the specified members to the repository as collaborators upon completion.
3. Create a GitHub Action running on the ubuntu-latest machine. Install Sedge on the agent using the following commands:

echo "Downloading sedge sources..."


git clone https://github.com/NethermindEth/sedge.git src --branch main --single-branch
echo "Sources downloaded."
cd src
echo "Building sedge..."
make compile

Note that go must be installed on the machine prior to running the above commands.
Consult the Sedge documentation: https://docs.sedge.nethermind.io/ for more information.

4. Run Sedge tool using the provided commands to generate the necessary environment for testing.

echo 'Running sedge...'


./sedge deps install >> $HOME/sedge.logs
./sedge generate --logging none -p $HOME /
full-node --map-all --no-mev-boost --no-validator --network chiado /
-c lighthouse:sigp/lighthouse:latest -e nethermind:nethermindeth/nethermind:master /
--el-extra-flag Sync.NonValidatorNode=true --el-extra-flag Sync.DownloadBodiesInFastSync=false /
--el-extra-flag Sync.DownloadReceiptsInFastSync=false /
--cl-extra-flag checkpoint-sync-url=http://139.144.26.89:4000/ >> $HOME/sedge.logs
./sedge run -p . >> $HOME/sedge.logs

5. Ensure client synchronization completed by creating a JSON-RPC call within the GitHub action that verifies the eth_syncing call
returns “false”. (https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/eth#eth_syncing).

6. Develop a test suite that includes the following tests:

Test 1: JSON-RPC verification

Retrieve the chain head from a synced node using the eth_blockNumber API call.
(https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/eth#eth_blocknumber).
Obtain block details using the eth_getBlockByNumber endpoint.(https://docs.nethermind.io/nethermind/ethereum-client/json-
rpc/eth#eth_getblockbynumber).
Ensure the response is not empty, contains block data, and is free of error information.
Prepare additional relevant scenarios.

Test 2: JSON-RPC Benchmark

Execute the getBlockByNumber endpoint for a selected block head (always using the same block number consistently).
Assess endpoint behavior when executed 1,000 and 10,000 times with different levels of parallelism, simulating high load by
multiple users on public JSON-RPC API.
Prepare a report based on the results.
Test 3: Test Suite Extension for Selected Endpoint

For any chosen JSON-RPC endpoint from the Nethermind documentation, prepare additional scenarios (both verification and
performance tests). https://docs.nethermind.io/nethermind/ethereum-client/json-rpc

During the preparation of the solution, ensure readability, reusability, and performance. If possible, make it easy to switch between
verification and performance scenarios.

You can use any programming language and tools. Ensure that each scenario can be executed by GitHub Action(s).

Also please create a Readme.md file in Your solution where you can put any important informations about implementation details,
possible improvements which can be applied but will require more time and any testing reports (you can include performance report in
there also).

You might also like