Roy Crihfield
b8fec4b571
Adds a method to perform full-state snapshots by diffing against an empty state trie. This replicates the functionality of `ipld-eth-state-snapshot`, so that code can use this as a library; see: cerc-io/ipld-eth-state-snapshot#1 Note that due to how incremental diffs are processed (updates are processed after the trie has been traversed) the iterator state doesn't fully capture the progress of the diff, so it's not currently feasible to state diffs this way. Full snapshots don't have to worry about updated accounts, so we can support them. Co-authored-by: Thomas E Lackey <telackey@bozemanpass.com> Reviewed-on: #15
136 lines
4.4 KiB
YAML
136 lines
4.4 KiB
YAML
name: Test
|
|
|
|
on:
|
|
pull_request:
|
|
branches: '*'
|
|
push:
|
|
branches:
|
|
- main
|
|
- ci-test
|
|
|
|
# Needed until we can incorporate docker startup into the executor container
|
|
env:
|
|
DOCKER_HOST: unix:///var/run/dind.sock
|
|
SO_VERSION: v1.1.0-c30c779-202309082138
|
|
|
|
jobs:
|
|
unit-tests:
|
|
name: Run unit tests
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: actions/setup-go@v4
|
|
with:
|
|
go-version-file: 'go.mod'
|
|
check-latest: true
|
|
- name: Run dockerd
|
|
run: |
|
|
dockerd -H $DOCKER_HOST --userland-proxy=false &
|
|
sleep 5
|
|
- name: Run DB container
|
|
run: |
|
|
docker compose -f test/compose.yml up --wait
|
|
- name: Set up Gitea access token
|
|
env:
|
|
TOKEN: ${{ secrets.CICD_REPO_TOKEN }}
|
|
run: |
|
|
git config --global url."https://$TOKEN:@git.vdb.to/".insteadOf https://git.vdb.to/
|
|
- name: Run tests
|
|
run: go test -p 1 -v ./...
|
|
|
|
integration-tests:
|
|
name: Run integration tests
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
path: ./plugeth-statediff
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
repository: cerc-io/plugeth
|
|
ref: statediff
|
|
path: ./plugeth
|
|
- name: Run dockerd
|
|
run: dockerd -H $DOCKER_HOST --userland-proxy=false &
|
|
# These images need access tokens configured
|
|
- name: Build docker image
|
|
env:
|
|
TOKEN: ${{ secrets.CICD_REPO_TOKEN }}
|
|
run: |
|
|
[[ -n "$TOKEN" ]]
|
|
docker build ./plugeth-statediff -t cerc/plugeth-statediff:local \
|
|
--build-arg GIT_VDBTO_TOKEN="$TOKEN"
|
|
docker build ./plugeth -t cerc/plugeth:local \
|
|
--build-arg GIT_VDBTO_TOKEN="$TOKEN"
|
|
|
|
- name: Install stack-orchestrator
|
|
run: |
|
|
curl -L -O https://github.com/cerc-io/stack-orchestrator/releases/download/$SO_VERSION/laconic-so
|
|
chmod +x laconic-so
|
|
- name: Clone system-tests
|
|
uses: actions/checkout@v3
|
|
with:
|
|
repository: cerc-io/system-tests
|
|
ref: plugeth-compat
|
|
path: ./system-tests
|
|
token: ${{ secrets.CICD_REPO_TOKEN }}
|
|
- name: Run testnet stack
|
|
working-directory: ./plugeth-statediff
|
|
env:
|
|
LACONIC_SO: ../laconic-so
|
|
run: ./scripts/integration-setup.sh
|
|
- name: Install Python
|
|
uses: actions/setup-python@v4
|
|
with:
|
|
python-version: 3.10
|
|
- name: Run tests
|
|
working-directory: ./system-tests
|
|
run: |
|
|
pip install pytest
|
|
pip install -r requirements.txt
|
|
pytest -v -k test_basic_db
|
|
|
|
compliance-test:
|
|
name: Run compliance tests
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
path: ./plugeth-statediff
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
repository: cerc-io/eth-statediff-compliance
|
|
ref: v0.1.0
|
|
path: ./eth-statediff-compliance
|
|
token: ${{ secrets.CICD_REPO_TOKEN }}
|
|
- uses: actions/setup-go@v4
|
|
with:
|
|
go-version-file: './eth-statediff-compliance/go.mod'
|
|
check-latest: true
|
|
- name: Install jq
|
|
run: apt-get update && apt-get install -yq jq
|
|
- name: Set up Gitea access token
|
|
env:
|
|
TOKEN: ${{ secrets.CICD_REPO_TOKEN }}
|
|
run: |
|
|
git config --global url."https://$TOKEN:@git.vdb.to/".insteadOf https://git.vdb.to/
|
|
|
|
- name: Update go.mod for dumpdiff-geth
|
|
working-directory: ./eth-statediff-compliance/
|
|
run: ./scripts/update-mod.sh ../plugeth-statediff dumpdiff-geth/
|
|
- name: Update go.mod for dumpdiff-plugeth
|
|
working-directory: ./eth-statediff-compliance/
|
|
run: ./scripts/update-mod.sh ../plugeth-statediff dumpdiff-plugeth/
|
|
- name: Update go.mod for dumpdiff-plugeth-parallel
|
|
working-directory: ./eth-statediff-compliance/
|
|
run: ./scripts/update-mod.sh ../plugeth-statediff dumpdiff-plugeth-parallel/
|
|
- name: Build tools
|
|
working-directory: ./eth-statediff-compliance/
|
|
run: make all
|
|
- name: Compare output of geth and plugeth
|
|
working-directory: ./eth-statediff-compliance/
|
|
run: ./scripts/compare-diffs.sh geth plugeth
|
|
- name: Compare output of geth and plugeth-parallel
|
|
working-directory: ./eth-statediff-compliance/
|
|
run: ./scripts/compare-diffs.sh geth plugeth-parallel
|