From c6170f063c24c5777cea18ec3999a64004bb1e64 Mon Sep 17 00:00:00 2001 From: Roy Crihfield Date: Thu, 31 Aug 2023 00:04:11 +0800 Subject: [PATCH] CI tests --- .gitea/workflows/test.yml | 67 ++++++++++++++++++++++++++ .github/workflows/on-pr.yaml | 30 ------------ Makefile | 10 ---- fixture/.gitignore | 1 - fixture/chain2data/ancient/FLOCK | 0 fixture/chaindata/000004.log | 0 fixture/chaindata/ancient/FLOCK | 0 pkg/snapshot/config.go | 2 +- test/ci-config.toml | 25 ++++++++++ docker-compose.yml => test/compose.yml | 4 +- 10 files changed, 94 insertions(+), 45 deletions(-) create mode 100644 .gitea/workflows/test.yml delete mode 100644 .github/workflows/on-pr.yaml delete mode 100644 fixture/chain2data/ancient/FLOCK delete mode 100644 fixture/chaindata/000004.log delete mode 100644 fixture/chaindata/ancient/FLOCK create mode 100644 test/ci-config.toml rename docker-compose.yml => test/compose.yml (93%) diff --git a/.gitea/workflows/test.yml b/.gitea/workflows/test.yml new file mode 100644 index 0000000..1ecb6fb --- /dev/null +++ b/.gitea/workflows/test.yml @@ -0,0 +1,67 @@ +name: Test + +on: + pull_request: + branches: '*' + push: + branches: + - main + +# Needed until we can incorporate docker startup into the executor container +env: + DOCKER_HOST: unix:///var/run/dind.sock + +jobs: + tests: + name: Run unit and integration tests + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-go@v3 + with: + go-version-file: go.mod + check-latest: true + - name: Configure Gitea access + env: + TOKEN: ${{ secrets.CICD_REPO_TOKEN }} + run: | + git config --global url."https://$TOKEN:@git.vdb.to/".insteadOf "https://git.vdb.to/" + - name: Build package + run: go build . + - name: Run unit tests + run: make test + + - 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 + + # Run a sanity test against the fixture data + # Complete integration tests are TODO + - name: Run integration tests + env: + SNAPSHOT_MODE: postgres + SNAPSHOT_BLOCK_HEIGHT: 32 + LEVELDB_PATH: ./fixture/chain2data + LEVELDB_ANCIENT: ./fixture/chain2data/ancient + 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 ]] + do sleep 1; done + + ./ipld-eth-state-snapshot --config test/ci-config.toml stateSnapshot + + count_results() { + query="select count(*) from $1;" + docker exec -e PGPASSWORD=password test-ipld-eth-db-1 \ + psql -tA cerc_testing -U vdbm -c "$query" + } + set -x + [[ "$(count_results eth.header_cids)" = 1 ]] + [[ "$(count_results eth.state_cids)" = 5 ]] + [[ "$(count_results eth.storage_cids)" = 13 ]] diff --git a/.github/workflows/on-pr.yaml b/.github/workflows/on-pr.yaml deleted file mode 100644 index e8e7b76..0000000 --- a/.github/workflows/on-pr.yaml +++ /dev/null @@ -1,30 +0,0 @@ -name: Docker Build - -on: [pull_request] - -jobs: - test: - name: Run unit tests - runs-on: ubuntu-latest - env: - GOPATH: /tmp/go - GO111MODULE: on - steps: - - name: Create GOPATH - run: mkdir -p /tmp/go - - - uses: actions/setup-go@v3 - with: - go-version: ">=1.19.0" - check-latest: true - - - name: Checkout code - uses: actions/checkout@v2 - - - name: Run database - run: docker-compose up -d - - - name: Run unit tests - run: | - sleep 45 - make dbtest diff --git a/Makefile b/Makefile index 5e7710c..272e88f 100644 --- a/Makefile +++ b/Makefile @@ -9,15 +9,5 @@ $(MOCKS_DIR)/gen_indexer.go: --mock_names Indexer=MockgenIndexer \ github.com/cerc-io/plugeth-statediff/indexer Indexer -clean: - rm -f mocks/snapshot/publisher.go - -build: - go fmt ./... - go build - test: mocks go clean -testcache && go test -p 1 -v ./... - -dbtest: mocks - go clean -testcache && TEST_WITH_DB=true go test -p 1 -v ./... diff --git a/fixture/.gitignore b/fixture/.gitignore index 7c4ab7e..c95f9f9 100644 --- a/fixture/.gitignore +++ b/fixture/.gitignore @@ -4,4 +4,3 @@ */LOG */MANIFEST-* */ancient/FLOCK -*/ancient/*.meta diff --git a/fixture/chain2data/ancient/FLOCK b/fixture/chain2data/ancient/FLOCK deleted file mode 100644 index e69de29..0000000 diff --git a/fixture/chaindata/000004.log b/fixture/chaindata/000004.log deleted file mode 100644 index e69de29..0000000 diff --git a/fixture/chaindata/ancient/FLOCK b/fixture/chaindata/ancient/FLOCK deleted file mode 100644 index e69de29..0000000 diff --git a/pkg/snapshot/config.go b/pkg/snapshot/config.go index b553c83..044f907 100644 --- a/pkg/snapshot/config.go +++ b/pkg/snapshot/config.go @@ -142,7 +142,7 @@ func InitDB(c *DBConfig) { c.MaxConns = viper.GetInt(DATABASE_MAX_OPEN_CONNECTIONS_TOML) c.MaxConnLifetime = time.Duration(viper.GetInt(DATABASE_MAX_CONN_LIFETIME_TOML)) * time.Second - c.Driver = postgres.PGX + c.Driver = postgres.SQLX } func InitFile(c *FileConfig) error { diff --git a/test/ci-config.toml b/test/ci-config.toml new file mode 100644 index 0000000..47127c3 --- /dev/null +++ b/test/ci-config.toml @@ -0,0 +1,25 @@ +[database] + name = "cerc_testing" + hostname = "127.0.0.1" + port = 8077 + user = "vdbm" + password = "password" + +[log] + level = "debug" + +[snapshot] + mode = "postgres" + workers = 4 + blockHeight = 0 + recoveryFile = "snapshot_recovery_file" + +[file] + outputDir = "test-output" + +[ethereum] + clientName = "test-client" + nodeID = "test-node" + networkID = "test-network" + chainID = 1 + genesisBlock = "0x37cbb63c7150a7b60f2878433963ed8ba7e5f82fb2683ec7a945c974e1cf4e05" diff --git a/docker-compose.yml b/test/compose.yml similarity index 93% rename from docker-compose.yml rename to test/compose.yml index b0f113e..f0b0d84 100644 --- a/docker-compose.yml +++ b/test/compose.yml @@ -1,5 +1,3 @@ -version: '3.2' - services: migrations: restart: on-failure @@ -22,6 +20,6 @@ services: POSTGRES_DB: "cerc_testing" POSTGRES_PASSWORD: "password" ports: - - "127.0.0.1:8077:5432" + - 0.0.0.0:8077:5432 volumes: - /tmp:/tmp