From cbc691632a2087a4c13fcbc205cca9d11f9a8fd7 Mon Sep 17 00:00:00 2001 From: Roy Crihfield Date: Tue, 2 Jul 2024 21:49:00 +0800 Subject: [PATCH] update test workflow, fixtures --- .gitea/workflows/test.yml | 70 ++++++++++++++++++++++++------------ pkg/snapshot/service_test.go | 6 ++-- test/ci-config.toml | 2 +- test/fixture_chain_A.go | 6 ++-- test/fixture_chain_B.go | 4 +-- 5 files changed, 57 insertions(+), 31 deletions(-) diff --git a/.gitea/workflows/test.yml b/.gitea/workflows/test.yml index 00d4797..e40a1ea 100644 --- a/.gitea/workflows/test.yml +++ b/.gitea/workflows/test.yml @@ -9,13 +9,22 @@ on: env: CANONICAL_VERSION: v5.0.4-alpha + ETH_TESTING_REF: v0.5.1 jobs: - tests: - name: Run unit and integration tests + build: + name: Build Docker image runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 + - name: Build docker image + run: docker build . + + unit-test: + name: Run unit tests + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 - uses: actions/setup-go@v3 with: go-version-file: go.mod @@ -25,15 +34,27 @@ jobs: with: repository: cerc-io/eth-testing path: ./fixtures - ref: v0.4.0 - - name: Build package - run: go build . + ref: ${{ env.ETH_TESTING_REF }} - name: Run unit tests run: make test - # TODO test image - - name: Build docker image - run: docker build . -t cerc/ipld-eths-state-snapshot:local + integration-test: + name: Run integration tests + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-go@v3 + with: + go-version-file: go.mod + check-latest: true + - name: Install test fixtures + uses: actions/checkout@v3 + with: + repository: cerc-io/eth-testing + path: ./fixtures + ref: ${{ env.ETH_TESTING_REF }} + - name: Build package + run: go build . - name: Run DB container run: docker compose -f test/compose.yml up --wait @@ -42,17 +63,19 @@ jobs: - name: Run basic integration test env: SNAPSHOT_MODE: postgres - SNAPSHOT_BLOCK_HEIGHT: 32 - ETHDB_PATH: ./fixtures/chaindata/_data/small - ETHDB_ANCIENT: ./fixtures/chaindata/_data/small/ancient - ETH_GENESIS_BLOCK: "0x37cbb63c7150a7b60f2878433963ed8ba7e5f82fb2683ec7a945c974e1cf4e05" + ETHDB_PATH: ./fixtures/chains/data/postmerge1/geth/chaindata + ETH_GENESIS_BLOCK: 0x66ef6002e201cfdb23bd3f615fcf41e59d8382055e5a836f8d4c2af0d484647c + SNAPSHOT_BLOCK_HEIGHT: 170 run: | until ready_query='select max(version_id) from goose_db_version;' version=$(docker exec -e PGPASSWORD=password test-ipld-eth-db-1 \ psql -tA cerc_testing -U vdbm -c "$ready_query") - [[ "$version" -ge 20 ]] - do sleep 1; done + [[ "$version" -ge 21 ]] + do + echo "Waiting for ipld-eth-db..." + sleep 3 + done ./ipld-eth-state-snapshot --config test/ci-config.toml stateSnapshot @@ -63,11 +86,14 @@ jobs: } set -x [[ "$(count_results eth.header_cids)" = 1 ]] - [[ "$(count_results eth.state_cids)" = 5 ]] - [[ "$(count_results eth.storage_cids)" = 13 ]] + [[ "$(count_results eth.state_cids)" = 264 ]] + [[ "$(count_results eth.storage_cids)" = 371 ]] compliance-test: - name: Run compliance tests + name: Run compliance tests (disabled) + # Schema has been updated, so compliance tests are disabled until we have a meaningful way to + # compare to previous results. + if: false runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -82,7 +108,7 @@ jobs: with: repository: cerc-io/eth-testing path: ./fixtures - ref: v0.4.0 + ref: ${{ env.ETH_TESTING_REF }} - name: Build current version working-directory: ./ipld-eth-state-snapshot run: go build -o ../snapshot-current . @@ -102,15 +128,15 @@ jobs: - name: Compare snapshot output env: SNAPSHOT_BLOCK_HEIGHT: 200 - ETHDB_PATH: ./fixtures/chaindata/_data/small2 - ETHDB_ANCIENT: ./fixtures/chaindata/_data/small2/ancient + ETHDB_PATH: ./fixtures/chains/data/premerge2/geth/chaindata + ETHDB_ANCIENT: ./fixtures/chains/data/premerge2/geth/chaindata/ancient ETH_GENESIS_BLOCK: "0x8a3c7cddacbd1ab4ec1b03805fa2a287f3a75e43d87f4f987fcc399f5c042614" run: | until ready_query='select max(version_id) from goose_db_version;' version=$(docker exec -e PGPASSWORD=password test-ipld-eth-db-1 \ psql -tA cerc_testing -U vdbm -c "$ready_query") - [[ "$version" -ge 18 ]] + [[ "$version" -ge 21 ]] do sleep 1; done ./ipld-eth-state-snapshot/scripts/compare-snapshots.sh \ diff --git a/pkg/snapshot/service_test.go b/pkg/snapshot/service_test.go index ac6566c..a27211f 100644 --- a/pkg/snapshot/service_test.go +++ b/pkg/snapshot/service_test.go @@ -7,7 +7,7 @@ import ( "testing" "time" - "github.com/cerc-io/eth-testing/chaindata" + "github.com/cerc-io/eth-testing/chains" "github.com/cerc-io/plugeth-statediff/indexer/models" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/crypto" @@ -205,7 +205,7 @@ func (expected selectiveData) verify(t *testing.T, data mocks.IndexerData) { } } -func doSnapshot(t *testing.T, chain *chaindata.Paths, params SnapshotParams) mocks.IndexerData { +func doSnapshot(t *testing.T, chain *chains.Paths, params SnapshotParams) mocks.IndexerData { chainDataPath, ancientDataPath := chain.ChainData, chain.Ancient config := testConfig(chainDataPath, ancientDataPath) edb, err := NewEthDB(config.Eth) @@ -224,7 +224,7 @@ func doSnapshot(t *testing.T, chain *chaindata.Paths, params SnapshotParams) moc func doSnapshotWithRecovery( t *testing.T, - chain *chaindata.Paths, + chain *chains.Paths, params SnapshotParams, failAfter uint, ) mocks.IndexerData { diff --git a/test/ci-config.toml b/test/ci-config.toml index d4cf968..7a54391 100644 --- a/test/ci-config.toml +++ b/test/ci-config.toml @@ -20,4 +20,4 @@ nodeID = "test-node" networkID = "test-network" chainID = 1 - genesisBlock = "0x37cbb63c7150a7b60f2878433963ed8ba7e5f82fb2683ec7a945c974e1cf4e05" + genesisBlock = "" diff --git a/test/fixture_chain_A.go b/test/fixture_chain_A.go index e15c1c6..56aa75a 100644 --- a/test/fixture_chain_A.go +++ b/test/fixture_chain_A.go @@ -3,12 +3,12 @@ package test import ( "sort" - "github.com/cerc-io/eth-testing/chaindata/small2" + "github.com/cerc-io/eth-testing/chains/premerge2" "github.com/ethereum/go-ethereum/common" ) func init() { - for _, path := range small2.Block1_StateNodeLeafKeys { + for _, path := range premerge2.Block1_StateNodeLeafKeys { hex := common.BytesToHash(path).String() ChainA_Block1_StateNodeLeafKeys = append(ChainA_Block1_StateNodeLeafKeys, hex) } @@ -19,7 +19,7 @@ func init() { } var ( - ChainA = small2.ChainData + ChainA = premerge2.ChainData ChainA_Block1_StateNodeLeafKeys []string // ChainA_Block1_StateNodeLeafKeys = small2.Block1_StateNodeLeafKeys diff --git a/test/fixture_chain_B.go b/test/fixture_chain_B.go index f576a07..1d8e2fc 100644 --- a/test/fixture_chain_B.go +++ b/test/fixture_chain_B.go @@ -3,7 +3,7 @@ package test import ( "math/big" - "github.com/cerc-io/eth-testing/chaindata/small" + "github.com/cerc-io/eth-testing/chains/premerge1" "github.com/cerc-io/plugeth-statediff/indexer/ipld" "github.com/cerc-io/plugeth-statediff/indexer/models" "github.com/ethereum/go-ethereum/common" @@ -12,7 +12,7 @@ import ( "github.com/ethereum/go-ethereum/rlp" ) -var ChainB = small.ChainData +var ChainB = premerge1.ChainData var ChainB_block1_Header = types.Header{ ParentHash: common.HexToHash("0x6341fd3daf94b748c72ced5a5b26028f2474f5f00d824504e4fa37a75767e177"),