mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-10 22:13:47 +00:00
new: dev: pos-398 instructions for retesteth bor
This commit is contained in:
parent
9e7f70822f
commit
ea0f553d24
1 changed files with 101 additions and 0 deletions
101
RETESTBOR.md
Normal file
101
RETESTBOR.md
Normal file
|
|
@ -0,0 +1,101 @@
|
||||||
|
|
||||||
|
# Config to run Retesteth using docker
|
||||||
|
|
||||||
|
- git submodule add --depth 1 https://github.com/ethereum/tests.git tests/testdata
|
||||||
|
- download docker image from http://retesteth.ethdevops.io/
|
||||||
|
- load the docker image with `sudo docker load -i dretest*.tar`
|
||||||
|
- Download the `dretesteth.sh` script with
|
||||||
|
```
|
||||||
|
wget https://raw.githubusercontent.com/ethereum/retesteth/master/dretesteth.sh
|
||||||
|
chmod +x dretesteth.sh
|
||||||
|
```
|
||||||
|
- Run a test with the following command. It will create the retesteth configuration directories in `~/tests/config`, and run a sanity check
|
||||||
|
```
|
||||||
|
sudo ./dretesteth.sh -t GeneralStateTests/stExample -- \
|
||||||
|
--testpath ~/tests --datadir /tests/config
|
||||||
|
```
|
||||||
|
- The output should be similar to
|
||||||
|
```
|
||||||
|
Running 1 test case...
|
||||||
|
Running tests using path: /tests
|
||||||
|
Active client configurations: 't8ntool '
|
||||||
|
Running tests for config 'Ethereum GO on StateTool'
|
||||||
|
Test Case "stExample":
|
||||||
|
100%
|
||||||
|
*** No errors detected
|
||||||
|
*** Total Tests Run: 1
|
||||||
|
```
|
||||||
|
|
||||||
|
# Testing against bor
|
||||||
|
|
||||||
|
- Change configs by replacing geth with bor inside the docker container
|
||||||
|
```
|
||||||
|
mkdir ~/retestethBuild
|
||||||
|
cd ~/retestethBuild
|
||||||
|
wget https://raw.githubusercontent.com/ethereum/retesteth/develop/dretesteth.sh
|
||||||
|
chmod +x dretesteth.sh
|
||||||
|
wget https://raw.githubusercontent.com/ethereum/retesteth/develop/Dockerfile
|
||||||
|
```
|
||||||
|
Modify the RUN git clone line in the Dockerfile for repo “retesteth” to change branch -b from master to develop. Do not modify repo branches for “winsvega/solidity” [LLLC opcode support] and “go-ethereum”.
|
||||||
|
Modify the Dockerfile so that the eth client points to bor
|
||||||
|
e.g. : `https://github.com/ethereum/retesteth/blob/master/Dockerfile#L41`
|
||||||
|
from `RUN git clone --depth 1 -b master https://github.com/ethereum/go-ethereum.git /geth`
|
||||||
|
to: `RUN git clone --depth 1 -b master https://github.com/maticnetwork/bor.git /geth`
|
||||||
|
|
||||||
|
- build docker image
|
||||||
|
`sudo ./dretesteth.sh build`
|
||||||
|
|
||||||
|
- clone repo
|
||||||
|
```
|
||||||
|
git clone --branch develop https://github.com/ethereum/tests.git
|
||||||
|
```
|
||||||
|
this step will be eventually replaced by adding the git submodule directly into bor repo with
|
||||||
|
```
|
||||||
|
git submodule add --depth 1 https://github.com/ethereum/tests.git tests/testdata
|
||||||
|
```
|
||||||
|
- Let's move to the restestethBuild folder
|
||||||
|
```
|
||||||
|
cd /home/ubuntu/retestethBuild
|
||||||
|
```
|
||||||
|
Now we have the tests repo here
|
||||||
|
```
|
||||||
|
ls
|
||||||
|
> Dockerfile dretesteth.sh tests
|
||||||
|
```
|
||||||
|
- Run test example
|
||||||
|
```
|
||||||
|
./dretesteth.sh -t GeneralStateTests/stExample -- --testpath /home/ubuntu/retestethBuild/tests --datadir /tests/config
|
||||||
|
```
|
||||||
|
This will create the config files for the different clients in ~/tests/config
|
||||||
|
Eventually. these config needs to be adapted according to the following doc
|
||||||
|
https://ethereum-tests.readthedocs.io/en/latest/retesteth-tutorial.html
|
||||||
|
Specifically:
|
||||||
|
```
|
||||||
|
f you look inside ~/tests/config, you’ll see a directory for each configured client. Typically this directory has these files:
|
||||||
|
|
||||||
|
config, which contains the configuration for the client:
|
||||||
|
The communication protocol to use with the client (typically TCP)
|
||||||
|
The address(es) to use with that protocol
|
||||||
|
The forks the client supports
|
||||||
|
The exceptions the client can throw, and how retesteth should interpret them. This is particularly important when testing the client’s behavior when given invalid blocks.
|
||||||
|
start.sh, which starts the client inside the docker image
|
||||||
|
stop.sh, which stops the client instance(s)
|
||||||
|
genesis, a directory which includes the genesis blocks for various forks the client supports. If this directory does not exist for a client, it uses the genesis blocks for the default client.
|
||||||
|
```
|
||||||
|
|
||||||
|
We replaced geth inside docker by using https://ethereum-tests.readthedocs.io/en/latest/retesteth-tutorial.html#replace-geth-inside-the-docker
|
||||||
|
Theoretically, we would not need any additional config change
|
||||||
|
|
||||||
|
- Run test suites
|
||||||
|
```
|
||||||
|
./dretesteth.sh -t <TestSuiteName> -- --testpath /home/ubuntu/retestethBuild/tests --datadir /tests/config
|
||||||
|
```
|
||||||
|
Where `TestSuiteName` is one of the maintained test suites, reported here https://github.com/ethereum/tests
|
||||||
|
```
|
||||||
|
BasicTests
|
||||||
|
BlockchainTests
|
||||||
|
GeneralStateTests
|
||||||
|
TransactionTests
|
||||||
|
RLPTest
|
||||||
|
src
|
||||||
|
```
|
||||||
Loading…
Reference in a new issue